嵌入式系统课程设计
作者 : 陈虎 吴涛 张安定
出版日期 : 2008-07-09
ISBN : 7-111-23914-7
定价 : 28.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 234
开本 : 16开
原书名 :
原出版社:
属性分类: 教材
包含CD :
绝版 :
图书简介

本书以作者近年来的嵌入式系统分析和设计经验为基础,结合华南理工大学的教学实践,精心选择了10个课程设计案例,覆盖了嵌入式系统课程的主要内容。

  主要特点
  ●实战性强:本书的主要内容均来自实际应用系统,其中包括嵌入式Linux关键源代码的分析,实际芯片器件资料导读,以便于读者掌握实际系统的关键技术。
  ●覆盖面广:本书既包含了对嵌入式系统SoC硬件原理、嵌入式Linux等基本结构的分析,同时重点介绍了多种实用系统的设计和实现方法。
  ●软硬件结合:本书突出了嵌入式系统中软硬件结合的技术特点,既包含了对相关硬件系统的介绍和分析,也包含了对相应控制软件的设计指导。
  ●遵循软件工程方法:本书以软件工程方法为指导,介绍了嵌入式系统需求分析、总体设计、详细设计、测试等多个环节,帮助读者建立比较完整的嵌入式系统开发流程观念。

图书特色

图书前言

