深度探索嵌入式操作系统:从零开始设计、架构和开发

深度探索嵌入式操作系统:从零开始设计、架构和开发

查阅电子书
手机扫码
  • 微信扫一扫

    关注微信公众号

因版权原因待上架

编辑推荐

构建一个用于学习的嵌入式操作系统内核,并工作在真正的物理机上。

内容简介

本书大体上分为两部分:硬件部分和软件部分。硬件部分首先分析了我们选择的平台,以及这个平台上的组件。软件部分首先分析了操作系统内核是干什么的,其中都有些什么组件,这些个组件分别是干什么的有什么作用。然后是如何设计操作系统架构并将这些重要的组件组合在一起,以及设计时需要注意些什么。最后介绍了构建操作系统的工具。

作者简介

作者彭东。

章节目录

版权信息

前言

第1章 操作系统的功能及为什么需要它

1.1 从hello world开始

1.2 操作系统功能演进

1.3 小结

第2章 硬件平台

2.1 选择平台

2.1.1 mini2440

2.1.2 mini2440平台的信息

2.2 必须要关注的硬件

2.2.1 原因

2.2.2 RTC

2.2.3 定时器

2.2.4 串口

2.2.5 中断控制器

2.2.6 SDRAM

2.2.7 Norflash

2.2.8 Nandflash

2.3 小结

第3章 处理器

3.1 ARM公司与其处理器

3.2 ARM920T的结构与特性

3.2.1 ARM920T CPU结构

3.2.2 ARM920T CPU特性

3.3 ARM920T存储体系

3.3.1 ARM920T地址空间

3.3.2 ARM920T存储器格式

3.3.3 ARM920T存储地址对齐

3.4 ARM920T状态

3.4.1 ARM状态

3.4.2 Thumb状态

3.5 ARM920T处理器的7种工作模式

3.6 寄存器

3.7 异常和中断

3.7.1 什么是异常和中断

3.7.2 异常中断向量

3.8 ARM920T指令集

3.8.1 指令及其编码格式

3.8.2 分支跳转指令

3.8.3 数据处理指令

3.8.4 装载和存储指令

3.8.5 程序状态寄存器操作指令

3.8.6 协处理器操作指令

3.8.7 异常中断产生指令

3.9 MMU

3.9.1 MMU概述

3.9.2 为什么要有MMU

3.9.3 ARM920T CP15协处理器

3.9.4 MMU页表

3.9.5 MMU页面访问权限的控制

3.9.6 MMU的快表TLB

3.9.7 MMU的编程接口

3.10 Cache

3.10.1 ARM920T的Cache

3.10.2 Cache的原理

3.10.3 Cache的类型及要注意的问题

3.10.4 ARM920T Cache的编程接口

3.11 小结

第4章 操作系统内核的设计与构建

4.1 操作系统内核的设计

4.1.1 内核要完成的功能

4.1.2 内核的架构

4.1.3 分离硬件的相关性

4.1.4 我们的选择

4.2 开发环境及相关工具

4.2.1 Linux环境

4.2.2 文本编辑器

4.2.3 GCC

4.2.4 LD

4.2.5 make

4.3 LMOSEM的构建系统

4.3.1 LMOSEM的makefile

4.3.2 LMOSEM的链接脚本

4.4 开发板的安装

4.5 小结

第5章 语言间调用约定与基本数据结构

5.1 寄存器使用约定

5.1.1 寄存器别名

5.1.2 参数传递与返回值

5.2 基本数据结构

5.2.1 C语言的基本数据结构

5.2.2 list_h_t数据结构

5.2.3 spinlock_t数据结构

5.2.4 kwlst_t数据结构

5.2.5 sem_t数据结构

5.3 数据结构存在于内存中的形式

5.4 C与汇编的混用

5.5 小结

第6章 内核初始化

6.1 开始

6.1.1 第一行汇编代码

6.1.2 第一个C函数

6.2 MMU和中断向量的初始化

6.2.1 初始化MMU

6.2.2 复制中断向量

6.3 串口初始化

6.3.1 串口硬件

6.3.2 内核的printf

6.4 机器数据结构

6.4.1 设计数据结构

6.4.2 确定一些重要数据结构与内核的地址

