
本书的应用实例内容是在以ARM系列S3C2440微处理器为核心,集实验教学和课程设计要求而开发设计的嵌入式综合实训平台基础上完成的,具体包括嵌入式综合实训平台概述、嵌入式系统结构(无操作系统)应用、嵌入式操作系统的应用、基于Linux下的C/C++程序设计应用,以及嵌入式系统常用传感器扩展应用,五部分共计35个应用实例内容。
前 言 随着嵌入式系统设计和物联网工程应用项目的迅速发展和普及,业界对嵌入式系统设计的技术人才需求越来越大,同时也迫切需要一些较好的适合于不同层次人员使用的教材和参考书。本书从实用的角度出发,针对于国内大专院校嵌入式工程专业的“嵌入式系统结构”、“嵌入式操作系统”、“嵌入式软件设计”和“嵌入式系统设计与应用”等相应专业课程的需要,结合作者多年的教学、科研方面的经验编写了这部实例应用教材。 本书的实例内容是在以ARM系列S3C2440微处理器为核心,集实验教学和课程设计要求而开发设计的嵌入式综合实训平台基础上完成的。 全书内容具体分为如下五部分(35种应用实例): (1)概述部分:主要介绍嵌入式综合实训平台硬件组成、平台技术指标和功能,以及实训平台能够支持的应用实例项目。 (2)嵌入式系统结构(无操作系统)应用实例部分:具体包括ADS1.2集成开发环境的安装与应用、外部按键中断的应用、RS-232串行接口通信应用、基于I2C总线通信的器件应用、LED指示灯驱动应用、LCD图片显示应用、蜂鸣器驱动应用和直流电机驱动应用,共计8个应用实例。 (3)嵌入式操作系统的应用实例部分:具体包括μC/OS-II实时操作系统多任务调度、μC/OS-II多任务通信、μC/OS-II内存管理、Linux下交叉编译工具链的建立和定制Linux内核及制作文件系统,共计5个应用实例。 (4)基于Linux下的C/C++程序设计应用实例部分:具体包括独立按键应用、矩阵键盘应用、A/D转换应用、LED控制应用、LCD驱动应用、触摸屏控制应用、I2C总线器件控制应用、网络通信应用、U盘读写应用、SD卡读写应用、蜂鸣器控制应用、电机控制应用、CMOS摄像头应用、USB接口摄像头应用和音频播放应用,共计16个应用实例。 (5)嵌入式系统常用传感器扩展应用实例部分:具体包括超声波传感器应用、温湿度传感器应用、光照强度传感器应用、三轴数字加速度计应用、陀螺仪运动传感器应用和人体红外传感器应用,共计6个应用实例。 在本书的各个实例应用中为读者介绍了相关的硬件接口原理图、设备驱动程序代码、集成开发环境等相关内容;同时,本书还附带有提供完整的开发工具、Bootloader、内核、文件系统、外设驱动等应用实例源代码的网络光盘,读者可登录华信教育资源网(www.hxedu.com.cn)免费注册后下载,有利于加速读者本身开发设计能力的培养。 本书定位于从事嵌入式系统开发和设计的初学人员,作者在编写本教材的过程中,精选内容、力求符合从事嵌入式系统开发和设计的初学者的特点,做到概念清晰、理论联系实际,以便使读者能在较短的时间内迅速掌握相关知识,起到事半功倍的作用。 在本书编写的过程中,得到了大连理工大学吴国伟教授、赖晓晨副教授、邱铁副教授和林驰老师对书稿撰写的指导和支持。研究生罗龙、余亮、丁宇心和王亚维等人对本书的完成也做出了贡献,在此对他们表示感谢。另外感谢电子工业出版社的编辑,在他们的大力支持下使本书能够很快地出版发行。本书参考和引用了有关方面的文献和资料,同样对参考文献中所有的作者深表谢意。 由于嵌入式系统设计的迅速发展和普及,嵌入式应用的新技术、新成果不断涌现和更新,书中难免存在错误、疏漏和不妥之处,还希望广大读者能够多加谅解,并及时联系作者,以期在后续版本中进行完善。 编 者 2015年5月
目 录 概述 1 0.1 嵌入式综合实训平台简介 1 0.2 性能指标及功能 1 第一部分 嵌入式系统结构(无操作系统)应用实例 实例1 ADS1.2集成开发环境的安装与应用 6 1.1 使用ADS创建用户工程 6 1.1.1 建立一个工程 6 1.1.2 编译和链接工程 9 1.2 使用HJTAG进行代码调试 13 实例2 外部按键中断的应用 15 2.1 实例目的和内容 15 2.2 实例原理 15 2.2.1 S3C2440异常中断概述 16 2.2.2 异常中断工作原理 16 2.3 程序编写 17 实例3 RS-232串行接口通信应用 19 3.1 实例目的和内容 19 3.2 实例原理 19 3.2.1 标准RS-232C串行接口简介 19 3.2.2 相关寄存器介绍 20 3.3 程序编写 24 实例4 基于I2C总线通信的器件应用 31 4.1 实例目的和内容 31 4.2 实例原理 31 4.2.1 I2C总线及应用电路 31 4.2.2 相关寄存器介绍 32 4.3 程序编写 33 实例5 LED指示灯驱动应用 39 5.1 实例目的和内容 39 5.2 实例原理 40 5.2.1 LED及应用电路 40 5.2.2 相应寄存器介绍 40 5.3 程序编写 41 实例6 LCD图片显示应用 44 6.1 实例目的和内容 44 6.2 实例原理 44 6.2.1 LCD及应用电路 44 6.2.2 相关寄存器介绍 47 6.3 程序编写 50 实例7 蜂鸣器驱动应用 58 7.1 实例目的和内容 58 7.2 实例原理 58 7.2.1 蜂鸣器及应用电路 58 7.2.2 相关寄存器介绍 59 7.3 程序编写 61 实例8 直流电机驱动应用 64 8.1 实例目的和内容 64 8.2 实例原理 64 8.2.1 直流电机及应用电路 64 8.2.2 相关寄存器介绍 65 8.3 程序编写 65 第二部分 嵌入式操作系统的应用实例 实例9 C/OS-II实时操作系统多任务调度 70 9.1 实例目的和内容 70 9.2 实例原理 70 9.3 程序编写 71 9.4 实例步骤 74 实例10 C/OS-II多任务通信 77 10.1 实例目的和内容 77 10.2 实例原理 77 10.3 程序编写 78 10.3.1 信号量 78 10.3.2 消息队列 81 10.3.3 消息邮箱 83 10.4 实例步骤 85 实例11 C/OS-II内存管理 87 11.1 实例目的和内容 87 11.2 实例原理 87 11.3 程序编写 88 11.4 实例步骤 91 实例12 Linux下交叉编译工具链的建立 92 12.1 实例目的和内容 92 12.2 实例步骤 92 实例13 定制Linux内核及制作文件系统 96 13.1 实例目的和内容 96 13.2 实例步骤 96 13.2.1 配置内核 96 13.2.2 编译内核 114 13.2.3 制作实训平台文件系统映像 115 13.2.4 下载并烧写内核及文件系统镜像 117 第三部分 基于Linux下的C/C++程序设计应用实例 实例14 Linux下独立按键应用 122 14.1 实例目的和内容 122 14.2 实例原理 122 14.3 程序编写 122 14.3.1 驱动程序 122 14.3.2 测试程序 125 14.4 实例步骤 126 实例15 Linux下矩阵键盘应用 127 15.1 实例目的和内容 127 15.2 实例原理 127 15.3 程序编写 128 15.3.1 驱动程序 128 15.3.2 测试代码 133 15.4 实例步骤 134 实例16 Linux下A/D转换应用 136 16.1 实例目的和内容 136 16.2 实例原理 136 16.3 程序编写 138 16.3.1 驱动程序 138 16.3.2 测试程序 142 16.4 实例步骤 142 实例17 Linux下LED控制应用 144 17.1 实例目的和内容 144 17.2 实例原理 144 17.3 程序设计 145 17.3.1 驱动程序 145 17.3.2 测试程序 146 17.4 实例步骤 147 实例18 Linux下LCD驱动应用 149 18.1 实例目的和内容 149 18.2 实例原理 149 18.3 程序编写 150 18.3.1 驱动程序 150 18.3.2 测试程序 152 18.4 实例步骤 152 实例19 Linux下触摸屏控制应用 154 19.1 实例目的和内容 154 19.2 实例原理 154 19.3 程序编写 155 19.4 实例步骤 159 实例20 Linux下I2C总线器件控制应用 160 20.1 实例目的和内容 160 20.2 实例原理 160 20.3 程序编写 160 20.4 实例步骤 162 实例21 Linux下USART串行应用 164 21.1 实例目的和内容 164 21.2 实例原理 164 21.3 程序编写 165 21.4 实例步骤 170 实例22 Linux下网络通信应用 172 22.1 实例目的和内容 172 22.2 实例原理 172 22.3 程序编写 174 22.4 实例步骤 176 实例23 Linux下U盘读写应用 179 23.1 实例目的和内容 179 23.2 实例原理 179 23.3 实例步骤 180 23.3.1 简介 180 23.3.2 U盘挂载测试 180 23.3.3 U盘读写测试 181 实例24 Linux下SD卡读写应用 182 24.1 实例目的和内容 182 24.2 实例原理 182 24.3 实例步骤 183 实例25 Linux下蜂鸣器控制应用 184 25.1 实例目的和内容 184 25.2 实例原理 184 25.3 程序编写 184 25.3.1 驱动程序 184 25.3.2 测试程序 187 25.4 实例步骤 190 实例26 Linux下电机控制应用 192 26.1 实例目的和内容 192 26.2 实例原理 192 26.3 程序编写 192 26.3.1 驱动程序 192 26.3.2 测试程序 195 26.4 实例步骤 198 实例27 Linux下CMOS摄像头应用 200 27.1 实例目的和内容 200 27.2 实例原理 200 27.3 实例步骤 202 实例28 Linux下USB接口摄像头应用 203 28.1 实例目的和内容 203 28.2 实例原理 203 28.3 实例步骤 204 实例29 Linux下音频播放应用 205 29.1 实例目的和内容 205 29.2 实例原理 205 29.3 实例步骤 205 29.3.1 简介 205 29.3.2 移植MadPlay 206 29.3.3 下载运行 209 第四部分 常用传感器扩展应用实例 实例30 超声波传感器应用 212 30.1 实例目的和内容 212 30.2 实例原理 212 30.3 程序编写 213 30.3.1 驱动程序 213 30.3.2 测试程序 215 30.4 实例步骤 216 实例31 温湿度传感器应用 218 31.1 实例目的和内容 218 31.2 实例原理 218 31.3 程序编写 221 31.3.1 驱动程序 221 31.3.2 测试程序 224 31.4 实例步骤 225 实例32 光照强度传感器应用 227 32.1 实例目的和内容 227 32.2 实例原理 227 32.3 程序编写 229 32.3.1 驱动代码 229 32.3.2 测试代码 234 32.4 实例步骤 235 实例33 三轴数字加速度计应用 237 33.1 实例目的和内容 237 33.2 实例原理 237 33.3 程序编写 242 33.3.1 驱动代码 242 33.3.2 测试代码 248 33.4 实例步骤 251 实例34 陀螺仪运动传感器应用 253 34.1 实例目的和内容 253 34.2 实例原理 253 34.3 程序编写 254 34.3.1 驱动代码 254 34.3.2 测试代码 261 34.4 实例步骤 262 实例35 人体红外传感器应用 264 35.1 实例目的和内容 264 35.2 实例原理 264 35.3 程序编写 265 35.3.1 驱动代码 265 35.3.2 测试代码 267 35.4 实例步骤 268 参考文献 270
http://www.hxedu.com.cn/hxedu/fg/book/bookinfo.html?code=TN262850