嵌入式系统依托微电子技术、操作系统等相关技术的快速发展,目前已经渗透到日常生活、工业生产、通信、交通运输工具等众多领域,极大地推动了信息社会的构建和发展。嵌入式系统技术涵盖了计算机、电子与通信、自动控制等众多领域,已经成为高等院校计算机及相关专业的一门重要课程,也是相关领域研究、应用和开发专业技术人员必须掌握的重要技术之一。
  为了适应嵌入式技术的发展,当前国内众多院校都开设了这门课程,但是教学目标和内容各有特色和侧重。作者在近年的嵌入式系统教学实践和研究开发过程中深刻地体会到,嵌入式系统课程教学必须注意两个问题:一是如何通过嵌入式系统的教学让学生建立起完整的计算机系统运行框架;二是如何培养学生设计和实现嵌入式系统的能力。
  作为一个完整的计算机系统,嵌入式系统包括微处理器、存储器、外围电路等硬件结构,以及操作系统、应用程序等软件系统,是经典计算机理论课程(包括计算机原理、计算机体系结构、操作系统)的具体物化。通过对嵌入式系统内部软硬件实现原理的分析,可以让学生从比较抽象的原理和概念出发,认识计算机系统运行的真实过程,从而建立完整的计算机系统运行框架,加深对计算机系统原理的理解和认识。为了达到这个目标,本书深入剖析了实际系统的指令集体系结构、中断、系统引导程序、操作系统内核的源代码等,以帮助读者深入理解实际计算机系统的运行原理。
  嵌入式系统是一门应用性非常强的课程。这要求读者能从基础理论出发,根据应用的具体特点,阅读和分析相关的资料、源代码和器件手册,提出相应的系统解决方案,自主设计和实现软硬件系统,自主构造交叉编译工具链和定制操作系统内核,切实提高解决问题的能力。为达到这个目标,本书以生产者-消费者问题、心跳检测、功耗检测、CAN总线控制器和数码相框等实际案例为基础,全面介绍嵌入式系统设计中常用的关键技术,包括多线程程序设计、网络程序设计、AD转换、通信接口设计、图形接口设计、外部大容量半导体存储器等方面,包含了对实际器件资料、系统设计和源代码的分析,提供了比较丰富的嵌入式系统课程设计素材,有助于读者提高实际系统的分析和设计能力。
  作者根据近年嵌入式系统设计教学和工程实践的经验体会到,只通过书本难以让学生提高嵌入式系统的实际设计能力。传统的以课堂讲授为主,以教师为中心的教学和学习方法会使学生感到枯燥和抽象,难以锻炼嵌入式系统设计所必需的对器件手册、源代码和相关领域的自学能力,难以提高嵌入式系统的实际设计能力。因此,希望读者通过结合理论课程的学习,在自主阅读嵌入式系统相关材料、分析应用需求和设计实际系统的过程中,理解嵌入式系统基本工作原理、一般设计流程和常用的设计技巧,具备初步的系统设计能力。
  随着嵌入式系统技术的发展,目前嵌入式系统的开发已经从传统的单片机和汇编语言程序设计发展为基于高性能片上系统(System-on-Chip, SoC)硬件平台,广泛采用嵌入式操作系统和交叉开发工具,进行软硬件联合设计和测试。本书主要以ARM处理器和嵌入式Linux操作系统为主要软硬件平台,其中少数课程设计需要采用一些常见外围芯片,实验环境相对简单,通用性较强,大多数嵌入式系统实验室都可以满足要求。
  作者根据教学实践,针对嵌入式系统设计课程体系的特点,总结和提炼出9个课程设计题目。这些题目既包含了基本的嵌入式系统原理和设计方法,也提供了多个常见的嵌入式应用系统设计范例。它们可以分成嵌入式微处理器系统、嵌入式系统软件开发、嵌入式操作系统和综合应用四个方面。在“嵌入式微处理器系统”部分中,通过对Linux操作系统中的ARM汇编语言程序和系统引导程序的分析,着重介绍ARM系列微处理器的指令系统,SoC芯片的I/O引脚配置、时钟配置、存储器接口配置等关键技术。在“嵌入式系统软件开发”部分中,以生产者-消费者问题、心跳检测、CAN总线控制器三个技术专题为实例,介绍嵌入式系统中常用的一些应用软件开发方法,包括多线程程序设计、网络程序设计、外部通信端口控制等。在“嵌入式操作系统”部分中,通过对嵌入式Liunx系统交叉开发工具链和内核定制,以及驱动程序分析两个设计案例,使得读者能比较全面地掌握嵌入式Linux系统环境配置、内核定制和驱动程序设计原理。“综合应用”环节通过对典型嵌入式应用系统的完整介绍,为读者提供了一个全面的嵌入式系统开发场景。这部分包含功耗监测系统、网络门禁系统和数字相框三个典型嵌入式产品。其中功耗检测系统包含系统分析、外围硬件电路设计、A/D转换、网络、多线程等多种设计要素;网络门禁系统包含外部设备连接、嵌入式系统安全、与控制主机数据库连接等关键技术问题;数字相框部分介绍了需求分析、软硬件总体设计、图形界面程序开发、外部大容量半导体存储器访问、测试等关键技术和相应的解决方案。通过对上述课程设计的实践,读者能够循序渐进地理解嵌入式系统的基本设计方法,掌握一般设计流程和常用工具,并接触到当前嵌入式系统设计的典型应用。本书从第2章开始,每一章均是一个课程设计题目,包括课程设计的目的、要求、相关知识、课程设计和扩展,书后附有参考程序和参考文献。本书在编写过程中参考了近年来出版的最新书籍和文献资料,以及国内外著名大学的教学课件,可以作为高等院校计算机、电子信息、通信、自动控制及相关专业的配套课程设计教材,也可作为从事嵌入式系统设计工程人员的参考资料。作者在教学中也利用这些素材做了一些尝试,并取得了比较好的教学效果。
  本书由陈虎构思与统稿。第1~5章、第9~11章由陈虎编写,第6~8章由吴涛和张安定编写。本书的大部分内容在华南理工大学计算机软件学院的“嵌入式系统设计”课程中使用过,陈辉、周成、夏能波、蔡嘉立等同学对题目的设计、文字内容的完善提出了建议。在这里向参与过教学过程,并给予帮助的同学们表示衷心感谢。本书中部分内容取材于亿道公司和博创公司的嵌入式系统材料,在此向他们表示感谢。
  本书的编写得到了奚建清教授、齐德昱教授、张平健副教授、毕盛老师的大力帮助。他们对本书的构思,写作方法等提出了宝贵的意见,使作者受益匪浅。
  嵌入式系统的发展与知识的更新速度很快,限于作者的学术水平,本书难免有错误与不妥之处,诚恳地希望读者批评指正,共同提高嵌入式系统课程设计的教学水平。
  作  者
  于华南理工大学计算机科学与工程学院
  2008年3月

封底文字

