嵌入式软件设计基础——基于ARM Cortex-M3(原书第2版)

嵌入式软件设计基础——基于ARM Cortex-M3(原书第2版) pdf epub mobi txt 电子书 下载 2026

出版者:机械工业出版社
作者:(美)Daniel W. Lewis
出品人:
页数:0
译者:陈文智
出版时间:2014-1
价格:45.00
装帧:
isbn号码:9787111441762
丛书系列:计算机科学丛书
图书标签:
  • 嵌入式
  • Arm
  • EmbeddedSystem
  • 计算机技术
  • 编程
  • 硬件
  • linux
  • eBook
  • 嵌入式系统
  • ARM Cortex-M3
  • 嵌入式软件
  • 软件设计
  • Cortex-M
  • 单片机
  • 嵌入式开发
  • ARM
  • 嵌入式编程
  • 基础
想要找书就要到 小美书屋
立刻按 ctrl+D收藏本页
你会得到大惊喜!!

具体描述

本书的最终目标是为支持多线程风格的程序设计和嵌入式软件的高可靠性需求建立坚实的基础。书中以实践中最常运用的方式讲解汇编语言——实现小型、快速或特殊目的的例程,这些例程由主程序(高级语言编写,如C)调用。通过运用嵌入式软件环境,本书介绍多线程程序设计、可抢占式系统与非可抢占式系统、共享资源和调度,帮助学生保持学习兴趣,满足他们的好奇心,并为操作系统、实时系统、计算机网络及基于多处理器的设计等后续课程做好充分准备。前版由高教社引进,新版用最新的ARM Cortex-M3 v7处理器替代了早期的Intel IA32处理器,更加符合目前越来越多的实时嵌入式应用需求。

本书适用于高等院校工科各专业本科嵌入式计算机系统程序设计、C语言程序设计及汇编语言程序设计类课程,也可供相关技术人员学习参考。

作者简介

Daniel W. Lewis 于1988年创立了圣克拉拉大学计算机工程系,并于接下来的18年担任系主任。在其任期内,他建立了独特的本科生出国交流项目和研究生学位证书项目,并开辟了网页设计和工程跨学科主修专业以及信息技术和社会跨学科辅修专业。

在1975年进入圣克拉拉大学前,Lewis曾在通用电气航空部门工作六年,为最早的三重冗余自动着陆系统的商用飞机之一设计了容错时序系统。他在一些海湾地区公司(包括Singer-Link公司)做过顾问,他设计的新算法和相应的超大规模集成电路模块阵列成为实时计算机图形系统新生产线的基础。

目录信息

