《国家级特色专业(物联网工程)规划教材:物联网与嵌入式系统开发(附教学课件)》 刘连浩
《国家级特色专业(物联网工程)规划教材:物联网与嵌入式系统开发》可作为普通高等学校物联网工程及其相关专业的教材,也可供从事物联网及其相关专业的人士阅读。
第1章嵌入式系统概述1 1.1嵌入式系统简介2 1.2嵌入式系统的组成3 1.3嵌入式处理器简介7 1.4嵌入式系统应用9 1.5嵌入式系统发展趋势11 1.6物联网与嵌入式系统12 1.7嵌入式开发工具14 1.7.1软件开发工具14 1.7.2硬件开发工具15 思考与习题16 第2章ARM体系结构17 2.1ARM处理器基础18 2.1.1ARM简介18 2.1.2冯诺依曼结构、哈佛结构与改进的哈佛结构18 2.1.3CISC与RISC19 2.1.4流水线19 2.1.5ARM处理器的命名方式23 2.2ARM处理器系列24 2.2.1ARM处理器架构24 2.2.2常用ARM处理器系列简介27 2.3ARM体系结构31 2.3.1ARM的基本数据类型31 2.3.2ARM处理器的运行模式31 2.3.3ARM处理器的运行状态32 2.3.4存储器的大/小端32 2.3.5ARM的寄存器组织33 2.3.6异常处理36 2.4ARM存储器结构38 2.4.1ARM存储器接口39 2.4.2ARMCache结构40 2.4.3ARM存储器管理单元MMU45 2.4.4地址变换后备缓冲器45 2.4.5ARM的MMU结构46 2.5ARM的其他部件54 2.5.1存储器映像I/O55 2.5.2直接存储器存取55 2.5.3中断IRQ和快速中断FIQ55 2.5.4ARM协处理器接口56 2.5.5ARMAMBA接口57 思考与习题58 第3章ARM指令集与程序设计59 3.1ARM指令系统特点60 3.1.1数据类型60 3.1.2ARM指令特点60 3.2ARM指令系统61 3.2.1ARM指令的寻址方式62 3.2.2ARM指令的条件执行64 3.2.3Load/Store类指令65 3.2.4ARM数据处理类指令68 3.2.5ARM转移类指令73 3.3Thumb指令74 3.3.1Thumb指令概述74 3.3.2Thumb存储器访问指令75 3.3.3Thumb数据处理指令78 3.3.4分支指令83 3.3.5中断和断点指令85 3.4ARM伪操作与伪指令85 3.4.1符号定义与变量赋值伪操作85 3.4.2数据定义伪操作86 3.4.3汇编控制伪操作87 3.4.4信息报告伪操作89 3.4.5指令集选择伪操作89 3.4.6杂项伪操作89 3.4.7ADR、ADRL、LDR伪指令89 3.4.8NOP伪指令91 3.5ARM汇编程序设计92 3.5.1汇编语言的基本格式92 3.5.2汇编语言的子程序调用93 3.6ARMC语言基础及混合编程93 3.6.1ATPCS概述94 3.6.2C语言与汇编语言混合编程96 3.7超级终端的使用99 3.8ADS集成开发环境的使用100 3.8.1安装与卸载ADS100 3.8.2使用ADS创建工程101 3.8.3使用AXD进行仿真108 思考与习题110 第4章基于S3C2440的硬件结构与接口编程111 4.1S3C2440简介112 4.1.1S3C2440A片上主要功能112 4.1.2S3C2440A特点114 4.2S3C2440A的存储器接口118 4.2.1S3C2440A存储器控制器118 4.2.2NANDFlash控制器119 4.2.3SDRAM原理123 4.3时钟和电源管理125 4.4DMA125 4.4.1DMA请求源126 4.4.2DMA工作过程126 4.4.3基本DMA时序127 4.4.4DMA传输大小127 4.4.5DMA专用寄存器127 4.5I/O端口132 4.6定时器137 4.7ARM中断139 4.8LCD148 4.8.1LCD原理148 4.8.2ARMLCD驱动控制149 4.8.3LCD控制器特殊寄存器150 4.9A/D转换器和触摸屏160 4.9.1A/D转换器简介160 4.9.2触摸屏的工作原理及种类161 4.9.3A/D转换器和触摸屏接口162 4.10异步串口通信166 4.10.1串行通信概述166 4.10.2S3C2440A异步串行口简介171 4.11SPI、IIC、IIS、SD卡总线接口181 4.11.1SPI总线接口181 4.11.2IIC总线接口182 4.11.3IIS总线接口190 4.11.4SD卡197 4.12USBHost/Device控制器203 思考与习题205 第5章嵌入式操作系统206 5.1操作系统简介207 5.1.1操作系统207 5.1.2嵌入式操作系统209 5.2C/OS—II简介211 5.3VxWorks简介212 5.4WinCE简介214 5.5Linux简介217 5.5.1Linux简介217 5.5.2Linux特点217 5.5.3嵌入式Linux218 5.5.4Linux内核版本与发行版218 5.5.5Linux进程管理219 5.5.6存储管理224 5.5.7文件系统227 5.5.8设备管理229 5.5.9Linux内核模块231 5.5.10Linux配置文件232 5.5.11Linux启动流程简介233 5.6其他嵌入式操作系统236 5.6.1其他国外常用嵌入式操作系统236 5.6.2其他国内常用的嵌入式操作系统237 思考与习题238 第6章嵌入式Linux应用开发239 6.1Linux安装240 6.1.1安装vmware240 6.1.2创建虚拟机240 6.1.3安装fedora14244 6.1.4安装VMwareTools250 6.2交叉编译环境的建立251 6.2.1交叉编译251 6.2.2交叉编译器的安装251 6.3Linux常用命令253 6.3.1系统管理命令253 6.3.2文件管理命令255 6.3.3文件查看命令257 6.3.4进程管理命令258 6.3.5网络管理命令259 6.3.6用户管理命令259 6.4minicom的使用260 6.4.1minicom的安装260 6.4.2minicom的设置260 6.4.3minicom的使用261 6.5vi程序的使用261 6.5.1启动vi262 6.5.2常用vi命令262 6.6gcc程序的使用263 6.6.1gcc简介263 6.6.2gcc编译程序的流程264 6.6.3gcc选项264 6.7gdb程序的使用265 6.7.1gdb简介265 6.7.2gdb的调试程序流程265 6.7.3gdb命令265 6.8makefile简介266 6.8.1makefile简介266 6.8.2makefile的规则266 6.8.3makefile文件的命名266 6.8.4makefile的组成267 6.8.5简单的makefile示例267 6.8.6使用变量268 6.8.7使用隐式规则268 6.8.8伪目标269 6.9Linux应用程序编程269 6.9.1文件编程269 6.9.2进程创建273 6.9.3进程间通信之管道278 6.9.4进程间通信之有名管道280 6.9.5进程间通信之信号283 6.9.6进程间通信之信号量290 6.9.7进程间通信之消息队列294 6.9.8进程间通信之共享内存298 6.9.9原子操作300 6.9.10线程300 6.9.11网络编程基础306 6.9.12Linux中断318 思考与习题320 第7章嵌入式Linux操作系统的移植321 7.1Bootloader322 7.1.1Bootloader简介322 7.1.2常见Bootloader323 7.2Linux的移植324 7.2.1安装前的准备工作324 7.2.2Linux的移植步骤326 7.3根文件系统的制作334 思考与习题338 第8章物联网中的常用嵌入式系统339 8.1TinyOS简介341 8.1.1TinyOS概述341 8.1.2TinyOS的特点343 8.1.3TinyOS开发平台343 8.1.4TinyOS开发案例344 8.1.5TinyOS的基本概念344 8.2安装TinyOS345 8.3nesC简介349 8.3.1nesC概述349 8.3.2nesC基本概念350 8.3.3一个简单的nesC编程示例356 8.3.4TOSSIM仿真357 8.4TinyOS内部机制简介358 8.4.1TinyOS程序运行机制分析358 8.4.2TinyOS的调度机制359 8.4.3TinyOS的通信模型360 8.4.4TinyOS的能量管理362 思考与习题362 参考文献363