第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 Ⅱ 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