出版者的话
译者序
献辞
前言
第1章  导论 1
1.1  什么是嵌入式系统 1
1.2  嵌入式软件设计的目标有什么独特性 3
1.3  什么是实时系统 4
1.4  什么是多线程 4
1.5  嵌入式处理器到底有多强大 4
1.6  如何使用编程语言 5
1.7  构建嵌入式应用有什么不同之处 6
1.8  典型的嵌入式程序有多大 7
习题 7
第2章  数的表示 9
2.1  固定精度二进制数 9
2.2  按位计数制 10
2.2.1  二进制到十进制的转换 11
2.2.2  十进制到二进制的转换 11
2.2.3  十六进制:二进制的简写 13
2.2.4  固定精度、反转与溢出 14
2.3  整数的二进制表示 14
2.3.1  带符号整数 15
2.3.2  同一数量级的正数和负数表示 15
2.3.3  解释2的补码的值 16
2.3.4  改变具有整数和小数部分的数的符号 17
2.3.5  二进制加减法 17
2.3.6  表示范围与溢出 19
2.4  实数的二进制表示 19
2.4.1  浮点表示的实数 19
2.4.2  定点表示的实数 21
2.5  文本的ASCII码表示 22
2.6  二进制编码的十进制 23
习题 24
第3章 实现算术运算 27
3.1  2的补码与硬件复杂度 27
3.2  乘法与除法 29
3.2.1  有符号与无符号乘法 29
3.2.2  通过对2的移位来实现乘或者除 29
3.2.3  乘以任意常量 30
3.2.4  除以任意常量 31
3.3  定点实数的算术运算 31
3.3.1  使用标准16.16格式的定点数 33
3.3.2  使用标准32.32格式的定点数 34
3.3.3  32.32定点实数乘法 34
3.3.4  实例:4.4定点实数乘法 36
习题 37
第4章 C的整数类型及其使用 39
4.1  整数数据类型 39
4.2  布尔数据类型 42
4.3  混合数据类型 43
4.4  内存中的位操作 43
4.4.1  测试位 45
4.4.2  设置、清除与反转位 45
4.4.3  提取位 46
4.4.4  插入位 46
4.5  I/O端口的位操作 47
4.5.1  只写I/O设备 47
4.5.2  基于读和写的I/O设备 48
4.5.3  基于串行访问的I/O设备 49
4.5.4  基于写入数据位的I/O设备 49
4.6  访问内存映射的I/O设备 50
4.6.1  使用指针访问数据 50
4.6.2  数组、指针和取地址操作符 51
4.7  结构体 51
4.7.1  封装的结构体 52
4.7.2  位域 54
4.8  变量访问 54
4.8.1  获取对象的地址 55
4.8.2  使用联合体 56
习题 56
第5章 汇编程序设计Ⅰ:计算机组成 60
5.1  内存 61
5.2  中央处理单元 64
5.2.1  其他寄存器 65
5.2.2  取指–执行周期 65
5.3  输入/输出 67
5.4  ARM Cortex-M3 v7M体系结构概述 67
5.4.1  内部组成 68
5.4.2  指令流水线 69
5.4.3  存储模型 70
5.4.4  位带 71
5.5  ARM汇编语言 72
5.5.1  指令格式与操作数 72
5.5.2  将汇编翻译为二进制 73
习题 74
第6章 汇编程序设计Ⅱ:数据操作 77
6.1  将常量装入寄存器 77
6.2  将内存数据装入寄存器 77
6.3  数据从寄存器存入内存 79
6.4  将简单的C赋值语句转换为ARM汇编代码 80
6.5  内存地址计算 81
6.6  内存寻址实例 81
6.6.1  将C指针表达式翻译为汇编代码 82
6.6.2  将C下标表达式翻译为汇编代码 83
6.6.3  将结构体引用翻译为汇编代码 83
6.7  栈指令 84
6.8  数据处理指令 85
6.8.1  在APSR中更新标识 85
6.8.2  算术运算指令 85
6.8.3  位操作指令 86
6.8.4  移位指令 87
6.8.5  位域操作指令 88
6.8.6  混合位、字节和半字指令 89
习题 90
第7章 汇编程序设计Ⅲ:控制结构 92
7.1  指令序列 92
7.2  实现判定 92
7.2.1  条件分支指令 93
7.2.2  if-then和if-then-else语句 94
7.2.3  复合条件码 95
7.2.4  if-then指令 96
7.3  实现循环 97
7.4  函数的实现 99
7.4.1  函数调用和返回 99
7.4.2  寄存器使用 100
7.4.3  参数传递 101
7.4.4  返回值 101
7.4.5  临时变量 102
7.4.6  保存寄存器值 102
习题 103
第8章 汇编程序设计Ⅳ:I/O编程 106
8.1  Cortex-M3 I/O硬件 106
8.1.1  中断和异常 107
8.1.2  线程和异常处理模式 107
8.1.3  进入异常处理程序 107
8.1.4  从异常处理程序返回 108
8.1.5  减少延迟 108
8.1.6  优先级与嵌套异常 109
8.2  同步、传输率与延迟 111
8.3  缓冲区与队列 111
8.4  评价I/O的执行能力 113
8.4.1  轮询等待循环 114
8.4.2  中断驱动的I/O 116
8.4.3  直接内存访问 117
8.4.4  不同方法的比较 117
习题 118
第9章 并发软件 120
9.1  前台/后台系统 120
9.1.1  线程状态与串行化 120
9.1.2  延迟管理 121
9.1.3  中断溢出 123
9.1.4  将工作转移到后台 123
9.2  多线程编程 124
9.2.1  独立线程的并发执行 124
9.2.2  上下文切换 124
9.2.3  非抢占(合作)多线程 125
9.2.4  抢占式多线程 126
9.3  共享资源与临界区 127
9.3.1  禁止中断 127
9.3.2  禁止任务切换 127
9.3.3  自旋锁 128
9.3.4  互斥对象 128
9.3.5  信号量 129
习题 129
第10章 调度 131
10.1  线程状态 131
10.2  等待中的线程 132
10.3  上下文切换 132
10.4  轮转调度 134
10.5  基于优先级的调度 134
10.5.1  资源饥饿 134
10.5.2  优先级反转 134
10.5.3  优先级上限协议 135
10.5.4  优先级继承协议 135
10.6  分配优先级 136
10.6.1  最后期限驱动的调度 136
10.6.2  速率单调的调度 137
10.7  死锁 137
10.8  看门狗定时器 138
习题 140
第11章 存储管理 142
11.1  C语言中的对象 142
11.2  作用域 143
11.2.1  改进局部作用域 143
11.2.2  改进全局作用域 144
11.3  生命周期 145
11.4  自动分配 145
11.5  静态分配 146
11.6  三个程序:区分静态分配和自动分配 147
11.6.1  对象创建 147
11.6.2  对象初始化 147
11.6.3  对象销毁 148
11.7  动态分配 149
11.7.1  内存碎片 150
11.7.2  内存分配池 150
11.8  具有变量大小的动态分配 150
11.9  递归函数和内存分配 152
习题 152
第12章 共享内存 157
12.1  确定共享对象 157
12.1.1  共享全局数据 157
12.1.2  共享私有数据 157
12.1.3  共享函数 157
12.2  可重入函数 158
12.3  只读数据 158
12.4  编程实践需要避免的事项 159
12.4.1  将内部状态保持在本地静态对象的函数 159
12.4.2  返回本地静态对象地址的函数 161
12.5  访问共享内存 162
12.5.1  处理器体系结构的影响 163
12.5.2  只读和只写访问 164
12.5.3  类型限定符volatile 164
习题 165
第13章 系统初始化 168
13.1  内存层次 168
13.2  CPU和向量表 168
13.3  C运行时环境 170
13.3.1  将初始值从非易失性存储器复制到数据区 170
13.3.2  将未初始化的静态变量归零 170
13.3.3  设置堆 171
13.4  系统定时器 171
13.5  其他外围设备 172
部分习题答案 173
索引 175
· · · · · · (收起)