本书以作者近年来的嵌入式系统分析和设计经验为基础,结合华南理工大学的教学实践,精心选择了10个课程设计案例,覆盖了嵌入式系统课程的主要内容。 主要特点 ●实战性强:本书的主要内容均来自实际应用系统,其中包括嵌入式Linux关键源代码的分析,实际芯片器件资料导读,以便于读者掌握实际系统的关键技术。 ●覆盖面广:本书既包含了对嵌入式系统SoC硬件原理、嵌入式Linux等基本结构的分析,同时重点介绍了多种实用系统的设计和实现方法。 ●软硬件结合:本书突出了嵌入式系统中软硬件结合的技术特点,既包含了对相关硬件系统的介绍和分析,也包含了对相应控制软件的设计指导。 ●遵循软件工程方法:本书以软件工程方法为指导,介绍了嵌入式系统需求分析、总体设计、详细设计、测试等多个环节,帮助读者建立比较完整的嵌入式系统开发流程观念。

图书目录

专家指导委员会
丛书序言
前言
第1章  嵌入式系统课程教学、实验与
课程设计的关系 1
1.1  嵌入式系统课程的教学特点 1
1.2  嵌入式系统实验教学与课程设计的关系 2
1.3  嵌入式系统课程设计的主要内容 2
1.4  课程设计要求及评分标准 4
第2章  ARM体系结构与汇编程序源
代码分析 7
2.1  课程设计目的 7
2.2  课程设计要求 7
2.3  ARM处理器系列简介 7
2.4  ARM处理器的模式和寄存器结构 9
2.5  ARM处理器的指令系统 11
2.5.1  数据操作指令 11
2.5.2  比较指令 12
2.5.3  转移指令 13
2.5.4  存储器访问指令 13
2.6  ARM的中断结构 14
2.7  Linux中ARM汇编语言程序段分析 16
2.7.1  set_bit函数源代码分析 16
2.7.2  保存和恢复用户现场 17
2.7.3  memzero源代码分析 19
2.8  总结与问题 24
第3章  嵌入式系统引导程序分析 25
3.1  课程设计目的 25
3.2  课程设计要求 25
3.3  嵌入式系统引导程序 25
3.4  引导程序分析 27
3.4.1  IO引脚初始化 28
3.4.2  配置PXA255系统运行时钟 32
3.4.3  配置静态存储器和CF卡接口 33
3.4.4  配置SDRAM接口 36
3.5  本章总结和问题 38
第4章  生产者-消费者问题 41
4.1  课程设计目的 41
4.2  课程设计要求 41
4.3  Linux操作系统中的多线程API原语 41
4.4  线程间同步机制 43
4.5  生产者-消费者实例 47
4.6  总结与改进 50
第5章  心跳检测 53
5.1  课程设计目的 53
5.2  课程设计要求 53
5.3  心跳检测的基本原理 53
5.4  Linux下的socket程序设计 54
5.5  心跳检测系统的设计与分析 55
5.5.1  外围节点的设计 55
5.5.2  主控节点的设计 56
5.5.3  报文格式 57
5.5.4  通信协议的时间分析 58
5.6  总结与改进 59
第6章  CAN总线控制器 61
6.1  课程设计目的 61
6.2  课程设计要求 61
6.3  CAN总线简介 61
6.3.1  CAN总线的电气特性 62
6.3.2  CAN通信协议格式 62
6.4  CAN总线控制器SJA1000 65
6.4.1  SJA1000硬件结构 65
6.4.2  SJA1000外部引脚定义 66
6.4.3  SJA1000内部寄存器定义 67
6.4.4  SJA1000的验收滤波机制 68
6.5  CAN总线节点硬件结构 70
6.6  CAN总线节点软件设计 71
6.6.1  SJA1000初始化 72
6.6.2  发送程序 73
6.6.3  接收程序 75
6.7  总结与改进 77
第7章  嵌入式系统开发环境和Linux内核
的构建 79
7.1  课程设计目的 79
7.2  课程设计要求 79
7.3  嵌入式系统开发模式 79
7.4  创建交叉编译工具链 80
7.4.1  创建编译环境 81
7.4.2 创建binutils二进制开发工具集合 82
7.4.3  创建gcc交叉编译器 83
7.4.4  创建glibc 83
7.4.5  建立gcc C++编译器 84
7.5  开发主机和嵌入式系统之间的通信 85
7.5.1  minicom终端 85
7.5.2  BOOTP协议 85
7.5.3  TFTP协议 86
7.5.4  NFS网络共享 87
7.6  嵌入式Linux操作系统配置与编译 88
7.6.1  Linux内核重编译命令 88
7.6.2  Linux内核配置选项 89
7.7  总结与练习 91
第8章  A/D转换器驱动程序分析 93
8.1  课程设计目的 93
8.2  课程设计要求 93
8.3  Linux下设备驱动程序简介 93
8.3.1  设备分类 94
8.3.2  设备文件和设备号 94
8.3.3  设备文件的操作数据结构 95
8.3.4  驱动程序的注册与注销 96
8.3.5  设备的轮询与中断 97
8.3.6  设备驱动程序的其他问题 97
8.4  A/D转换驱动程序的分析 97
8.4.1  驱动程序的结构 98
8.4.2  S3C2410嵌入式处理器中的A/D
转换器 98
8.4.3  A/D转换器的设备注册和注销 100
8.4.4  A/D转换驱动程序的文件访问
功能实现 102
8.4.5  驱动程序在嵌入式Linux系统中
的安装和使用 107
8.5  总结与改进 108
第9章  功耗检测系统 111
9.1  课程设计目的 111
9.2  课程设计要求 111
9.3  功耗检测系统的基本构成 111
9.4  功耗检测的电流传感器 112
9.5  A/D转换的软件操作 113
9.6  功耗检测设备和控制主机之间的
通信协议 114
9.7  嵌入式检测设备的软件结构 117
9.8  控制主机的软件结构 119
9.9  总结与改进 123
第10章  网络门禁系统 125
10.1  课程设计目的 125
10.2  课程设计要求 125
10.3  网络门禁系统的需求分析 125
10.4  磁条读写器原理与使用 127
10.4.1 磁卡基本原理 127
10.4.2  磁条读写器的原理 128
10.4.3  磁条读写器的编程接口 129
10.5  嵌入式门禁控制器 129
10.5.1  主控CPU的硬件结构 129
10.5.2  网络接口 131
10.5.3  门禁控制器软件结构 134
10.6  网络安全机制 136
10.6.1  网络安全技术简介 136
10.6.2  门禁系统中的网络安全方案 138
10.7  数据传输通信协议设计 140
10.8  控制主机软件结构 144
10.8.1  控制主机软件总体结构 144
10.8.2  在线部分软件结构 145
10.8.3  控制主机数据库系统设计 146
10.9  总结与改进 147
第11章  数字相框 149
11.1  课程设计目的 149
11.2  课程设计要求 149
11.3  数字相框的需求分析 149
11.3.1  数字相框产品的主要特点和
设计要求 149
11.3.2  半导体存储卡的选择 150
11.3.3  数字相框软硬件平台的选择 151
11.4  数字相框的软件总体设计 153
11.5  基于Qt的图形界面程序设计 155
11.5.1  Qt简介和信号/槽机制 155
11.5.2  数字相框中的对象通信机制 157
11.5.3  浏览界面的实现方案 158
11.6  CF卡的连接 160
11.6.1  CF卡的基本原理 160
11.6.2  CF卡的加载 161
11.7  控制按钮的实现 162
11.8  测试 164
11.8.1  软件测试的基本原理 164
11.8.2  数字相框的测试计划 165
11.9  总结与改进 167
附录A  第2章参考答案 169
附录B  PXA255中若干寄存器的说明 173
附录C  生产者、消费者源代码 183
附录D  心跳检测系统源代码 187
附录E  SJA1000的寄存器说明 201
附录F  Linux的命令和配置内容 209
附录G  Linux内核中常用的内部函数接口 219
附录H  功耗检测终端源代码 227
参考文献 234

教学资源推荐
作者: [美] 琳达·纳尔(Linda Null) 朱莉娅·洛博( Julia Lobur) 著宾夕法尼亚州立大学
作者: Chris Bowen
作者: (美)Jonathan W.Valvano
参考读物推荐
作者: 国际商业机器中国有限公司
作者: [美]阿诺德·S.伯格(Arnold S.Berger) 著
作者: [美] 沃尔弗拉姆·多纳特(Wolfram Donat) 著