6.5 初级内存管理初始化

6.5.1 设计一些数据结构

6.5.2 初始化mmapdsc_t结构数组

6.5.3 建立起内存分配数据结构

6.6 中断初始化

6.6.1 设计一些数据结构

6.6.2 初始中断源描述符

6.7 初始化测试

6.8 小结

第7章 内存管理

7.1 内核功能层入口

7.2 内存管理组件的设计

7.3 块级内存管理

7.3.1 块级内存管理数据结构视图

7.3.2 块级内存管理接口

7.3.3 主分配函数

7.3.4 分配时查找alcfrelst_t

7.3.5 分配时查找和操作mmapdsc_t

7.3.6 分配代码写得对吗

7.3.7 主释放函数

7.3.8 释放时查找alcfrelst_t

7.3.9 释放时查找和操作mmapdsc_t

7.3.10 测试块级内存管理层

7.4 页级内存管理

7.4.1 页级内存管理接口及调用流程

7.4.2 相关的数据结构

7.4.3 页级内存管理初始化

7.4.4 分配主函数

7.4.5 分配时查找mplhead_t

7.4.6 分配时新建页级内存池

7.4.7 分配时操作mplhead_t

7.4.8 分配代码写得对吗

7.4.9 释放主函数

7.4.10 释放时查找mplhead_t

7.4.11 释放时操作mplhead_t

7.4.12 释放时删除页级内存池

7.4.13 测试页级内存管理层

7.5 字级内存管理

7.5.1 字级内存接口及调用流程

7.5.2 相关的数据结构

7.5.3 分配主函数

7.5.4 分配时查找mplhead_t

7.5.5 分配时新建字级内存池

7.5.6 分配时操作mplhead_t

7.5.7 分配代码写得对吗

7.5.8 释放主函数

7.5.9 释放时查找mplhead_t

7.5.10 释放时操作mplhead_t

7.5.11 释放时删除字级内存池

7.5.12 测试字级内存管理层

7.6 小结

第8章 中断管理

8.1 中断与中断控制器

8.1.1 什么是中断

8.1.2 S3C2440A中断控制器

8.2 中断管理的架构与相关数据结构

8.2.1 中断管理的架构

8.2.2 设计数据结构intfltdsc_t和intserdsc_t

8.3 中断处理

8.3.1 中断辅助例程

8.3.2 从中断向量开始

8.3.3 保存CPU上下文

8.3.4 中断主分派例程

8.3.5 确定中断源

8.3.6 调用中断处理例程

8.4 安装中断回调例程

8.5 小结

第9章 驱动模型

9.1 操作系统内核如何管理设备

9.1.1 分权而治

9.1.2 设备类型

9.1.3 驱动程序

9.2 相关数据结构

9.2.1 驱动

9.2.2 派发例程类型

9.2.3 设备ID

9.2.4 设备

9.2.5 IO包

9.2.6 设备表

9.3 驱动模型的基础设施

9.3.1 驱动程序从哪里执行

9.3.2 新建与注册设备

9.3.3 注册回调函数

9.3.4 发送IO包

9.3.5 调用驱动程序函数

9.3.6 等待服务

9.3.7 完成服务

9.3.8 驱动模型辅助函数

9.4 systick驱动程序实例

9.4.1 systick硬件

9.4.2 systick驱动程序框架

9.4.3 systick驱动程序实现

9.4.4 测试systick驱动程序

9.5 RTC驱动程序实例

9.5.1 RTC硬件

9.5.2 RTC驱动程序实现

9.6 小结

第10章 进程

10.1 应用程序的运行

10.1.1 程序运行需要什么资源

10.1.2 任何时刻资源都可用吗

10.1.3 提出多道程序模型

10.2 相关的数据结构

10.2.1 设计进程的数据结构

10.2.2 调度进程表

10.3 LMOSEM内核的第一个进程

10.3.1 进程管理组件的初始化

10.3.2 建立空转进程

10.3.3 空转进程运行

10.4 新建进程

10.4.1 分配进程描述符

10.4.2 分配内存空间

10.4.3 加入进程调度表

10.5 进程调度

10.5.1 调度算法

10.5.2 处理进程时间片

10.5.3 检查调度状态

