《现代嵌入式系统开发专案实务》PDF下载

  • 购买积分:14 如何计算积分?
  • 作  者:邱毅凌编著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2009
  • ISBN:9787121088384
  • 页数:405 页
图书介绍:本书不是某个CPU、某个系统或某种产品的“使用手册”,于轻松的行文风格中,讲述嵌入式系统的本质与正确的观念。以项目管理的角度,详细介绍电子产品开发从启动到上市之后的每一个流程、相关的业界现状、以及嵌入式系统工程师在每一个阶段的工作性质与角色定位;全书共十三章,以一个完整的电子产品开发案的流程贯穿全书,于适当的时间点,穿插真实发生的实例以及解决方式,藉此推导出嵌入式系统开发的相关技术。

第0章 系统、嵌入、硬件 1

0.1 Welcome on board 1

0.2 嵌入式系统开发团队 2

0.3 老调重弹——什么是嵌入式系统 3

0.3.1 嵌入式系统本质(Ⅰ)——计算机系统 4

0.3.2 嵌入式系统本质(Ⅱ)——特殊应用 6

0.3.3 什么是嵌入式系统 8

0.4 限制、限制、限制 10

0.4.1 产品规格设计的限制 11

0.4.2 人力分配的限制 11

0.4.3 进度管理的限制——测不准原理 12

0.4.4 硬件设计的限制 14

0.4.5 软件系统设计的限制 15

0.5 基本职能——老鸟也曾是菜鸟 16

0.6 读书计划 20

0.7 工作内容——做工程师,而非程序工人 21

第1章 嵌入式系统开发项目的生命周期(上)——项目激活与规划阶段 23

1.1 嵌入式系统专案简介 24

1.1.1 设计产品 25

1.1.2 管理项目 26

1.1.3 开发系统 27

1.2 初期规划——该不该接这个项目 27

1.2.1 没规划,一定挂 28

1.2.2 不可能的任务 29

1.3 进度规划——ASAP 31

1.4 规格——请接受这个不完美的世界 33

1.5 人力规划——营级组织,连级人力 35

1.6 一切都为了cost down 37

第2章 嵌入式系统开发项目的生命周期(下)——设计、执行与结案 40

2.1 设计阶段——拟定作战计划 40

2.2 产品规格设计 42

2.3 硬件设计 44

2.4 系统设计 45

2.5 测试计划设计 47

2.6 品质系统设计 49

2.7 风险评估 52

2.8 设计文件的重要性 53

2.9 实作阶段——执行所有设计 54

2.10 冲突不断——协同作战有多难 57

2.11 产品化 60

2.12 无间道——项目可有结案的一天 62

第3章 震撼教育——第一个嵌入式系统 64

3.1 开发环境 65

3.2 无痛起步——善用sample code 69

3.2.1 计算机系统激活流程 70

3.2.2 中断向量表 71

3.2.3 boot程序(激活程序) 74

3.2.4 main() 77

3.2.5 驱动程序1——timer 78

3.2.6 驱动程序2——LED 80

3.3 如何确定程序在执行 83

3.4 标准C library可以用吗? 85

3.5 总结:嵌入式Hello World 89

第4章 嵌入式系统平台实作 90

4.1 系统与平台 90

4.2 系统架构设计 93

4.2.1 产品规格review 94

4.2.2 系统架构——从粗略到逐渐精细的方块图 95

4.2.3 资料流 98

4.2.4 硬件相关与硬件无关——可重用性&可移植性 100

4.2.5 system configuration——可扩充性&可调整性 101

4.3 API与程序风格设计 106

4.3.1 系统程序风格 107

4.3.2 应用程序风格 111

4.3.3 API 111

4.4 嵌入式操作系统——OS在哪里 113

4.4.1 操作系统 113

4.4.2 嵌入式操作系统 114

4.4.3 实时系统 115

4.4.4 嵌入式操作系统的特性 116

4.4.5 嵌入式系统task架构实例 117

4.5 仿真器 120

4.6 source tree设计 122

4.6.1 整合时的重要观念 122

4.6.2 source tree设计原则 124

4.7 程序风格典范 126

第5章 构建嵌入式系统开发环境 132

5.1 开发工具 133

5.1.1 IDE(集成开发环境) 135

5.1.2 cross tools 136

5.1.3 make 138

5.2 makefile&批处理文件(.BAT) 140

5.2.1 makefile 141

5.2.2 非文件名称的target 147

5.2.3 人工撰写对比automake tools 148

5.2.4 debug版与release版 150

5.3 link script 152

5.3.1 程序段与数据段 153

5.3.2 link script的内容 155

5.3.3 定义在link script中的常数 159

5.3.4 map file或symbol table 161

