《嵌入式系统原理及应用教程》[61M]百度网盘|pdf下载|亲测有效
《嵌入式系统原理及应用教程》[61M]百度网盘|pdf下载|亲测有效

嵌入式系统原理及应用教程 pdf下载

出版社 清华大学出版社京东自营官方旗舰店
出版年 2017-03
页数 390页
装帧 精装
评分 8.8(豆瓣)
8.99¥ 10.99¥

内容简介

本篇主要提供嵌入式系统原理及应用教程电子书的pdf版本下载,本电子书下载方式为百度网盘方式,点击以上按钮下单完成后即会通过邮件和网页的方式发货,有问题请联系邮箱ebook666@outlook.com

编辑推荐

本书第1版销售2万余册。本次改版在第1版基础上进一步丰富了实训内容。
本书重点介绍ARM9微处理器的结构、开发工具、Linux程序设计等,并包含嵌入式CDIO的丰富实训。本书配有PPT课件和编程实训的程序源代码。

内容简介

本书全面、系统地描述了ARM9微处理器核的嵌入式系统体系结构,以Samsung公司的S3C2440A控制器为例,着重介绍ARM9微处理器的结构、开发工具、Linux的程序设计及嵌入式CDIO工程实训等内容。
本书共分5部分: 第1部分(第1章)为理论部分,着重介绍嵌入式系统的概念,包括嵌入式的特点、分类和应用; 第2部分(第2~6章)为基础部分,着重介绍ARM9体系结构、指令系统、寻址方式、指令集,伪指令、汇编语言程序设计基础及与C/C++的混合编程,S3C2440A 控制器的结构原理及外围电路的设计方法等; 第3部分(第7章)为开发工具部分,着重介绍ADS 1.2集成开发环境及嵌入式Linux的软件开发环境的使用; 第4部分(第8~11章)为操作系统部分,着重介绍Linux的程序设计; 第5部分为第2版新增部分(第12章),增加了嵌入式CDIO工程实训环节。
本书采用理论与实践相结合的方法,立足于应用,具有有针对性、实用性及综合性强等特点。
本书不仅适用于高等院校计算机、物联网、电子、自动化等相关专业的本科教学,也适合于从事嵌入式系统研究与开发的技术人员及普通读者参考。

内页插图

目录

