互联网
类型
可以朗读
语音朗读
456千字
字数
2017-03-01
发行日期
展开全部
主编推荐语
构建一个用于学习的嵌入式操作系统内核,并工作在真正的物理机上。
内容简介
本书大体上分为两部分:硬件部分和软件部分。硬件部分首先分析了我们选择的平台,以及这个平台上的组件。软件部分首先分析了操作系统内核是干什么的,其中都有些什么组件,这些个组件分别是干什么的有什么作用。然后是如何设计操作系统架构并将这些重要的组件组合在一起,以及设计时需要注意些什么。最后介绍了构建操作系统的工具。
目录
- 版权信息
- 前言
- 第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 小结
- 后记
展开全部
出版方
机械工业出版社有限公司
机械工业出版社是全国优秀出版社,自1952年成立以来,坚持为科技、为教育服务,以向行业、向学校提供优质、权威的精神产品为宗旨,以“服务社会和人民群众需求,传播社会主义先进文化”为己任,产业结构不断完善,已由传统的图书出版向着图书、期刊、电子出版物、音像制品、电子商务一体化延伸,现已发展为多领域、多学科的大型综合性出版社,涉及机械、电工电子、汽车、计算机、经济管理、建筑、ELT、科普以及教材、教辅等领域。