资 源 简 介
嵌入式系统设计与应用 基于ARM Cortex-A8和Linux__王剑,刘鹏,胡杰,文汉云_北京:清华大学出版社2017年的新书内容简介本书选择当前嵌入式系统领域里具有代表性的 ARM Cortex-A8处理器和嵌人式 Linux操作系统作为分析对象,从嵌入式系统的发展历史和特点出发,对A8嵌入式处理器的体系结构、存储系统、中断系统ARM指令集和S5PV210微处理器进行详细介绍。在此基础上,阐述 ARM-linux内核, Linux文件系统、Linux移植及调试方法、驱动程序的设计等内容;选择Qt图形界面程序和 sQLite数据库这两个有代表性的嵌入式应用软件进行介绍;介绍传统嵌入式系统的设计方法和引入了“协同设计”概念的嵌入式系统设计方法,并介绍三个嵌入式系统应用案例以增强读者的理解。本书可以作为高等学校计算机、电子、电信类专业的教材,也可以作为嵌入式开发相关人员的参考用书。本书封面贴有清华大学出版社防伪标签,无标签者不得销售。版权所有侵权必究。侵权举报电话:010-6278298913701121933图书在版编目(CIP)数据嵌入式系统设计与应用:基于 ARM Cortex-A8和Lnux/王剑等主编.-北京:清华大学出版社,2017电子设计与嵌入式开发实践丛书)ISBN978-7-302-45806-7Ⅰ.①嵌…Ⅱ.①王…Ⅲ.①微型计算机一系统设计ⅣN.①TP360.21中国版本图书馆CP数据核字(2016)第291652号责任编辑;刘星梅栾芳封面设计:刘键责任校对:焦丽丽责任印制:杨艳出版发行:清华大学出版补网址:1m:www.mp.m.cm,htp:www.well.com地址:北京清华大学学研大厦A座邮编;100)84社总机:01062770175邮购:01062786544投稿与读者服务010-62776969, service(a tup tsinghua. edu. en质量反馈:010-6272015,zhiliang@tup.tsinghua.edu.cn课件下载:hp:/www.tup.com.cn,10-62795954印刷者:北京富博印刷有限公司装订者:北京市密云县京文制本装订厂经销:全国新华书店开本:185mmx26mm印张:24.5字数:594千字版次:2017年2月第1版印次:2017年2月第1次印刷印数:1-2000定价:59.00元产品编号:06366501前言嵌入式计算机技术是21世纪计算机技术重要发展方向之一,应用领域十分广泛且增长迅速。据估计,未来十年95%的微处理器和65%的软件都将被应用于各种嵌人式系统中。技术的发展和生产力的提高离不开人才的培养。目前业界对嵌入式技术人才的需求十分巨大,尤其在迅速发展的电子、通信、计算机等领域,这种需求更为显著。另外,企业对嵌入式系统开发从业者的工程实践能力、经验要求也越来越重视。因此目前国内外很多专业协会和高校都在致力于嵌入式相关课程体系的建设,结合嵌入式系统的特点,在课程内容设计师资队伍建设、教学方法探索、教学条件和实验体系建设等方面都取得了较好成效。从国外嵌入式课程建设来看,2004年,ACM(美国计算机协会)和TEEE联合制订了新版的计算机学科的课程体系(2004版),其中一个主要改革就是将 Embedded System课程列为本科生的专业基础课,并且给出了基本课程体系。同时,美国卡内基梅隆大学、加州大学伯克利分校等国外高校也不断在完善他们的嵌人式教育体系,欧盟也推出了面向欧盟高校和企业的嵌入式研究计划,这些信息为编写适合计算机专业使用的“嵌入式系统”教材提供了指导和参考。从技术更新角度来看,近年来嵌入式系统技术得到了广泛应用和爆发性增长,普适计算、无线传感器、可重构计算、物联网、云计算等新兴技术的出现又为嵌入式系统技术的研究与应用注入了新的活力。这也对“嵌入式系统”课程教材的设计提出了更新更高的要求。从国内嵌入式系统教材来看,一是有部分嵌入式硬件系统仍然采用ARM9体系结构作为核心处理器架构,甚至还有ARM7体系结构,这不仅和市场脱节极其严重,也和高校与时俱进的教学理念产生神突;二是目前国内高校配合嵌入式系统理论教材的嵌人式系统实验实训平台普遍已经进入更新换代周期,根据调研发现,国内许多高校嵌入式实验平台多在2006年至2009年购入,普遍采用ARM7ARM9架构的核心处理器,至今已工作六年以上,在未来两年内将迎来实验设备普遍更换的潮流,而目前的教材仍然以老平台作为实践依据,这也形成了理论和实践的脱节,也要求嵌入式理论教材能够跟上实验实训要求的步伐;三是从应用角度来看,操作系统和应用软件近年来都取得较大发展,开源OS和APP的迅猛发展以及物联网与嵌入式系统的紧密结合也要求嵌入式教材尽可能保持技术的敏感度。在此前提下,本书对基于 Cortex-A8处理器架构和嵌入式 Linux的嵌入式系统进行了阐述。本书的特点如下。①参考了ACM&IEEE联合制订的计算机学科的课程体系(2004版)关于 EmbeddedForeword嵌入式無统设计与应用—基于 ARM Cortex-A8和 LinuxSystem的课程要求,并结合了国内高校计算机学科课程大纲的要求。参考资料主要来自近几年国内外出版的嵌人式相关刊物、ARM官网、嵌入式专业网站、著名嵌入式设备公司相关资料和编写小组近年来的科研项目与指导学生创新实践活动资料,具有较好的时效性和实用性。②采用ARMv7版本的 Cortex-A8处理器架构作为系统核心处理器架构,取代原有ARM7/ARM9处理器架构。ARM9架构作为国内嵌入式系统教学主要选择架构已经近十年,一方面市场上主流芯片已经难觅其踪,另一方面国内高校ARM9实验平台也已经普遍超期服役,在未来两年内将迎来实验设备普遍更换的高峰。在更新设备选择资源中,以Cortex-A8处理器架构的实验实训平台具有极高的性价比(良好的扩展性和众多嵌入式设备厂家支持)。 Cortex-A8处理器是ARM的第一款超标量处理器,具有提高代码密度和性能的技术,用于多媒体和信号处理的NEON技术,以及用于高效支持预编译和即时编译Java及运行时编译目标(RCT)技术。同时 Cortex-A8处理器架构目前属于技术上稳定的处理器架构,有较多相关的嵌人式实验平台可供选择。③增加Qt和 SQLite数据库相关知识,以满足日益增长的嵌入式系统UI设计与数据处理需求,更符合计算机学科特点和满足智能移动平台需要④从编写小组自身从事的科研项目和实践活动出发,选择具有一定实用价值,包含交叉学科知识,反映嵌人式系统与物联网技术结合的三个项目实例。这些实例不仅从理论上深化拓展嵌入式系统设计方法和理念,也从实践角度提出“碰到问题如何运用所学知识解决问题”的观点,促进学生学以致用思想的升华。本书受国家自然科学基金面上项目“随钻测量井下网络化光纤传感器及信息传输关键技术研究”(编号41372155)的支持。编写过程中,王剑负责第1、11章的编写和全书的统稿;刘鹏负责第2、3、4、9章的编写工作;胡杰负责第5、6章的编写工作;文汉云负责第10章的编写工作;孟真玮负责第7、8章的编写工作。叶玲对本书进行了审校工作。同时本书的编写也得到了朱文霞和深圳博嵌科教仪器有限公司的大力支持和帮助,在此表示衷心的感谢。本书参考了国内外的许多最新的技术资料,书末有具体的参考文献,有兴趣的读者可以查阅相关信息。本书配有电子课件,需要的读者可以登录清华大学出版社本书页面下载。限于编者水平有限,书中不妥之处在所难免,敬请广大读者批评指正并提出宝贵意见。作者2016年12月录第1章嵌入式系统概述11.1嵌入式系统简介………11.1.1嵌入式系统的产生1.1.2嵌入式系统的定义、特点和分类……………………………………………21.1.3嵌入式系统的两种应用模式………41.1.4嵌入式系统的典型组成1.2嵌入式微处理器61.2.1嵌入式微处理器简介61.2.2主流嵌入式微处理器81.3嵌入式操作系统…91.3.1嵌入式 Linux1.3.2 Windows CE1.3.3 Symbian1.3.4 Android……………………………………………………………121.3.5pC/OsⅡ………………………………………………………121.3.6 VxWorks……………………131.4嵌入式系统的应用领域和发展趋势……………………………………………131.4.1嵌入式系统的应用领域131.4.2嵌入式系统的发展趋势131.5本章小结……………………………………………………………14习题14第2章ARM处理器体系结构………………………………………………………152.1ARM处理器概述…………………………………………………152.1.1ARM处理器简介………………………152.1.2ARM体系结构发展…162.1.3ARM处理器系列主要产品19Contents」Ⅳ1嵌入式糸统设计与应用一基于 ARM Cortex-A8和Liux2.1.4ARM开发工具简介…………………………………………………242.2 Cortex-A8处理器架构…………………………………………………………262.3 Cortex-A8处理器工作模式和状态………302.3.1 Cortex-A8处理器工作模式………………302.3.2 Cortex-A8处理器状态2.4 Cortex-A8存储器管理…料,,,道……322.4.1ARM的基本数据类型……………………………………………322.4.2浮点数据类型322.4.3大/小端存储模式………………………………………………322.4.4寄存器组…332.4.5 Cortex-A8存储系统…………372.5 Cortex-A8异常处理………………432.5.1异常向量和优先级…432.5.2异常响应过程………………………………………………………442.5.3异常返回过程……““““,甲“开“452.5.4 Cortex-A8处理器S5PC100中断机制…………462.6本章小结………………………………………………………48习题48第3章ARM指令集…………………………………………………………493.1ARM指令集概述…493.1.1指令格式………………………………………………………493.1.2指令的条件码503.2ARM指令的寻址方式………………………………………………………513.2.1立即寻址513.2.2寄存器寻址…513.2.3寄存器间接寻址……………………………………………………513.2.4寄存器移位寻址…523.2.5变址寻址…………523.2.6多寄存器寻址…523.2.7相对寻址中*·“*:“““·“““*“““““““·“533.2.8堆栈寻址………………………………………………………………533.2.9块复制寻址……543.3ARM指令简介543.3.1跳转指令………………………………………………………………543.3.2数据处理指令………553.3.3程序状态寄存器处理指令………………………………………593.3.4加载/存储指令………………………………………603.3.5协处理器指令………………………………………………61目录3.3.6异常产生指令………623.4 Thumb指令简介………633.5ARM汇编语言编程简介633.5.1伪操作…………633.5.2伪指令…653.5.3汇语句格式……………………………………………………663.5.4;编语言的程序结构663.6C语言与汇编语言的混合编程…………………… , ,,, , ·当t673.6.1C程序中内嵌汇编……………………………………………………673.6.2汇编中访问C语言程序变量……………………………………673,6.3ARM中的汇编和C语言相互调用……………………………………683.7本章小结…69习题………………………………………………………………………69第4章SsPV210微处理器与接口………………………………714.1基于S5PV210微处理器的硬件平台体系结构…………………714.1.1S5PV210处理器简介…………………………………714.1.2S5PV210内部各模块介绍1律和,律………………………724.2存储系统…………………………………………………………………764.2,1S5PV210的地址空间………………………………………………764.2.2S5PV210启动流程………………………………………………774.3时钟系统784.3.1S5PV210时钟概述…………………………………………………784.3.2S5PV210的时钟结构………………………………794.4GPIO接口…814.4.1GPIO概述…………………………………………………………814.4.2GPIO寄存器834.4.3GPIO操作步骤丰库日和B,834.4.4一个LED灯的例子………………………………………………844.5串行通信接口………………………………894.5.1串行通信方式………………………………………………………894.5.2RS232C串行接口……………104.5.3S5PV210的异步串行通信914.5.4S5PV210的UART寄存器 福,.号, 是补量, ,“ 924.5.5UART通信示例…………………………………………………924.6A/D转换器………974.7本章小结……………………………………………………100习题100嵌入式余统设计与应用—基于 ARM Cortex-A8和 Linux第5章 ARM-Linux内核…………………………………………………1015.1ARM- Linux概述1015.1.1GNU/ Linux操作系统的基本体系结构……………………………1015.1.2 ARM-Linux内核版本及特点……1025.1.3 ARM-Linux内核的主要架构及功能…1045.1.4 Linux内核源码目录结构………………1055.2ARM- Linux进程管理1065,2.1进程的表示和切换…………………………………………………10752.2进程线程和内核线程和和和和丰a(和和… ……∴…1095.2.3进程描述符 task struct的几个特殊字段1095.2.4 do fork()函数………1105.2.5进程的创建………………………………………………1125.2.6线程和内核线程的创建……135.2.7进程的执行—exec函数族1135.2.8进程的终止……………………………………………………………1145.2.9进程的调度1155.3 ARM-Linux内存管理……14175,3.1 ARM-Linux内存管理概述…………………………………1175.3.2ARM- Linux虚拟存储空间及分布…………………………………1185.3.3进程空间描述……………………………………………………1193.4物理内存管理……………,……12353.5基于slab分配器的管理技术1245.3.6内核非连续内存分配( vmalloc)…………………………………12553.7页面回收简述…………………………………………1275.4 ARM Linux模块……………….1275.4.1LKM的编写和编译…………………………“…………1285.4.2LKM版本差异比较1285.4.3模块的加载与卸载…………………………………………………1295.4.4工具集 module-init- tools…1315.5 ARM-Linux中断管理………………………………………………………13255.1 ARM Linux中断的一些基本概念…………………………1325.5.2内核异常向量表的初始化……1335.5.3 Linux中断处理…………………………………………………………13555.4内核版本2.6.38后的中断处理系统的一些改变—通用中断子系统…1425.6 ARM-Linux系统调用…1435.7本章小结………146习题……………………………………………………………………146目录第6章 Linux文件系统1486.1 Linux文件系统概述…………1486.2ext2文件系统格式…审和和新 ,,,1506.2.1ext2文件系统……………156.2,2目录结构1536.3ext3和ext4文件系统………………………………………………1546.3.1ext3文件系统…546.3.2ex4文件系统………………………………………………1556.4嵌人式文件系统JFFS2………………………1556,4,1嵌入式文件系统1556.4.2JFFs2嵌入式文件系统………………………………………………1576.5 YAFFS与 YAFFS2文件系统简介………1646.5.1 YAFFS文件系统…………………………………………………1646.5.2 YAFFS2文件系统简介………………………………………………1656.6根文件系统…1666.,6,1根文件系统概述1666.6.2根文件系统的制作工具— Busy Box…………………………1686.6.3 YAFFS2文件系统的创建1706.7本章小结……………………………………………………………171习题…………………………………171第7章嵌入式 Linux系统移植及调试………………………………………………1727.1 Boot loader基本概念与典型结构1727.1.1 Bootloader基本概念……,.1127.1.2 Boot loader的操作模式………1737.1.3 Boot Loader的典型结构………………………………1747.1.4常见的 Bootloader………………………………………………1747.2U-Boot………………………1757.2.1 U-Boot概述……………………………………………………………1757.2.2U-Boot启动的一般流程………1767.2.3U-Boot环境变量………1807.2.4U-Boot命令…………………………………………"………………1817.3交叉开发环境的建立………………………………………………………1837.4交叉编译工具链1857.4.1交叉编译工具链概述1857.4.2工具链的构建方法1867.4.3交叉编译工具链的主要工具1867.4.4 Makefile……………………………………192