5.4 ROM Maker 163

5.4.1 make ROM 164

5.4.2 constant C array 165

5.4.3 file system binary 167

5.5 下载&执行 169

5.6 版本控制server 172

5.7 说故事时间 179

第6章 上电之后——boot loader 181

6.1 第一行程序 181

6.2 基本硬件测试 184

6.2.1 确认function call可否正常运行 185

6.2.2 确认中断系统可否正常运行 188

6.2.3 内存测试 190

6.2.4 CPU初始化 194

6.3 加载程序段与数据段初始化 195

6.3.1 加载data段 196

6.3.2 设定bss段 198

6.3.3 加载程序段 199

6.4 实例:从NAND Flash加载 200

第7章 驱动程序 203

7.1 莫恐惧 204

7.2 准备工作 206

7.2.1 检查可用的资源 207

7.2.2 用C语言写驱动程序 208

7.2.3 新世纪汇编语言实务 211

7.2.4 driver API设计 214

7.2.5 软硬之争一这板子真的可以动吗 217

7.3 控制CPU 220

7.3.1 内部缓存器 221

7.3.2 memory mapping缓存器 223

7.3.3 中断处理器 227

7.3.4 clock 228

7.3.5 bus & chip select 232

7.3.6 GPIO port 234

7.3.7 NOP与实作精确的时间区段 238

7.3.8 省电功能控制 241

7.3.9 初始化 244

7.3.10 CPU内部还有什么 244

7.4 memory 247

7.5 控制其他芯片 251

7.6 ISR写作注意事项 252

7.7 驱动程序除错 256

7.8 结论 258

第8章 内存管理 259

8.1 内存空间配置 259

8.2 stack 263

8.2.1 stack的用途 263

8.2.2 stack overflow 266

8.2.3 stack & RTOS 268

8.2.4 context switch 271

8.3 heap——动态内存配置 273

8.3.1 allocate & free 274

8.3.2 API 275

8.3.3 碎块处理 281

8.3.4 保护heap 284

8.4 烧录器 285

第9章 模拟器 290

9.1 模拟器概论 290

9.2 emulator VS simulator 293

9.3 模拟器对项目开发的贡献 295

9.3.1 开发环境 295

9.3.2 测试 297

9.4 实战篇 298

9.4.1 模拟器实作的基本观念——仿真LCD 299

9.4.2 模拟器与系统状态 304

9.4.3 其他功能的仿真 305

9.4.4 模拟器其他功能——logging and profiling 308

第10章 系统整合 311

10.1 第一次整合 312

10.1.1 最佳时间点 312

10.1.2 导致整合失败的原因 313

10.2 全功能整合 315

10.2.1 schedule检讨——该是面对现实的时候了 315

10.2.2 全功能整合会碰到的问题 316

10.2.3 porting的原则 321

10.3 发行第一个版本 323

10.3.1 第一个正式版本之前的“版本” 323

10.3.2 送测——激活BUG管制系统 324

第11章 testing、debugging和tuning 330

11.1 测试 331

11.1.1 测试VS品质系统 332

11.1.2 嵌入式系统测试——cross test 333

11.1.3 测试计划 335

11.1.4 测试的种类 336

11.2 bug sheet管理 340

11.2.1 填写bug sheet的注意事项 341

11.2.2 非RD人员使用bug管理系统的注意事项 344

11.2.3 bug的等级 345

11.2.4 bug的生命周期 346

11.2.5 后话:白天不懂夜的黑 347

11.3 debug基本技法 348

11.3.1 直觉与经验 349

11.3.2 案例——无俚头死机事件 351

11.3.3 莫非定律——量产才出现的bug 353

11.3.4 offline tools开发与sizeof()的陷阱 355

11.4 tuning 359

11.4.1 执行时间测量 361

11.4.2 找出热区 362

11.4.3 在较快的内存中执行程序或操作资料 363

第12章 结案前的煎熬 365

12.1 版本发行——兵荒马乱的日子 367

12.1.1 版本发行流程 368

12.1.2 正式版与内部测试版 370

12.2 自动测试程序 371

12.2.1 一般使用者VS生产线作业人员 372

12.2.2 自动测试程序的功能 373

12.2.3 自动测试程序会影响产能与组装成本 373

12.3 决定量产版本 374

12.4 出货≠结案 376

12.4.1 running change版本 376

12.4.2 cost down版 377

12.4.3 出货之后——你以为就没事了吗 378

12.5 项目结案 379

12.6 期许下一个项目 380

附录A 没有执行专案管理的专案 382

附录B Callback Function 383

附录C 用C语言来实作面向对象的概念 386

附录D 有效率的画斜线算法 398

附录E 电子产品设计导论 401