嵌入式操作系统设计与实现
2008-5
电子工业出版社
蓝枫叶
535
无
本书是《自己动手写嵌入式操作系统》的全面升级版,作者对自己亲自在PC上开发的嵌入式操作系统的“Hello China”进行全面的升级和改进,书中详细地叙述自己动手写嵌入式操作系统所需的各方面知识,如加载和初始化、Shell、线程的实现、内存管理机制、互斥和同步机制及中断和定时机制的实现,以及设备驱动程序管理框架和应用编程接口等。 本书中的每一个字都是作者辛勤劳动的结晶,本书所讲到的嵌入式操作系统“Hello China”更是作者亲自实践的成果,因此本书具有极高的实用性,对于嵌入式软件开发工程师、应用软件开发工程师均有很高的参考价值,对于大中院校的学生学习和理解操作系统及计算机原理也会有许多启发,对于系统软件爱好者更是一本不可多得的好书,因为它会使您得到一个完整而细致的实践过程。
第1章 概述1.1 嵌入式系统概述1.2 嵌入式操作系统概述1.2.1 嵌入式操作系统的特点1.2.2 嵌入式操作系统与通用操作系统的区别1.2.3 嵌入式实时操作系统1.3 操作系统的基本概念1.3.1 微内核与大内核1.3.2 进程、线程与任务1.3.3 可抢占与不可抢占1.3.4 同步机制1.4 Hello China概述1.4.1 Hello China的功能特点1.4.2 Hello China的开发环境1.4.3 面向对象思想的模拟1.4.4 对象机制1.4.5 Hello China V1.0版本的源文件构成1.4.6 Hello China V1.5版本的源文件构成1.4.7 Hello China的使用1.5 实例:一个简单的IP路由器的实现1.5.1 概述1.5.2 路由器的硬件结构1.5.3 路由器的软件功能1.5.4 各任务的实现第2章 Hello China的加载和初始化2.1 常见嵌入式系统的启动2.1.1 典型嵌入式系统内存映射布局2.1.2 嵌入式系统的启动概述2.1.3 常见嵌入式操作系统的加载方式2.1.4 嵌入式系统软件的写入2.2 Hello China在PC上的启动2.2.1 PC启动过程概述2.2.2 Hello China的引导过程2.2.3 实地址模式下的初始化2.2.4 保护模式下的初始化2.2.5 操作系统核心功能的初始化第3章 Hello China的Shell3.1 Shell的启动和初始化3.2 Shell的消息处理过程3.3 内部命令的处理过程3.4 外部命令的处理过程第4章 Hello China的线程4.1 线程概述4.1.1 进程、线程和任务4.2 Hello China V1.0版本的线程实现4.2.1 核心线程管理对象4.2.2 线程的状态及其切换4.2.3 核心线程对象4.2.4 线程的上下文4.2.5 线程的优先级与调度4.2.6 线程的创建4.2.7 线程的结束4.2.8 线程的消息队列4.2.9 线程的切换——中断上下文4.2.10 线程的切换——系统调用上下文4.2.11 上下文保存和切换的底层函数4.2.12 线程的睡眠与唤醒4.3 V1.5版本中核心线程的实现4.3.1 概述4.3.2 核心线程调度时机4.4 V1.5 核心线程管理器(Kernel ThreadManager)的实现4.4.1 V1.5核心线程队列的实现4.5 V1.5核心线程对象(Kernel ThreadObject)的实现4.5.1 V1.5版本中硬件上下文的保存4.5.2 线程的调度——中断上下文4.5.3 线程的调度——程序上下文4.5.4 核心线程的创建和初始化4.5.5 中断处理程序结束后的线程调度第5章 Hello China的内存管理机制5.1 内存管理机制概述5.2 IA32 CPU内存管理机制5.2.1 IA32 CPU内存管理机制概述5.2.2 几个重要的概念5.2.3 分段机制的应用5.2.4 分页机制的应用5.3 Power PC CPU的内存管理机制5.4 Hello China内存管理模型5.4.1 Hello China的内存管理模型5.4.2 Hello China的内存布局5.4.3 核心内存池的管理5.4.4 页框管理对象(PageFrame Manager)5.4.5 页面索引对象(Pagelndex Manager)5.4.6 虚拟内存管理对象(Virtual MemoryManager)第6章 线程本地堆的实现6.1 Heap概述6.2 堆的功能需求定义6.3 堆的实现概要6.4 堆的详细实现6.4.1 堆的创建6.4.2 堆的销毀6.4.3 堆内存申请6.4.4 堆内存释放6.4.5 malloc函数和free函数的实现第7章 互斥和同步机制的实现7.1 互斥和同步概述7.2 关键区段概述7.3 关键区段产生的原因7.3.1 多个线程之间的竞争7.3.2 中断服务程序与线程之间的竞争7.3.3 多个CPU之间的竞争7.4 单CPU下关键区段的实现7.5 多CPU下关键区段的实现7.5.1 多CPU环境下的实现方式7.5.2 Hello China的未来实现7.6 Power PC下关键区段的实现7.6.1 Power PC提供的互斥访问机制7.6.2 多CPU环境下的互斥机制7.7 关键区段使用注意事项7.8 Semaphore概述7.9 Semaphore对象的定义7.10 Semaphore对象的实现7.10.1 Initialize和Uninitialize实现7.10.2 WaitForThisObject的实现7.10.3 WaitForThisObjectEx的实现7.10.4 ReleaseSemaphore的实现第8章 中断和定时处理机制的实现8.1 中断和异常概述8.2 硬件相关部分处理8.2.1 IA32中断处理过程8.2.2 IDT初始化8.3 硬件无关部分处理8.3.1 系统对象和中断对象8.3.2 中断调度过程8.3.3 默认中断处理函数8.4 对外服务接口8.5 几个注意事项8.6 Power PC的异常处理机制8.6.1 Power PC异常处理机制概述8.6.2 Power PC异常的分类8.6.3 异常的处理和返回8.7 定时器概述8.7.1 SetTimer函数的调用8.7.2 CancelTimer函数的调用8.7.3 ResetTimer函数的调用8.8 设置定时器操作8.9 定时器超时处理8.10 定时器取消处理8.11 定时器复位8.12 定时器注意事项第9章 系统总线管理9.1 系统总线概述9.1.1 系统总线9.1.2 总线管理模型9.1.3 设备标识符9.2 系统资源管理9.2.1 资源描述对象9.2.2 IO端口资源管理9.3 驱动程序接口9.3.1 GetResource9.3.2 GetDevice9.3.3 CheckPortRegion9.3.4 ReservePortRegion9.3.5 ReleasePortRegion9.3.6 AppendDevice9.3.7 DeleteDevice9.4 PCI总线驱动程序概述9.4.1 PCI总线概述9.4.2 PCI设备的配置空间9.4.3 配置空间关键字段的说明9.4.4 PCI配置空间的读取与设置9.5 PCI总线驱动程序的实现9.5.1 探测PCI总线是否存在9.5.2 对普通PCI设备进行枚举9.5.3 配置PCI桥接设备第10章 驱动程序管理框架10.1 设备驱动程序管理框架10.1.1 概述10.1.2 设备管理器和IO管理器10.1.3 Hello China的设备管理框架lO.1.4 I/O管理器(IOManager)10.2 文件系统的实现10.2.1 文件系统与文件的命名10.2.2 文件系统驱动程序10.2.3 打开一个文件的操作流程10.3 设备驱动程序框架10.3.1 设备请求控制块(DRCB)10.3.2 设备驱动程序的文件组织结构10.3.3 设备驱动程序的功能实现10.3.4 设备驱动程序对象10.3.5 DriverEntry的实现10.3.6 UnloadEntry的实现10.4 设备对象10.4.1 设备对象的定义10.4.2 设备对象的命名10.4.3 设备对象的类型10.4.4 设备对象的设备扩展10.4.5 设备的打开操作10.4.6 设备命名策略10.5 设备的中断管理第11章 核心线程CPU占用率统计功能11.1 CPU占用率概述11.2 核心线程CPU占用率统计的实现11.2.1 统计周期和统计算法11.2.2 核心线程统计对象11.2.3 CPU统计对象11.2.4 CPU占用率统计线程11.3 进程和多CPU情况下的考虑11.3.1 进程的用户态和核心态执行时间统计11.3.2 多CPU环境下的考虑第12章 系统核心HOOK机制的实现12.1 Hook概述12.2 线程Hook的实现12.2.1 线程Hook的实现概述12.2.2 线程调度前后的回调机制12.2.3 线程创建和结束的回调机制12.2.4 CallThreadHook例程的实现12.3 线程Hook的应用第13章 串口交互程序及其实现13.1 串行通信接口概述13.2 串行通信编程方式13.2.1 串口初始化13.2.2 数据发送13.2.3 数据接收13.3 串口交互程序的实现13.3.1 串口交互程序的使用13.3.2 轮询模式的串口交互程序实现13.3.3 中断模式的串口交互程序实现13.4 串行通信编程总结13.4.1 轮询方式和中断方式编程的对比13.4.2 串口交互程序的其他实现方式第14章 应用编程接口与示例14.1 核心线程操作接口14.1.1 CreateKernelThread14.1.2 DestroyKernelThread14.1.3 SendMessage14.1.4 GetMessage14.1.5 SetKemelThreadPriority14.1.6 GetKemelThreadPriority14.1.7 GetKemelThreadID14.2 内存操作接口14.2.1 KMemAlloc14.2.2 KMemFree14.2.3 VirtualAlloc14.2.4 VirtualFree14.2.5 malloc14.2.6 free14.2.7 CreateHeap14.2.8 DestroyHeap14.2.9 HeapAlloc14.2.10 HeapFree14.3 定时器操作接口14.3.1 SetTimet14.3.2 CancelTimer14.4 核心线程同步操作接口14.4.1 Sleep14.4.2 CreateMutex14.4.3 ReleaseMutex14.4.4 DestroyMutex14.4.5 CreateEvent14.4.6 SetEvent14.4.7 ResetEvent14.4.8 DestroyEvent14.4.9 WaitForThisObject14.4.10 WaitForThisObjectEx14.5 系统中断操作接口14.5.1 ConnectInterrupt14.5.2 DisconnectInterrupt14.6 输入/输出(IO)接口14.6.1 CreateFile14.6.2 ReadFile14.6.3 WriteFile14.6.4 IoControl14.6.5 SetFilePointer14.6.6 FlushFile14.6.7 CloseFile14.7 设备驱动程序接口14.7.1 CreateDevice14.7.2 DestroyDevice14.8 相关辅助功能接口14.8.1 StrLen14.8.2 StrCpy14.8.3 MemZero14.8.4 MemCpy14.9 PC服务接口14.9.1 PrintLine14.9.2 PrintChar14.9.3 ChangeLine14.9.4 GotoHome第15章 Hello China的应用开发方法15.1 Hello China的开发方法概述15.2 在Hello China基础上开发一个简单应用程序附录A 如何搭建一个基于Windows的操作系统开发平台附录B 一种代码执行时间测量方法的实现附录C 64bit整型数据类型的实现附录D IoCTRL控制程序使用介绍及实例附录E 如何快速掌握汇编语言附录F 源代码使用说明附录G 优先队列(Priority Queue)和环形缓冲区(RING BUFFER)的实现
全面解读,国内原创嵌入式操作系统,开发全过程。 嵌入式操作系统:设计与实现 本书是《自己动手写嵌入式操作系统》的全面升级版,作者对自己亲自在PC上开发嵌入式操作系统的“Hello China”进行全面的升级和改进,本书具有极高的实用性,对于嵌入式软件开发工程师、应用软件开发工程师均有很高的参考价值,对于大中院校的学生学习和理解操作系统及计算机原理也会有许多启发,对于系统软件爱好者更是一本不可多得的好书,因为它会使您得到一个完整而细致的实践过程。 一个简单的想法 操作系统真的如此难开发吗? 我国的通信产品的核心部件和核心技术真的只能依靠国外厂家提供吗? 一个曲折的过程 在紧张的工作之余进行开发,曾几度想放弃,一年多的开发过程,坚持,坚持,再坚持,终于在2006年年初,才把当初规划的所有功能开发完毕。 铸就本书 即以作者亲自在PC上开发嵌入式操作系统“Hello China”的全过程为主线,详细地叙述自己动手写嵌入式操作系统所需的各方面知识。
无