编辑推荐
本书向读者介绍嵌入式C语言开发以及嵌入式系统的微处理器架构的相关知识。本书的目的是向读者循序渐进地展示嵌入式系统的项目的整体设计,从而掌握系统设计的能力和牢固的理论知识。
本书中采用了BeMicro Max10开发板,该开发板可以实现硬件的重构,因此可以用它来完成各种不同硬件架构下的实验。
本书可以作为嵌入式C语言开发的入门读物。它并不仅仅是一本学习嵌入式C语言开发的教材,也是在嵌入式系统中使用那些神奇的传感器做实验时的好助手。本书所对应的强化课程和远程课程详见http://www.agstu.se。本书中硬件设计都可以在http://lowlevelcprogramming.agstu.com/下载。
+ 本书具有以下特色
● 每个案例都来自真实的工程项目;
● 全书实例都坚持理论和实践相结合;
● 针对C语言位操作的精彩讲解;
● 如何编写高效的C语言代码;
● 设备驱动以及驱动板级支持包(BSP)的编写;
● 轮转系统和中断系统;
● 模拟信号转换器和BeMicro Max10可重构硬件开发板的相关内容;
● 可使用免费的Altera SW专业开发工具来实现本书中的所有实例。
内容简介
嵌入式系统一般指非PC系统,它包括硬件和软件两部分。嵌入式产品应用领域极为广泛,并且具备非常好的发展前景!
本书致力于使用微控制器来设计嵌入式系统,全书包含8章内容,介绍了嵌入式软件设计基础理论,还提供了多个C语言的编程示例。通过理论与实践相结合的方式,本书可以帮助读者快速掌握嵌入式开发的核心技巧。
本书适合嵌入式开发人员以及想要学习嵌入式C语言开发的学生和普通程序员阅读。
作者简介
Lars Bengtsson博士目前在哥德堡大学担任副教授,他编写了一些电子、编程、嵌入式系统以及电子测量系统方面的书籍。Lars Bengtsson博士的研究领域主要是嵌入式测量系统以及仪器芯片研制。
Lennart Lindh目前是一名从事教育行业的副教授,他在多所大学从事研究和FPGA产品的研发。他知名的成果是一款可以用于单处理器和多处理器系统的基于实时内核的硬件产品。他还是FPGAworld会议(www.fpgaworld.com)的组织者,并为嵌入式软件硬件系统设计课程。
目录
第1章 嵌入式系统简介 1
1.1 嵌入式计算机系统 1
1.2 应用程序和平台 6
1.3 复杂度降低 7
1.3.1 抽象 8
1.3.2 结构 9
1.3.3 层次结构 10
1.4 硬件 - FPGA设备 10
1.4.1 软件 11
1.4.2 硬件和软件之间的接口 12
1.5 软件开发工具 14
1.5.1 编译器 15
1.5.2 链接器 15
1.6 YouTube的推荐资源 16
第2章 硬件与软件的安装 17
2.1 软件(IDE) 18
2.2 硬件平台 19
2.2.1 BeMicro MAX 10开发板 19
2.2.2 系统时钟 21
2.2.3 LED和按钮 22
第3章 案例1 24
3.1 硬件架构 - 案例1A 24
3.1.1 CPU Nios II 25
3.1.2 Avalon总线 27
3.1.3 JTAG UART 28
3.2 设计案例 1A 29
3.2.1 介绍 29
3.2.2 案例1A:硬件部分 29
3.2.3 实现 31
3.3 设计案例1B 43
3.3.1 理论:调试、监控和仿真 43
3.3.2 传统的软件调试 44
3.3.3 案例1B:使用调试器 46
3.3.4 案例1B:软件调试 49
3.4 设计案例1C:嵌入式C语言开发 55
3.4.1 理论:二进制格式和ASCII码 55
3.4.2 理论:Altera专用软件“HAL(硬件抽象层)” 57
3.4.3 理论:内存映射 60
3.4.4 PIO理论(并行输入/输出) 61
3.4.5 理论:C语言中的位操作 62
3.4.6 理论:使用键盘和终端进行输入和输出 67
3.4.7 案例1C:内存映射与硬件 69
3.4.8 案例1C:软件设计 70
3.4.9 小结 77
第4章 案例2 - 添加外部存储 78
4.1 存储 78
4.1.1 RAM 79
4.1.2 ROM 80
4.2 设计案例2:添加外部RAM 84
4.3 小结 89
4.4 YouTube资源和网络资源推荐 89
第5章 案例3 - 编写设备驱动程序 90
5.1 简介 90
5.2 案例规范 92
5.3 接口 92
5.3.1 驱动程序 92
5.3.2 寄存器 93
5.4 软件–硬件抽象层 95
5.5 设计案例3A:编写设备驱动 99
5.6 将设备驱动程序整合到BSP中 104
5.7 设计案例3B:使用tickle文件 107
5.8 设备驱动程序 109
5.9 小结 111
第6章 案例4 - C代码的优化 112
6.1 简介 112
6.2 值得考虑的部分 113
6.2.1 选择一个优秀的算法 113
6.2.2 编写简单明了的代码 113
6.2.3 操作 114
6.2.4 了解编译器的选项 115
6.2.5 将C代码移植到VHDL中 115
6.3 代码优化技术 115
6.3.1 变量 116
6.3.2 结构体 122
6.3.3 函数 124
6.3.4 条件分支与循环 128
6.3.5 指针 131
6.4 简单执行时间测量技术 133
6.5 设计案例4:测量C代码性能 135
6.6 小结 140
6.7 引用 141
第7章 案例5 - 轮询和中断 142
7.1 简介 142
7.2 软件轮询输入/输出系统 143
7.3 设计案例5A:硬件架构 - 轮询系统 144
7.4 设计案例5A:软件 - 轮询系统 144
7.5 中断系统 148
7.5.1 简介 148
7.5.2 Nios Ⅱ处理器的中断 150
7.6 设计案例5B:中断系统 154
7.7 讨论 158
7.8 引用 158
7.9 YouTube推荐 159
第8章 案例6 - 模拟信号处理 160
8.1 简介 160
8.2 嵌入式系统中的模拟信号 160
8.2.1 ADCs - 模拟数字转换器 160
8.2.2 逐次逼近 163
8.2.3 MAX 10开发板上的ADC模块 164
8.2.4 LDR - 光敏电阻 167
8.3 设计案例6:信号的处理 168
8.3.1 案例6:产品规格 168
8.3.2 案例6:硬件 168
8.3.3 案例6:实现 169
8.4 讨论 171
8.5 引用 172
8.6 YouTube视频推荐 172
嵌入式C编程实战 下载 mobi epub pdf txt 电子书 格式