注册 | 登录读书好,好读书,读好书!
读书网-DuShu.com
当前位置: 首页出版图书科学技术计算机/网络操作系统深度探索嵌入式操作系统:从零开始设计、架构和开发

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

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

定 价:¥99.00

作 者: 彭东
出版社: 机械工业出版社
丛编项:
标 签: 操作系统/系统开发 计算机/网络 系统开发

购买这本书可以去


ISBN: 9787111514879 出版时间: 2015-10-01 包装: 平装
开本: 16开 页数: 527 字数:  

内容简介

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

作者简介

  彭东,中国计算机领域的“鬼才”,自幼患病,从2008年开始直到现在,始终不间断地研究和自学计算机,精通各种编程语言,精通算法与数据结构,精通编译原理,精通操作系统理论并十分了解现有的Linux和Windows操作系统,还精通X86和ARM两大硬件平台体系结构。先后独自从零开始开发了LMOS、LMOSEM两大操作系统内核,现在的LMOS已经是多进程、多线程、多CPU、支持虚拟内存的x86_64体系下的全64位操作系统内核,代码量已经有10万多行了,而LMOSEM则是本书中所写的基于ARM平台的嵌入式操作系统。LMOS的早期版本曾在IT168等社区发布,引起了广泛讨论,获得了极高的评价。

图书目录