10.5.4 选择进程

10.5.5 进程切换

10.5.6 进程等待与唤醒

10.5.7 进程测试

10.6 小结

第11章 文件系统

11.1 文件系统设计

11.1.1 文件系统只是一个设备

11.1.2 数据格式与存储块

11.1.3 如何组织文件

11.1.4 关于我们文件系统的限制

11.2 相关的数据结构

11.2.1 超级块

11.2.2 位图

11.2.3 目录

11.2.4 文件管理头

11.3 文件系统格式化

11.3.1 建立超级块

11.3.2 建立位图

11.3.3 建立根目录

11.4 文件系统基础操作

11.4.1 获取与释放根目录文件

11.4.2 字符串操作

11.4.3 分解路径名

11.4.4 检查文件是否存在

11.5 文件操作

11.5.1 新建文件

11.5.2 删除文件

11.5.3 打开文件

11.5.4 读写文件

11.5.5 关闭文件

11.5.6 驱动整合

11.6 文件系统测试

11.6.1 格式化测试

11.6.2 文件操作测试

11.7 小结

第12章 系统调用与应用程序库

12.1 系统调用机制

12.1.1 软中断指令

12.1.2 传递系统调用参数

12.1.3 系统调用分发器

12.2 时间管理系统调用

12.3 进程管理系统调用

12.3.1 进程的运行与退出

12.3.2 获取进程的ID

12.4 内存管理系统调用

12.5 设备与文件系统调用

12.5.1 设备与文件的打开

12.5.2 设备与文件的关闭

12.5.3 设备与文件的读写

12.5.4 设备与文件的控制

12.6 应用程序库

12.7 测试

12.8 小结

后记

深度探索嵌入式操作系统:从零开始设计、架构和开发是2017年由机械工业出版社华章分社出版,作者彭东。

得书感谢您对《深度探索嵌入式操作系统:从零开始设计、架构和开发》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。

购买这本书

你可能喜欢
嵌入式操作系统.Linux篇:微课版 电子书
本书较为全面地介绍了嵌入式操作系统,全书共10章,分别为嵌入式Linux操作系统简介、嵌入式Linux操作系统的使用、Linux软件管理、Linux用户管理、Linux文件系统、Linux网络配置管理、嵌入式Linux编程环境、Shell编程环境、中断与设备管理、正则表达式,书中还提供了练习题和配套视频。本书可以作为高等院校嵌入式相关专业和计算机相关专业的教材,也可以作为计算机软硬件培训班教材,还
系统架构设计 电子书
适读人群:立志向系统架构师转型的广大开发人员本书包含作者基于自身在传统以及互联网行业多年的技术与管理工作经历展开论述,结合方法论和工程实践,具有较强的针对性和适用性,能帮助读者了解并掌握迈向架构师所需的各种知识体系和实践技巧。本书在介绍技术以及过程管理的内容时,采用“思路à方法论à工程实践”的三段式模型,不光告诉读者可以怎么做,更重要的是提供了对问题的分析以及解决思路和方法论,并辅以相应的工程实践和案例分析。本书从“向架构师转型”的角度出发,关注于转型这个特定主题给出了作者自身的一些思考和总结,从内容上填补了市场上的这一空白。
从零开始——PHP网页开发基础 电子书
本书侧重于PHP基础知识和应用方法的讲解,涵盖PHP基本语法、流程控制、PHP函数、PHP数组、PHP字符串、PHP正则表达式、日期与时间开发方法、错误日志处理等日常工作中必备的开发知识。
微服务设计原理与架构 电子书
本书共分为四大篇幅内容,包括:1.直面微服务篇,剖析微服务架构的基本特征、优势和劣势,并给出实施微服务架构的系统方法。2.服务建模篇,介绍服务建模的思路和方法,并从服务拆分和集成角度对服务模型进行重点展开。3.服务实现篇,介绍微服务架构涉及的基础组件、关键要素以及目前主流的技术实现体系。4.服务转型篇,包括对遗留系统进行微服务架构的改造方法以及对研发过程转型的讨论。
Linux嵌入式系统开发从小白到大牛 电子书
紧跟书中内容的安排顺序并结合具体案例进行学习,带你独立编写个人的嵌入式Linux系统。