当前位置:首页 > 工业技术
嵌入式操作系统  设计与实现
嵌入式操作系统  设计与实现

嵌入式操作系统 设计与实现PDF电子书下载

工业技术

  • 电子书积分:16 积分如何计算积分?
  • 作 者:蓝枫叶编著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2008
  • ISBN:7121060760
  • 页数:535 页
图书介绍:本书是《自己动手写嵌入式操作系统》的全面升级版,作者对自己亲自在PC上开发嵌入式操作系统的“Hello China”进行的全面的升级和改进,书中详细地叙述自己动手写嵌入式操作系统所需的各方面知识,如加载和初始化、Shell、线程的实现、内存管理机制、互斥和同步机制及中断和定时机制的实现,以及设备驱动程序管理框架和应用编程接口等。本书中的每一个字都是作者辛勤劳动的结晶,本书所讲到的嵌入式操作系统“Hello China”更是作者亲自实践的成果,因此本书具有极高的实用性,对于嵌入式软件开发工程师、应用软件开发工程师均有很高的参考价值,对于大中院校的学生学习和理解操作系统及计算机原理也会有许多启发,对于系统软件爱好者更是一本不可多得的好书,因为它会使您得到一个完整而细致的实践过程。
《嵌入式操作系统 设计与实现》目录

第1章 概述 1

1.1 嵌入式系统概述 1

1.2 嵌入式操作系统概述 3

1.2.1 嵌入式操作系统的特点 3

1.2.2 嵌入式操作系统与通用操作系统的区别 4

1.2.3 嵌入式实时操作系统 6

1.3 操作系统的基本概念 6

1.3.1 微内核与大内核 7

1.3.2 进程、线程与任务 8

1.3.3 可抢占与不可抢占 9

1.3.4 同步机制 9

1.4 Hello China概述 10

1.4.1 Hello China的功能特点 11

1.4.2 Hello China的开发环境 12

1.4.3 面向对象思想的模拟 15

1.4.4 对象机制 17

1.4.5 Hello China V1.0版本的源文件构成 18

1.4.6 Hello China V1.5版本的源文件构成 20

1.4.7 Hello China的使用 21

1.5 实例:一个简单的IP路由器的实现 22

1.5.1 概述 22

1.5.2 路由器的硬件结构 22

1.5.3 路由器的软件功能 23

1.5.4 各任务的实现 25

第2章 Hello China的加载和初始化 28

2.1 常见嵌入式系统的启动 28

2.1.1 典型嵌入式系统内存映射布局 28

2.1.2 嵌入式系统的启动概述 29

2.1.3 常见嵌入式操作系统的加载方式 29

2.1.4 嵌入式系统软件的写入 34

2.2 Hello China在PC上的启动 36

2.2.1 PC启动过程概述 36

2.2.2 Hello China的引导过程 38

2.2.3 实地址模式下的初始化 42

2.2.4 保护模式下的初始化 46

2.2.5 操作系统核心功能的初始化 49

第3章 Hello China的Shell 57

3.1 Shell的启动和初始化 57

3.2 Shell的消息处理过程 58

3.3 内部命令的处理过程 62

3.4 外部命令的处理过程 64

第4章 Hello China的线程 68

4.1 线程概述 68

4.1.1 进程、线程和任务 68

4.2 Hello China V1.0版本的线程实现 69

4.2.1 核心线程管理对象 69

4.2.2 线程的状态及其切换 74

4.2.3 核心线程对象 76

4.2.4 线程的上下文 79

4.2.5 线程的优先级与调度 84

4.2.6 线程的创建 86

4.2.7 线程的结束 92

4.2.8 线程的消息队列 95

4.2.9 线程的切换——中断上下文 98

4.2.10 线程的切换——系统调用上下文 107

4.2.11 上下文保存和切换的底层函数 113

4.2.12 线程的睡眠与唤醒 116

4.3 V1.5版本中核心线程的实现 117

4.3.1 概述 117

4.3.2 核心线程调度时机 117

4.4 V1.5核心线程管理器(KernelThreadManager)的实现 118

4.4.1 V1.5核心线程队列的实现 121

4.5 V1.5核心线程对象(KernelThreadObject)的实现 123

4.5.1 V1.5版本中硬件上下文的保存 125

4.5.2 线程的调度——中断上下文 129

4.5.3 线程的调度——程序上下文 132

4.5.4 核心线程的创建和初始化 137

4.5.5 中断处理程序结束后的线程调度 143

第5章 Hello China的内存管理机制 146

5.1 内存管理机制概述 146

5.2 IA32 CPU内存管理机制 146

5.2.1 IA32 CPU内存管理机制概述 146