刖吾
第1章操作系统的功能及为什么
需要它 1
1.1从hello world开始 1
1.2操作系统功能演进 3
1.3小结 7
第2章硬件平台 8
2.1选择平台 8
2.1.1 mini2440 8
2.1.2 mini2440平台的信息 9
2.2必须要关注的硬件 13
2.2.1原因 14
2.2.2 RTC 15
2.2.3定时器 16
2.2.4串口 17
2.2.5中断控制器 18
2.2.6 SDRAM 19
2.2.7 NOmaSh 23
2.2.8 Nandflash 24
2.3小结 26
第3章处理器 28
3.1 ARM公司与其处理器 28
3.2 ARM920T的结构与特性 29
3.2.1 ARM920T CPU结构 29
3.2.2 ARM920TCPU特性 32
3.3 ARM920T存储体系 33
3.3.1 ARM920T地址空间 33
3.3.2 ARM920T存储器格式 34
3.3.3 ARM920T存储地址对齐 -35
3.4 ARM920T状态 35
3.4.1 ARM状态 36
3.4.2 Thumb状态 36
3.5ARM920T处理器的7种工作模式 37
3.6寄存器 38
3.7异常和中断 43
3.7.1什么是异常和中断 43
3.7.2异常中断向量 46
3.8ARM920T指令集 47
3.8.1 指令及其编码格式 48
3.8.2分支跳转指令 50
3.8.3数据处理指令 53
3.8.4装载和存储指令 63
3.8.5程序状态寄存器操作指令 73
3.8.6协处理器操作指令 76
3.8.7异常中断产生指令 79
3.9 MMU 80
3.9.1 MMU概述 80
? 3.9.2为什么要有MMU 82
3.9.3 ARM920T CP15协处理器85
3.9.4 MMU页表
3.9.5 MMU页面访问权限的控制 98
3.9.6 MMU的快表TLB 113
3.9.7 MMU的编程接口 114
3.10 Cache115
3.10.1 ARM920T的Cache 115
3.10.2 Cache的原理116
3.10.3 Cache的类型及要注意的
问题117
3.10.4 ARM920T Cache的编程接口 l 19
3.11小结 120
第4章操作系统内核的设计与构建 122
4.1 操作系统内核的设计 122
4.1.1 内核要完成的功能 123
4.1.2内核的架构 124
4.1.3分离硬件的相关性 126
4.1.4我们的选择 127
4.2开发环境及相关工具 129
4.2.1 Linux环境 129
4.2.2文本编辑器 132
4.2.3 GCC 134
4.2.4 LD 136
4.2.5 make “l39
4.3 LMOSEM的构建系统 142
4.3.1 LMOSEM的makefile 142
4.3.2 LMOSEM的链接脚本 147
4.4开发板的安装 150
4.5小结 154
第5章语言间调用约定与基本数据
结构 156
5.1寄存器使用约定 156
5.1.1寄存器别名 157
5.1.2参数传递与返回值 157
5.2基本数据结构 159
5.2.1 C语言的基本数据结构 160
5.2.2 list h t数据结构 16l
5.2.3 spinlock_t数据结构 164
5.2.4 kwlst t数据结构 165
5.2.5 sem t数据结构 166
5.3数据结构存在于内存中的形式 l68
5.4 C与汇编的混用 170
5.5小结 174
第6章内核初始化 175
6.1开始 175
6.1.1**行汇编代码 175
6.1.2**个C函数 178
6.2 MMU和中断向量的初始化 181
6.2.1初始化MMU “181
6.2.2复制中断向量 -186
6.3串口初始化 190
6.3.1串口硬件 190
6.3.2 内核的printf 196
6.4机器数据结构 201
6.4.1设计数据结构 201
6.4.2确定一些重要数据结构与内核
的地址 ”203
6.5初级内存管理初始化 205
6.5.1设计一些数据结构 -205
6.5.2初始化mmapdsc_t结构数组 209
6.5.3建立起内存分配数据结构 212
6.6中断初始化 215
6.6.1设计一些数据结构 215
6.6.2初始中断源描述符 -220
6.7初始化测试 222
6.8小结 225
?第7章内存管理 226
7.1 内核功能层入口 226
7.2 内存管理组件的设计 228
7.3块级内存管理 229
7.3.1块级内存管理数据结构视图 229
7.3.2块级内存管理接口 230
7.3.3主分配函数 232
7.3.4分配时查找alcfrelst_t 234
7.3.5分配时查找和操作
mm叩dsc_t 236
7.3.6分配代码写得对吗 239
7.3.7主释放函数 240
7.3.8释放时查找alcfrelst 241
7.3.9释放时查找和操作
HHnapdscj 242
7.3.10测试块级内存管理层 246
7.4页级内存管理 -248
7.4.1 页级内存管理接口及调用
流程 248
7.4.2相关的数据结构 25 1
7.4.3页级内存管理初始化 254
7.4.4分配主函数 256
7.4.5分配时查找mplhead-t 257
7.4.6分配时新建页级内存池 258
7.4.7分配时操作mplhead_t 262
7.4.8分配代码写得对吗 263
7.4.9释放主函数 265
7.4.10释放时查找mplhead-t ”266
7.4.11释放时操作mpmeadj “268
7.4.12释放时删除页级内存池 269
7.4.13测试页级内存管理层 271
7.5字级内存管理 273
7.5.1字级内存接口及调用流程 274
7.5.2相关的数据结构 275
7.5.3分配主函数 276
^
7.5.4分配时查找mplhead』 278
7.5.5分配时新建字级内存池 279
7.5.6分配时操作mplhead_t 282
7.5.7分配代码写得对吗 283
7.5.8释放主函数 一285
7.5.9释放时查找mpmead_j 285
7.5.10释放时操作mplhead_t “287
7.5.11释放时删除字级内存池 “288
7.5.12测试字级内存管理层 289
7.6小结 292
第8章中断管理 293
8.1 中断与中断控制器 293
8.1.1什么是中断 --293
8.1.2 S3C2440A中断控制器 294
8.2 中断管理的架构与相关数据
结构 298
8.2.1 中断管理的架构 -298
8.2.2设计数据结构intfltdscj
和intserdsc-t ”298
8.3中断处理 -301
8.3.1 中断辅助例程 301
8.3.2从中断向量开始 “305
8.3.3 保存CPU上下文 306
8.3.4中断主分派例程 3 lO
8.3.5确定中断源 “314
8.3.6调用中断处理例程 317
8.4安装中断回调例程 319
8.5小结 322
第9章驱动模型 323
9.1操作系统内核如何管理设备 ”323
9.1.1分权而治 323
9.1.2设备类型 325
9.1.3驱动程序 327
?9.2相关数据结构 。328
9.2.1驱动 一329
9.2.2派发例程类型 一329
9.2.3设备ID “330
9.2.4设备 “331
9.2.5 10包 “332
9.2.6设备表 ”333
9.3驱动模型的基础设施 335
9.3.1驱动程序从哪里执行 335
9.3.2新建与注册设备 340
9.3.3注册回调函数 ”344
9.3.4发送IO包 一345
9.3.5调用驱动程序函数 346
9.3.6等待服务 ”347
9.3.7完成服务 ”350
9.3.8驱动模型辅助函数 352
9.4 systick驱动程序实例 ~356
9.4.1 systick硬件 ”356
9.4.2 systick驱动程序框架 -360
9.4.3 systick驱动程序实现 ‘362
9.4.4测试systick驱动程序 368
9.5 RTC驱动程序实例 -370
9.5.1 RTC硬件 一370
9.5.2 RTC驱动程序实现 375
9.6小结 ”385
第10章进程 386
10.1应用程序的运行 386
10.1.1程序运行需要什么资源 387
10.1.2任何时刻资源都可用吗 388
10.1.3提出多道程序模型 389
10.2相关的数据结构 390
10.2.1设计进程的数据结构 391
10.2.2调度进程表 ”392
10.3 LMOSEM内核的**个进程 394
10.3.1进程管理组件的初始化 395
10.3.2建立空转进程 396
10.3.3空转进程运行 399
10.4新建进程 404
10.4.1分配进程描述符 404
10.4.2分配内存空间 406
10.4.3加入进程调度表 408
10.5进程调度 410
10.5.1调度算法 ”410
10.5.2处理进程时间片 411
10.5.3检查调度状态 414
10.5.4选择进程 ”415
10.5.5进程切换 一418
10.5.6进程等待与唤醒 421
10.5.7进程测试 “425
10.6小结 -428
第11章文件系统 430
11.1文件系统设计 430
11.1.1文件系统只是一个设备 430
11.1.2数据格式与存储块 432
11.1.3如何组织文件 433
11.1.4关于我们文件系统的限制 434
11.2相关的数据结构 434
11.2.1超级块 435
11.2.2位图 435
11.2.3 目录 一437
11.2.4文件管理头 “438
11.3文件系统格式化 440
11.3.1建立超级块 ”440
11.3.2建立位图 445
11.3.3建立根目录 448
11.4文件系统基础操作 452
11.4.1获取与释放根目录文件 -453
11.4.2字符串操作 455
? 11.4.3分解路径名 457
11.4.4检查文件是否存在 459
11.5文件操作 460
11.5.1新建文件 461
11.5.2删除文件 463
11.5.3打开文件 466
11.5.4读写文件 469
11.5.5关闭文件 472
11.5.6驱动整合 473
11.6文件系统测试 475
11.6.1格式化测试 475
11.6.2文件操作测试 479
11.7小结 482
第12章系统调用与应用程序库 483
12.1系统调用机制 483
12.1.1软中断指令 484
12.1.2传递系统调用参数 486
12.1.3 系统调用分发器 488
12.2时间管理系统调用 489
12.3进程管理系统调用 492
12.3.1进程的运行与退出 492
12.3.2获取进程的ID 494
12.4内存管理系统调用 496
12.5设备与文件系统调用 498
12.5.1设备与文件的打开 498
12.5.2设备与文件的关闭 506
12.5.3设备与文件的读写 508
12.5.4设备与文件的控制 5 12
12.6应用程序库 514
12.7测试 520
12.8小结 526
后记 528

本目录推荐