第1章嵌入式系统概述
1.1嵌入式系统定义
1.1.1嵌入式系统的概念
1.1.2嵌入式系统的特点
1.2嵌入式系统的组成
1.2.1嵌入式系统硬件
1.2.2嵌入式系统软件
1.2.3嵌入式系统的开发系统和开发工具
1.3嵌入式系统的应用
1.4本章小结
1.5习题1
第2章ARM微处理器概述与编程模型
2.1ARM微处理器概述
2.1.1ARM微处理器的特点
2.1.2ARM微处理器系列
2.2ARM微处理器结构
2.2.1RISC体系结构
2.2.2ARM微处理器的寄存器结构
2.2.3ARM微处理器的指令结构
2.3ARM微处理器的工作状态
2.4ARM体系结构的存储器格式
2.4.1指令长度及数据类型
2.4.2存储管理单元
2.5处理器模式
2.6寄存器组织
2.6.1ARM状态下的寄存器组织
2.6.2Thumb状态下的寄存器组织
2.6.3程序状态寄存器
2.7异常
2.7.1ARM体系结构所支持的异常类型
2.7.2异常优先级
2.7.3异常的响应及返回
2.7.4应用程序中的异常处理
2.8本章小结
2.9习题2
第3章ARM9指令系统
3.1ARM处理器的寻址方式
3.1.1寄存器寻址
3.1.2立即寻址
3.1.3寄存器间接寻址
3.1.4变址寻址
3.1.5寄存器移位寻址
3.1.6多寄存器寻址
3.1.7堆栈寻址
3.1.8相对寻址
3.2ARM指令集
3.2.1指令格式
3.2.2条件码
3.2.3ARM 存储器访问指令
3.2.4ARM 数据处理类指令
3.2.5ARM 分支指令
3.2.6ARM 协处理器指令
3.2.7ARM 软件中断指令
3.3Thumb指令集
3.4本章小结
3.5习题3
第4章嵌入式程序设计基础
4.1伪指令
4.1.1通用伪指令
4.1.2与ARM指令相关的伪指令
4.1.3与Thumb指令相关的伪指令
4.2汇编语言的语句格式
4.2.1书写格式
4.2.2汇编语言中表达式和运算符
4.3汇编程序应用
4.3.1汇编程序基本结构
4.3.2子程序调用
4.4汇编语言与C/C++的混合编程
4.4.1在C/C++程序中内嵌汇编指令的语法格式
4.4.2C/C++与汇编语言的混合编程应用
4.5本章小结
4.6习题4
第5章嵌入式内部可编程模块
5.1存储控制模块
5.1.1存储器控制器
5.1.2NAND Flash控制器
5.1.3存储器实例
5.2GPIO
5.2.1端口功能
5.2.2端口配置寄存器
5.2.3端口其他寄存器
5.2.4I/O应用实例
5.3中断系统
5.3.1中断优先级
5.3.2中断控制寄存器
5.3.3中断编程实例
5.4定时部件
5.4.1看门狗定时器原理及实例
5.4.2RTC部件
5.4.3Timer部件
5.4.4定时部件应用实例
5.5UART
5.5.1UART的操作
5.5.2UART接口寄存器
5.5.3UART实例
5.6ADC及触摸屏接口
5.6.1功能描述
5.6.2ADC及触摸屏接口特殊寄存器
5.6.3A/D转换实例
5.7本章小结
5.8习题5
第6章嵌入式接口技术应用
6.1LCD显示器接口
6.1.1LCD的控制器
6.1.2S3C2440A芯片的LCD专用寄存器
6.1.3S3C2440A芯片LCD寄存器的设置
6.2I2C总线
6.2.1S3C2440A的I2C接口
6.2.2I2C总线接口特殊寄存器
6.2.3I2C编程举例
6.3I2S总线
6.3.1发送接收模式
6.3.2音频串行接口格式
6.3.3I2S总线接口特殊寄存器
6.3.4I2S编程实例
6.4AC97控制器
6.4.1AC97控制器操作
6.4.2AC97控制器特殊寄存器
6.4.3AC97应用实例
6.5本章小结
6.6习题6
第7章软件开发环境
7.1ADS1.2集成开发环境
7.1.1使用ADS创建工程
7.1.2用AXD进行代码调试
7.2嵌入式Linux的交叉编译环境安装
7.3本章小结
7.4习题7
第8章嵌入式系统Boot Loader技术
8.1Boot Loader的基本概念
8.1.1Boot Loader的相关设备和机制
8.1.2Boot Loader的启动过程
8.1.3Boot Loader的操作模式
8.1.4Boot Loader的总体设计
8.2Boot Loader(vivi)的代码分析
8.3本章小结
8.4习题8
第9章嵌入式Linux操作系统移植
9.1嵌入式Linux基本概念
9.2嵌入式Linux内核移植
9.2.1内核修改
9.2.2内核配置
9.2.3内核编译
9.3建立Linux根文件系统
9.4下载目标文件
9.5本章小结
9.6习题 9
第10章嵌入式Linux设备驱动程序开发
10.1嵌入式Linux驱动程序开发基础
10.1.1嵌入式Linux设备驱动程序分类
10.1.2*简单的内核模块
10.2嵌入式Linux设备驱动重要技术
10.2.1内存与I/O端口
10.2.2同步机制
10.2.3阻塞与非阻塞
10.2.4时间问题
10.2.5中断处理
10.3字符设备驱动程序
10.3.1字符设备驱动结构
10.3.2字符设备驱动实例——LED驱动
10.4网络设备驱动程序
10.4.1Linux 网络设备简介
10.4.2网络驱动核心数据结构
10.4.3网络驱动程序分析
10.5设备驱动实例
10.5.1ADC设备驱动实例
10.5.2PWM设备驱动实例
10.5.3触摸屏设备驱动实例
10.6本章小结
10.7习题10
第11章嵌入式Linux应用程序设计
11.1嵌入式Linux C语言应用程序开发基础
11.1.1编写源程序
11.1.2交叉编译程序
11.1.3调试程序
11.2文件I/O编程
11.2.1文件I/O操作例程
11.2.2文件I/O操作API
11.3网络编程
11.3.1网络通信基础及例程
11.3.2网络通信API
11.4应用实例
11.4.1ADC应用实例
11.4.2PWM蜂鸣器控制应用实例
11.4.3触摸屏应用实例
11.5本章小结
11.6习题11
第12章嵌入式CDIO实训项目
实训1ARM汇编基础训练1
实训2ARM汇编基础训练2
实训3GPIO输入输出实训
实训4GPIO定时器中断应用实训
实训5直流电机应用实训
实训6温度采集应用实训
实训7红外通信应用实训
实训8CAN总线应用实训
参考文献