读后感

评分

评分

评分

评分

评分

用户评价

评分

这本书的叙事节奏掌控得非常妙,并非一味地猛冲猛打。当读者可能因为连续的底层细节感到疲劳时,它会适时地引入一些更高层次的软件架构思考,比如任务调度和实时操作系统的基本概念。虽然它不是一本专门讲RTOS的书,但它对裸机环境下如何模拟并发、如何处理优先级反转这些问题的探讨,为后续学习更复杂的系统打下了坚实的软件工程基础。我个人最喜欢的是它对异常处理和错误恢复机制的阐述,这通常是新手最容易忽略,但对产品健壮性影响最大的部分。书里清晰地划分了硬错误(如总线错误)和软错误(如软件逻辑错误)的处理流程,并结合M3的NVIC(嵌套向量中断控制器)的特性给出了处理模板。这种从底层硬件中断到上层软件逻辑的无缝衔接,让整个系统的概念变得立体而完整,不再是孤立的代码块。

评分

深入到软件设计和外设驱动的部分,这本书的实战性立刻凸显出来,不再是纯粹的理论灌输。我发现它在介绍如何利用M3的定时器、ADC这些常用模块时,给出的示例代码质量非常高,不是那种只能跑通但效率低下的“玩具代码”。作者似乎非常注重代码的规范性和可移植性,这对于我们实际项目开发至关重要。举个例子,讲到GPIO配置时,它不仅展示了如何设置输入输出模式,还详细对比了推挽和开漏输出在不同应用场景下的优劣,甚至连上拉电阻的计算都有提及,这种细致程度在其他教材里很少见。另外,它对Cortex-M3特有的低功耗模式和睡眠唤醒机制的讲解,也相当到位,直接对接了现在嵌入式设备对能效的严苛要求。阅读这部分时,我常常会对照着自己手头的开发板手册来看,发现书中的描述与实际硬件行为高度吻合,验证了作者经验的丰富。它提供的不仅仅是“如何做”,更是“为什么这么做最合适”。