5.2.2 几个重要的概念 149

5.2.3 分段机制的应用 150

5.2.4 分页机制的应用 153

5.3 Power PC CPU的内存管理机制 162

5.4 Hello China内存管理模型 164

5.4.1 Hello China的内存管理模型 164

5.4.2 Hello China的内存布局 166

5.4.3 核心内存池的管理 168

5.4.4 页框管理对象(PageFrameManager) 171

5.4.5 页面索引对象(PageIndexManager) 176

5.4.6 虚拟内存管理对象(VirtualMemoryManager) 181

第6章 线程本地堆的实现 203

6.1 Heap概述 203

6.2 堆的功能需求定义 203

6.3 堆的实现概要 205

6.4 堆的详细实现 210

6.4.1 堆的创建 210

6.4.2 堆的销毁 214

6.4.3 堆内存申请 215

6.4.4 堆内存释放 220

6.4.5 malloc函数和free函数的实现 224

第7章 互斥和同步机制的实现 227

7.1 互斥和同步概述 227

7.2 关键区段概述 227

7.3 关键区段产生的原因 228

7.3.1 多个线程之间的竞争 228

7.3.2 中断服务程序与线程之间的竞争 229

7.3.3 多个CPU之间的竞争 229

7.4 单CPU下关键区段的实现 230

7.5 多CPU下关键区段的实现 233

7.5.1 多CPU环境下的实现方式 233

7.5.2 Hello China的未来实现 234

7.6 Power PC下关键区段的实现 235

7.6.1 Power PC提供的互斥访问机制 235

7.6.2 多CPU环境下的互斥机制 237

7.7 关键区段使用注意事项 238

7.8 Semaphore概述 238

7.9 Semaphore对象的定义 239

7.10 Semaphore对象的实现 240

7.10.1 Initialize和Uninitialize实现 240

7.10.2 WaitForThisObject的实现 242

7.10.3 WaitForThisObjectEx的实现 243

7.10.4 ReleaseSemaphore的实现 248

第8章 中断和定时处理机制的实现 250

8.1 中断和异常概述 250

8.2 硬件相关部分处理 251

8.2.1 IA32中断处理过程 251

8.2.2 IDT初始化 252

8.3 硬件无关部分处理 258

8.3.1 系统对象和中断对象 258

8.3.2 中断调度过程 260

8.3.3 默认中断处理函数 262

8.4 对外服务接口 263

8.5 几个注意事项 264

8.6 Power PC的异常处理机制 265

8.6.1 Power PC异常处理机制概述 265

8.6.2 Power PC异常的分类 266

8.6.3 异常的处理和返回 266

8.7 定时器概述 267

8.7.1 SetTimer函数的调用 267

8.7.2 CancelTimer函数的调用 269

8.7.3 ResetTimer函数的调用 269

8.8 设置定时器操作 269

8.9 定时器超时处理 271

8.10 定时器取消处理 274

8.11 定时器复位 276

8.12 定时器注意事项 276

第9章 系统总线管理 278

9.1 系统总线概述 278

9.1.1 系统总线 278

9.1.2 总线管理模型 278

9.1.3 设备标识符 283

9.2 系统资源管理 283

9.2.1 资源描述对象 284

9.2.2 IO端口资源管理 285

9.3 驱动程序接口 286

9.3.1 GetResource 286

9.3.2 GetDevice 286

9.3.3 CheckPortRegion 286

9.3.4 ReservePortRegion 287

9.3.5 ReleasePortRegion 287

9.3.6 AppendDevice 288

9.3.7 DeleteDevice 288

9.4 PCI总线驱动程序概述 288

9.4.1 PCI总线概述 288

9.4.2 PCI设备的配置空间 289

9.4.3 配置空间关键字段的说明 291

9.4.4 PCI配置空间的读取与设置 299

9.5 PCI总线驱动程序的实现 300

9.5.1 探测PCI总线是否存在 301

9.5.2 对普通PCI设备进行枚举 301

9.5.3 配置PCI桥接设备 309

第10章 驱动程序管理框架 311

10.1 设备驱动程序管理框架 311

10.1.1 概述 311

10.1.2 设备管理器和IO管理器 312

10.1.3 Hello China的设备管理框架 320

10.1.4 I/O管理器(IOManager) 322

10.2 文件系统的实现 342

10.2.1 文件系统与文件的命名 342

10.2.2 文件系统驱动程序 343

10.2.3 打开一个文件的操作流程 344

10.3 设备驱动程序框架 345

10.3.1 设备请求控制块(DRCB) 345

10.3.2 设备驱动程序的文件组织结构 349

10.3.3 设备驱动程序的功能实现 349

10.3.4 设备驱动程序对象 352