精彩书摘

第3章ARM9指令系统
本章介绍ARM处理器的寻址方式、ARM指令集和Thumb指令集。通过对本章的阅读,希望读者能了解ARM微处理器所支持的指令集及具体的使用方法。
3.1ARM处理器的寻址方式
所谓寻址方式就是处理器根据指令中给出的地址信息来寻找物理地址的方式。目前ARM指令系统支持如下几种常见的寻址方式。
3.1.1寄存器寻址
寄存器寻址就是利用寄存器中的内容作为操作数,寄存器本身就是操作数地址。这种寻址方式是各类微处理器经常采用的一种方式,也是一种执行效率较高的寻址方式。例如以下指令:
MOVR2,R3;R2←R3R3中的内容赋给R2
ADDR2,R3,R4;R2←R3+R4R3和R4中的内容相加,结果赋给R2
3.1.2立即寻址
立即寻址也叫立即数寻址,这是一种特殊的寻址方式,操作数没有存储在寄存器或存储器中,而是包含在指令的操作码中,只要取出指令也就取到了操作数。这个操作数被称为立即数,对应的寻址方式也就叫做立即寻址。例如以下指令:
ADDR1,R1,#1234;R1←R1+1234
ADDR1,R1,#0x7f;R1←R1+0x7f
在以上两条指令中,第二个源操作数即为立即数,要求以“#”为前缀,对于以十六进制表示的立即数,还要求在“#”后加上“0x”。
3.1.3寄存器间接寻址
寄存器间接寻址就是以寄存器中的内容作为操作数的地址,而操作数本身存放在存储器中。例如以下指令:
LDRR1,[R2];R1←[R2]
STRR1,[R2];[R2]←R1
*条指令以R2中的内容为地址,将该地址中的数据传送到R1中。
第二条指令将R1中的内容传送到以R2中的内容为地址的存储器中。
3.1.4变址寻址
变址寻址就是将寄存器(该寄存器一般称为基址寄存器)的内容与指令中给出的地址偏移量相加,从而得到一个操作数的有效地址。变址寻址方式常用于访问某基地址附近的地址单元。采用变址寻址方式的指令有以下几种常见形式,如下所示。
LDRR0,[R1,#8];R0←[R1+8]
LDRR0,[R1,#8]!;R0←[R1+8],R1←R1+8
LDRR0,[R1],#2;R0←[R1],R1←R1+2
LDRR0,[R1,R2];R0←[R1+R2]
在*条指令中,将寄存器R1的内容加上8形成操作数的有效地址,从而取得操作数存入寄存器R0中。
在第二条指令中,将寄存器R1的内容加上8形成操作数的有效地址,从而取得操作数存入寄存器R0中,然后,R1的内容自增8个字节。
在第三条指令中,以寄存器R1的内容作为操作数的有效地址,从而取得操作数存入寄存器R0中,然后,R1的内容自增8个字节。
在第四条指令中,将寄存器R1的内容加上寄存器R2的内容形成操作数的有效地址,从而取得操作数存入寄存器R0中。
3.1.5寄存器移位寻址
寄存器移位寻址是ARM指令集独有的寻址方式,操作数由寄存器的数值进行相应移位而得到;移位的方式在指令中以助记符的形式给出,而移位的位数可用立即数或寄存器寻址方式表示。
ARM微处理器内嵌的桶型移位器(barrelshifter),移位操作在ARM指令集中不作为单独的指令使用,它只能作为指令格式中的一个字段,在汇编语言中表示为指令中的选项。例如,数据处理指令的第2个操作数为寄存器时,就可以加入移位操作选项对它进行各种移位操作。移位操作包括如下6种类型,ASL和LSL是等价的,可以自由互换。
1.LSL(或ASL)操作
LSL(或ASL)操作的格式为:
通用寄存器,LSL(或ASL)操作数
LSL(或ASL)可完成对通用寄存器中的内容进行逻辑(或算术)的左移操作,按操作数所指定的数量向左移位,低位用零来填充,*后一个左移出的位放在状态寄存器的C位CPSR[29]中,如图31所示。其中,操作数可以是通用寄存器,也可以是立即数(0~31)。
图31逻辑(或算术)左移
操作示例:
MOVR0,R1,LSL#4;将R1中的内容左移4位后传送到R0中
;其中把*后移出的位赋给程序状态寄存器的C位CPSR[29]
2.LSR操作
LSR操作的格式为:
通用寄存器,LSR操作数
LSR可完成对通用寄存器中的内容进行右移的操作,按操作数所指定的数量向右移位,左端用零来填充,*后一个右移出的位放在状态寄存器的C位CPSR[29]中,如图32所示。其中,操作数可以是通用寄存器,也可以是立即数(0~31)。
图32逻辑(或算术)右移
操作示例:
MOVR0,R1,LSR#4;将R1中的内容右移4位后传送到R0中
;其中把*后移出的位赋给程序状态寄存器的C位CPSR[29]
3.ROR操作
ROR操作的格式为:
通用寄存器,ROR操作数
ROR可完成对通用寄存器中的内容进行循环右移的操作,按操作数所指定的数量向右循环移位,右端移出的位填充在左侧的空位处,*后一个右移出的位同时也放在状态寄存器的C位CPSR[29]中,如图33所示。其中,操作数可以是通用寄存器,也可以是立即数(0~31)。
图33循环右移
操作示例:
MOVR0,R1,ROR#4;将R1中的内容循环右移4位后传送到R0中
;其中把*后移出的位赋给程序状态寄存器的C位CPSR[29]
4.ASR操作
ASR操作的格式为:
通用寄存器,ASR操作数
ASR可完成对通用寄存器中的内容进行右移的操作,按操作数所指定的数量向右移位,*左端的位保持不变,*后一个右移出的位放在状态寄存器的C位CPSR[29]中,如图34所示。其中,操作数可以是通用寄存器,也可以是立即数(0~31)。
图34算术右移
……

前言/序言

“嵌入式无处不在”已成为现实。嵌入式系统应用的领域日益广阔,与网络通信、数字家庭、工业控制、国防军事、医疗系统、安防系统、能源系统、交通系统等行业的融合逐步加深,智能设备终端应用市场的快速发展对嵌入式系统提出了持续需求,使得嵌入式系统产业在前所未有的机遇下飞速发展。因此,系统开设嵌入式系列课程是非常必要的,这样就需要合适的配套教材。鉴于这种情况,笔者参考了大量国内外教材,结合应用型本科院校的特点,在原有第1版教材的基础上进行更新和修订,从而有了更具实践性和应用性的《嵌入式系统原理及应用教程(第2版)》。
本书着眼于“应用”,立足于“工程开发”,强调“工程训练”,具有以下特点。
1. 综合性
嵌入式系统是嵌入式硬件和嵌入式软件的综合体,硬件的设计服务于软件功能,软件的开发也必须考虑硬件资源的有限性。根据嵌入式系统的这一特点,本书采用“ARM9微处理器+Linux操作平台+应用程序设计+CDIO工程实训”的教学体系。
2. 基础性
本书详细讲解了ARM9体系结构和编程方法,尤其是举例讲解了指令系统中的指令集及汇编语言与C/C++混合编程的方法,以便读者掌握好底层嵌入式开发的技能。
3. 实用性
本书以S3C2440A芯片和Linux操作系统为例,举例介绍了开发环境的使用与调试方法,详细介绍了嵌入式软件的编程技术。例如介绍了AC97音频控制器设计实例。
4. 针对性
本书是笔者多年嵌入式教学的总结。主要是针对应用型本科学生实践性的特点,在介绍ARM9微处理器原理及结构的同时,注重各功能模块的应用介绍。
5. 工程性
本书在第1版教材的基础上,结合CDIO教学模式,增加了嵌入式CDIO实训项目,以提高学生的实践能力,增强学生的工程意识。
本书系统介绍嵌入式系统软硬件的组成、工作原理和设计方法。全书分为5部分,共12章,主要内容和篇章结构安排如下。
第1部分为理论部分,由第1章组成。介绍嵌入式系统的基本概念,包括嵌入式系统的定义、组成、特点、分类和应用领域。
第2部分为基础部分,由第2~6章组成。第2章重点讲解ARM9处理器的体系结构; 第3章详细讲解基于ARM的嵌入式处理器指令系统; 第4章讲解嵌入式系统的程序设计基础,包括汇编语言程序设计及与C/C++语言的混合编程技术; 第5、6章详细讲解S3C2440A芯片内部结构、外设及工作原理和应用方法,并辅以实例讲解。
第3部分为开发工具部分,由第7章组成,着重讲解ADS1.2集成开发环境及嵌入式Linux的软件开发环境的使用。
第4部分为操作系统部分,由第8~11章组成。第8章详细分析嵌入式系统的Boot Loader,第9~11章以实例的方式讲解基于“S3C2440A芯片+ Linux操作平台”的设计方法。
第5部分为CDIO工程实训,由第12章组成,详细讲解了8个实训实例,学生还可以进行扩展训练。
本书由孟祥莲任主编,孙平、王嘉鹏、姜波、于剑光任副主编。
由于嵌入式技术发展迅速,加上笔者水平有限,时间仓促,书中难免有疏漏和错误之处,请读者不吝赐教,以便我们在再版的时候及时纠正补充。
本书的配套课件、代码等可以从清华大学出版社网站www.tup.com.cn下载,如在本书使用或课件下载中遇到问题,请联系fuhy@tup.tsinghua.edu.cn。
编者2017年1月
第1版
“嵌入式无处不在”已成为现实。嵌入式系统应用的领域日益广阔,与网络通信、数字家庭、工业控制、国防军事、医疗系统、安防系统、能源系统、交通系统等行业融合正在加深,智能设备终端应用市场的快速发展对嵌入式系统提出了持续需求,使得嵌入式系统产业在前所未有的机遇下快速地发展。因此,系统地开设嵌入式系列课程是必要的,这样就需要合适的配套教材,鉴于这种情况,作者参考了大量国内外教材,结合应用型本科院校的特点,编写了《嵌入式系统原理及应用教程》一书。
全书着眼于“应用”、立足于“工程开发”,具有以下特点。
1. 综合性
嵌入式系统是嵌入式硬件和嵌入式软件的综合体,硬件的设计服务于软件功能,软件的开发也必须考虑硬件资源的有限性。根据嵌入式系统的这一特点,本书采用“ARM9处理器+Linux操作平台+应用程序设计”的介绍方法。
2. 基础性
本书详细地讲解了ARM9处理器的体系结构和编程方法,尤其是举例讲解了指令系统中的指令集及汇编语言与C/C++混合编程的方法,以便读者掌握好底层嵌入式开发的技能。
3. 实用性
本书以S3C2440A芯片和Linux操作系统为例,举例介绍了开发环境的使用与调试方法,详细介绍了嵌入式软件的编程技术。例如介绍AC97音频控制器和触摸屏的设计实例。
4. 针对性
本书是编者几年嵌入式教学的总结。主要是针对应用型本科学生实践性强的特点,在介绍ARM9处理器的原理及结构的同时,注重了各功能模块的应用介绍。
本书系统地介绍了嵌入式系统软硬件的组成、工作原理和设计方法。全书分为4部分,共11章,主要内容和篇章结构安排如下。
第1部分为理论部分,由第1章组成。介绍嵌入式系统的基本概念,包括嵌入式系统的定义、组成、特点、分类和应用领域。
第2部分为基本部分,由第2~6章组成。第2章重点讲解ARM9处理器的体系结构; 第3章详细讲解基于ARM的嵌入式处理器指令系统; 第4章讲解其嵌入式系统的程序设计基础,包括汇编语言程序设计及与C/C++语言的混合编程技术; 第5~6章详细讲解S3C2440A芯片内部结构、内部外设及工作原理和应用方法,并辅以实例讲解。
第3部分为开发工具部分,由第7章组成。着重讲解ADS1.2集成开发环境及嵌入式Linux的软件开发环境的使用。
第4部分为操作系统部分,由第8~11章组成。第8章详细分析嵌入式系统的Boot Loader; 第9~11章以实例的方式讲解基于“S3C2440A芯片+Linux操作平台”的设计方法。
全书由孟祥莲主编并编写第3~6章,高洪志编写第1~2章,孙平编写第7~8章,朱国晗编写第9~11章。
由于嵌入式技术发展迅速,加上作者水平有限,时间仓促,书中难免有疏漏和错误之处,无论如何,请读者不吝赐教,以便我们在改版或再版的时候及时纠正补充。
作者2010年8月