评分

总的来说,这本书的价值不仅仅在于它覆盖了Cortex-M3的方方面面,更在于它提供了一种系统化的、自底向上的嵌入式思维模式。它不是一本快速入门手册,而更像是一部需要伴随项目经验去反复研读的工具书和参考指南。它教会了我如何像一个底层的系统工程师那样去思考问题,而不是仅仅停留在应用层调用API。通过这本书,我对嵌入式系统的“黑盒子”有了更清晰的认识,很多过去只靠猜测或经验来解决的问题,现在都有了明确的理论支撑。对于那些目标是成为能够独立设计和调试复杂嵌入式系统的工程师来说,这本书提供了一个非常坚实且全面的知识框架。它给我的感觉是,读完它,你才真正拿到了进入专业嵌入式开发领域的“入场券”,后续的学习方向也变得更加明确和高效。

评分

从阅读体验上来说,这本书的排版和图示是值得称赞的。要知道,涉及到ARM这类复杂指令集和总线架构时,没有清晰的图表辅助几乎是无法理解的。这本书的插图质量非常高,尤其是那些关于流水线执行和堆栈管理的示意图,简单明了,能够瞬间抓住核心矛盾点。不像一些翻译过来的技术书,图注和正文经常错位或者模糊不清,这本的配套质量让人感觉像是专门为教学设计的。此外,它的语言风格虽然严谨,但并不晦涩难懂,作者似乎非常懂得如何用最直接的语言去解释最复杂的概念。对于我这种需要频繁在阅读和实践之间切换的学习者来说,这种清晰的组织结构大大降低了认知负荷。我甚至会把一些关键的流程图单独打印出来,贴在工作台边,作为快速回顾的备忘录。

评分

这本厚重的书,捧在手里就觉得分量十足,光是封面那种严肃中带着一点技术范儿的设计,就让人对接下来的内容充满了期待。我抱着“查漏补缺,巩固基础”的心态开始翻阅,最初的章节给我的感觉是极其扎实且面面俱到的。它似乎没有放过任何一个初学者可能会感到困惑的细节,从最底层的寄存器操作讲起,一步步搭建起对整个M3内核架构的认知框架。我尤其欣赏作者在讲解复杂的内存映射和总线结构时所采用的类比方式,非常形象,不像有些教材那样干巴巴地堆砌规范术语,读起来不那么费劲。对于那些想从零开始深入理解嵌入式系统工作原理的人来说,这绝对是一本可以信赖的“大部头”。它不仅仅停留在教会你怎么写代码的层面,更重要的是让你理解代码“为什么”是这么写的,背后的硬件机制是什么。光是第一部分关于启动流程和中断向量表的分析,就让我对之前模糊的概念有了清晰的认识。总的来说,开篇体验是:内容详实到有点“吓人”,但绝对是值得投入时间的基石。

评分

不需要番茄钟,一个厕所蹲时读完。第一版01年,高教社04影印,高教社05翻译版。太过基础和概略。感觉比第一版差。

评分

每一章的容量安排还算不错。

评分

不需要番茄钟,一个厕所蹲时读完。第一版01年,高教社04影印,高教社05翻译版。太过基础和概略。感觉比第一版差。

评分

翻译的还行,书的内容也很不错 第2章 数的表示 很基础,对补码和浮点数的表示解释的很好 第13章 系统初始化 价格比较好,对arm的初始化理解更深刻了

评分

翻译的还行,书的内容也很不错 第2章 数的表示 很基础,对补码和浮点数的表示解释的很好 第13章 系统初始化 价格比较好,对arm的初始化理解更深刻了

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2026 book.quotespace.org All Rights Reserved. 小美书屋 版权所有