10.3.5 DriverEntry的实现 354

10.3.6 UnloadEntry的实现 355

10.4 设备对象 355

10.4.1 设备对象的定义 355

10.4.2 设备对象的命名 356

10.4.3 设备对象的类型 357

10.4.4 设备对象的设备扩展 358

10.4.5 设备的打开操作 359

10.4.6 设备命名策略 360

10.5 设备的中断管理 361

第11章 核心线程CPU占用率统计功能 363

11.1 CPU占用率概述 363

11.2 核心线程CPU占用率统计的实现 364

11.2.1 统计周期和统计算法 364

11.2.2 核心线程统计对象 365

11.2.3 CPU统计对象 372

11.2.4 CPU占用率统计线程 378

11.3 进程和多CPU情况下的考虑 381

11.3.1 进程的用户态和核心态执行时间统计 381

11.3.2 多CPU环境下的考虑 382

第12章 系统核心HOOK机制的实现 384

12.1 Hook概述 384

12.2 线程Hook的实现 385

12.2.1 线程Hook的实现概述 385

12.2.2 线程调度前后的回调机制 387

12.2.3 线程创建和结束的回调机制 393

12.2.4 CallThreadHook例程的实现 394

12.3 线程Hook的应用 396

第13章 串口交互程序及其实现 397

13.1 串行通信接口概述 397

13.2 串行通信编程方式 400

13.2.1 串口初始化 400

13.2.2 数据发送 401

13.2.3 数据接收 404

13.3 串口交互程序的实现 406

13.3.1 串口交互程序的使用 407

13.3.2 轮询模式的串口交互程序实现 410

13.3.3 中断模式的串口交互程序实现 419

13.4 串行通信编程总结 429

13.4.1 轮询方式和中断方式编程的对比 429

13.4.2 串口交互程序的其他实现方式 430

第14章 应用编程接口与示例 431

14.1 核心线程操作接口 431

14.1.1 CreateKernelThread 431

14.1.2 DestroyKernelThread 432

14.1.3 SendMessage 434

14.1.4 GetMessage 434

14.1.5 SetKernelThreadPriority 435

14.1.6 GetKernelThreadPriority 435

14.1.7 GetKernelThreadID 436

14.2 内存操作接口 436

14.2.1 KMemAlloc 436

14.2.2 KMemFree 437

14.2.3 VirtualAlloc 437

14.2.4 VirtualFree 438

14.2.5 malloc 438

14.2.6 free 439

14.2.7 CreateHeap 439

14.2.8 DestroyHeap 440

14.2.9 HeapAlloc 440

14.2.10 HeapFree 440

14.3 定时器操作接口 440

14.3.1 SetTimer 441

14.3.2 CancelTimer 441

14.4 核心线程同步操作接口 443

14.4.1 Sleep 443

14.4.2 CreateMutex 444

14.4.3 ReleaseMutex 444

14.4.4 DestroyMutex 444

14.4.5 CreateEvent 445

14.4.6 SetEvent 445

14.4.7 ResetEvent 445

14.4.8 DestroyEvent 446

14.4.9 WaitForThisObject 446

14.4.10 WaitForThisObjectEx 447

14.5 系统中断操作接口 449

14.5.1 ConnectInterrupt 449

14.5.2 DisconnectInterrupt 449

14.6 输入/输出(IO)接口 450

14.6.1 CreateFile 451

14.6.2 ReadFile 451

14.6.3 WriteFile 452

14.6.4 IoControl 452

14.6.5 SetFilePointer 453

14.6.6 FlushFile 453

14.6.7 CloseFile 454

14.7 设备驱动程序接口 455

14.7.1 CreateDevice 455

14.7.2 DestroyDevice 456

14.8 相关辅助功能接口 457

14.8.1 StrLen 457

14.8.2 StrCpy 458

14.8.3 MemZero 458

14.8.4 MemCpy 458

14.9 PC服务接口 459

14.9.1 PrintLine 459

14.9.2 PrintChar 459

14.9.3 ChangeLine 460

14.9.4 GotoHome 460

第15章 Hello China的应用开发方法 461

15.1 Hello China的开发方法概述 461

15.2 在Hello China基础上开发一个简单应用程序 461

附录A 如何搭建一个基于Windows的操作系统开发平台 467

附录B 一种代码执行时间测量方法的实现 488

附录C 64bit整型数据类型的实现 494

附录D IOCTRL控制程序使用介绍及实例 501

附录E 如何快速掌握汇编语言 510

附录F 源代码使用说明 515

附录G 优先队列(Priority Queue)和环形缓冲区(RING BUFFER)的实现 518

相关图书
作者其它书籍
返回顶部