
嵌入式系统技术是高等院校通信工程、电子信息工程、测控、自动化、计算机科学等专业的一门重要的专业课程,本书配合培养应用型本科专业人才的教学目标而编写,具有鲜明的工程教育特色。全书共5章,包括理论篇和实验篇,主要内容包括:嵌入式系统开发入门、嵌入式Linux开发环境的搭建、Linux编程、ARM Linux设备驱动程序开发、基于ICETEK-AM3359-A的嵌入式系统实验。本书内容翔实,简明扼要,实践性较强,使读者能在较短时间内入门并上手操作,从而对课程产生浓厚的兴趣,并掌握嵌入式系统的实践与开发方法,提高创新能力。本书提供配套的电子课件、习题参考答案和实验程序源代码。本书可作为高等院校通信工程、电子信息工程、测控、自动化、计算机科学等专业的嵌入式系统技术课程的教材,也可作为相关领域的工程技术人员的参考书籍。
前 言 嵌入式系统技术是高等院校通信工程、电子信息工程、测控、自动化、计算机科学等专业的一门重要的专业课程。为了适应高等院校正在开展的课程体系与教学内容的改革、促进应用型本科专业课程改革及工程教育的开展、掌握嵌入式系统的最新发展技术、探索适应21世纪人才培养的教学模式,编著者编写了这本《通信嵌入式系统技术与应用》教材。 随着芯片、软件、网络和传感器等技术的不断发展,嵌入式系统将成为未来社会的“数字基因”。如今,人类已经进入后PC时代,嵌入式系统技术已被广泛应用于科学研究、工程设计、军事技术,以及文艺、商业、体育等方面,成为后PC时代的主力军。与此同时,嵌入式Linux也在嵌入式领域蓬勃发展,它不仅继承了Linux的源码开放、内核稳定性强、软件丰富等特点,而且支持几乎所有的主流处理器和硬件平台。嵌入式硬件系统和Linux系统的有机结合成为后PC时代计算机最普遍的应用形式。嵌入式Linux技术在中国有巨大的发展潜力和市场需求,但是,嵌入式Linux本身有一定的局限性,即开发难度过大,企业需要具备较大的技术储备与较强的实力。这就要求Linux系统厂商在系统开发和应用的“平民化”方向上不断努力,以不断降低开发和使用Linux系统的门槛,不断推出简单易用的各种设计和参考工具,让企业能更便利地应用这些技术。嵌入式Linux属于一门交叉学科,并且是一门高起点的学科,它涵盖了微电子技术、电子信息技术、计算机软件和硬件等多个领域。另外,学习嵌入式Linux不仅需要具备相应的嵌入式开发板和软件,还需要有经验的人进行指导。目前国内大部分高等院校都很难达到这种要求,造成了目前国内嵌入式Linux开发人才极度缺乏的局面。很多希望学习嵌入式Linux的人已经具备了一定的硬件知识,并且对操作系统原理、数据结构等有一定程度的了解,但在Linux系统技术方面的起点较低。本教材的编写目标是为大学生和嵌入式系统技术的初学者提供一条捷径,在同硬件操作紧密结合的同时,学习嵌入式Linux的设计和开发。 随着ARM和DSP技术的不断发展,美国德州仪器(TI)公司推出了多款ARM和DSP芯片。另外,TI公司还在配套软件方面做出了巨大努力,推出了一整套开发支持系列的软件包,为开发系统种类繁多、功能复杂、性能强大的处理器提供了有效支持。北京瑞泰创新科技有限责任公司也相应推出了一系列TI芯片的开发板,这些设计几乎扩展了TI器件所有能扩展的外设接口,能提供全面的功能测试和性能评估。基于以上优点,本书采用北京瑞泰创新科技有限责任公司开发的基于ICETEK-AM3359-A的嵌入式系统实验箱作为第5章嵌入式系统实验部分的实验器材,ICETEK-AM3359-A是一款基于ARM-Cortex A8内核的嵌入式开发板,给使用者提供了良好的嵌入式设计参考。用户仅需去掉自己不需要的功能模块,就能形成自己的设计,而且在进行硬件设计的同时,还可以在开发板上进行软件开发。 与同类教材相比,本教材有如下特色。 ? 语言精练,内容翔实,易上手操作。 ? 包含多个嵌入式系统实验项目,具有鲜明的工程教育特色。 ? 启发学生进行探究式学习与实践,提高学生的创新能力。 本书共5章,分为2篇,上篇是理论篇,包括第1~4章;下篇是实验篇,即第5章。 ? 第1章 嵌入式系统开发入门:对嵌入式系统、ARM微处理器、嵌入式软件开发流程和嵌入式Linux开发进行介绍。 ? 第2章 嵌入式Linux开发环境的搭建:包含系统概述、Linux开发主机的构建、嵌入式交叉编译环境的构建和建立开发主机与嵌入式系统的通信连接。 ? 第3章 Linux编程:详细介绍Linux下的C语言编程、Linux编程初步、进程控制、进程间通信、多线程程序设计和嵌入式网络程序设计。 ? 第4章 ARM Linux设备驱动程序开发:包含设备驱动概述、字符设备驱动程序编写、块设备驱动程序编写、中断编程和键盘驱动实现。 ? 第5章 基于ICETEK-AM3359-A的嵌入式系统实验:包含实验设备的安装、基于ICETEK-AM3359-A的基础Linux实验和基于ICETEK-AM3359-A的嵌入式外部控制实验。 本书可作为高等院校通信工程、电子信息工程、测控、自动化、计算机科学等专业的嵌入式系统技术课程的教材,也可作为相关领域的工程技术人员的参考书籍。 在教学中可根据教学对象和学时等具体情况对书中的内容进行选择性讲解,也可以进行适当扩展,参考学时为32~48学时。本书提供配套的电子课件、习题参考答案和实验程序源代码,请登录华信教育资源网(http://www.hxedu.com.cn),注册后免费下载,另外,读者若想获得本书实验部分对应的实验器材信息和更详细的技术资料,则请联系北京瑞泰创新科技有限责任公司http://www.realtimedsp.com.cn。 本书由上海第二工业大学的戴虹和北京瑞泰创新科技有限责任公司的技术总监尚奎共同编著,其中,戴虹负责第1~4章的编写,尚奎负责第5章的编写,全书由戴虹统稿与定稿。上海第二工业大学计算机与信息学院院长左健存教授在百忙之中对全书进行了审阅,我校通信工程专业的孙然、程昊、陈良宇和徐雯进行了本书配套电子课件的制作和整理。本书中的实验所用的器材(基于ICETEK-AM3359-A的嵌入式系统实验箱)是由北京瑞泰创新科技有限责任公司开发和提供的,本书的编写得到了该公司技术总监尚奎先生、销售经理张晓燕女士及其他技术人员的大力支持,在此深表谢意!在本书的编写过程中,上海第二工业大学通信工程教研室的张华老师、李蓓蓓老师、徐弘萱老师提出了许多宝贵意见,向大家表示感谢!电子工业出版社的王晓庆编辑为本书的出版做了大量工作,在此一并表示感谢! 本书的出版获得了上海市属高校应用型本科专业建设基金(基金编号为B50YC180000-2)的资助,在此为提供资助的上海第二工业大学应用型本科试点专业—通信工程专业的相关负责人表示衷心的感谢! 嵌入式系统技术发展迅速、日新月异,由于作者学识有限,书中难免有不足之处,望广大读者批评指正。作者邮箱为daihong@sspu.edu.cn。 编著者 2021年1月
目 录 上篇 理论篇 第1章 嵌入式系统开发入门 3 1.1 嵌入式系统介绍 3 1.1.1 嵌入式系统概述 3 1.1.2 嵌入式系统的组成 4 1.1.3 几种主流嵌入式系统的分析 6 1.2 ARM介绍 7 1.2.1 ARM微处理器简介 7 1.2.2 ARM微处理器的选择 11 1.2.3 ARM9的主要特点 12 1.2.4 ARM Cortex-A8微处理器的技术特点 14 1.3 嵌入式软件开发流程 15 1.3.1 嵌入式系统开发流程概述 15 1.3.2 嵌入式软件开发概述 16 1.4 嵌入式Linux开发介绍 22 1.4.1 Linux历史 22 1.4.2 Linux作为嵌入式系统的优势 22 1.4.3 如何学习Linux 23 1.4.4 Linux开发环境 24 1.4.5 Gcc编译器 25 1.4.6 GNU Make介绍 26 1.4.7 Gdb调试工具 28 本章习题 31 第2章 嵌入式Linux开发环境的搭建 33 2.1 系统概述 33 2.1.1 系统需求 33 2.1.2 软件开发环境概述 33 2.2 Linux开发主机的构建 34 2.3 嵌入式交叉编译环境的构建 35 2.3.1 交叉编译工具链介绍 35 2.3.2 构建ARM Linux交叉编译工具链 35 2.4 建立开发主机与嵌入式系统的通信连接 43 2.4.1 串口通信 43 2.4.2 以太网通信 45 2.4.3 与嵌入式系统交换数据 49 本章习题 50 第3章 Linux编程 51 3.1 Linux下的C语言编程 51 3.1.1 C语言简单回顾 51 3.1.2 Linux下的C语言编程环境概述 51 3.1.3 Gcc编译器 52 3.1.4 Gdb调试器 58 3.1.5 Make工程管理器 64 3.1.6 使用autotools 69 3.2 Linux编程初步 74 3.2.1 系统调用及用户编程接口(API) 74 3.2.2 Linux中的文件及文件描述符概述 76 3.2.3 不带缓存的文件I/O操作 76 3.2.4 嵌入式Linux串口应用开发 89 3.2.5 标准I/O开发 98 3.3 进程控制 105 3.3.1 Linux进程概述 105 3.3.2 Linux进程控制编程 108 3.4 进程间通信 125 3.4.1 Linux进程间通信概述 125 3.4.2 管道通信 126 3.4.3 信号通信 135 3.4.4 共享内存 145 3.4.5 消息队列 147 3.5 多线程程序设计 151 3.5.1 Linux线程概述 151 3.5.2 线程实现 153 3.6 嵌入式网络程序设计 167 3.6.1 TCP/IP协议概述 167 3.6.2 网络基础编程 171 3.6.3 网络高级编程 182 3.6.4 ping源码分析 186 本章习题 200 第4章 ARM Linux设备驱动程序开发 201 4.1 设备驱动概述 201 4.1.1 设备驱动程序简介及驱动模块 201 4.1.2 设备文件分类 202 4.1.3 设备号 202 4.1.4 驱动层次结构 202 4.1.5 设备驱动程序与设备的接口 203 4.1.6 设备驱动程序的特点 203 4.2 字符设备驱动程序编写 204 4.2.1 字符设备驱动程序编写流程说明 204 4.2.2 重要数据结构 204 4.2.3 设备驱动程序的主要组成 205 4.2.4 /proc文件系统 210 4.3 块设备驱动程序编写 211 4.3.1 块设备驱动程序描述符 211 4.3.2 块设备驱动程序的编写流程 211 4.4 中断编程 218 4.5 键盘驱动实现 219 4.5.1 键盘工作原理 219 4.5.2 键盘驱动综述 221 4.5.3 键盘驱动流程 221 本章习题 229 下篇 实验篇 第5章 基于ICETEK-AM3359-A的嵌入式系统实验 233 5.1 实验设备的安装 233 5.1.1 实验开发环境的设置 233 5.1.2 ICETEK-AM3359-A教学实验箱的连接 233 5.2 ICETEK-AM3359-A的基础Linux实验 234 5.2.1 实验1 LED控制实验 234 5.2.2 实验2 按键控制实验 235 5.2.3 实验3 驱动模块编写实验 237 5.2.4 实验4 GPIO控制实验 239 5.2.5 实验5 内存设备模块应用实验 241 5.2.6 实验6 LCD显示实验 243 5.2.7 实验7 触摸屏编程实验 244 5.2.8 实验8 QT编程实验 246 5.3 基于ICETEK-AM3359-A的嵌入式外部控制实验 248 5.3.1 实验1 液晶屏显示实验 248 5.3.2 实验2 键盘输入实验 251 5.3.3 实验3 音频信号发生实验 254 5.3.4 实验4 直流电机控制实验 257 5.3.5 实验5 步进电机控制实验 261 5.3.6 实验6 交通灯控制综合实验 264 5.3.7 实验7 单路模数(A/D)转换实验 266 5.3.8 实验8 单路数模(D/A)转换实验 269 参考文献 272
http://www.hxedu.com.cn/hxedu/fg/book/bookinfo.html?code=G0375270