嵌入式考纲
时间:2022-10-07 12:00:00
嵌入式考纲
简答:1-2微处理器,2-1-2ARM处理器和指令集内部结构2,4嵌入式软件编程技术 55开发环境和调试技术 7-1linux操作系统 8嵌入式文件系统 课后思考题
1.5.6.7
2.3.4.5.6.7.9.11.13
4
5
7.2.5.8.10
8
文章目录
-
- 嵌入式考纲
-
- 第一章
-
-
- 3.**定义嵌入式系统**;
- 4. **嵌入式系统与桌面通用系统的区别**;
- 5. **嵌入式处理器的基本特征**;
- **6. 嵌入式处理器的类型和特点(MCU、DSP、MPU、SOC);**
- **7. 典型嵌入式处理器的特点及应用场景(ARM、MIPS、POWERPC)**
- **8.** **嵌入式软件系统的系统结构和各级任务;**
- **9.** **嵌入式操作系统的主要特点;**
- **11.** **典型嵌入式操作系统的特点及应用场景**(**Linux** **、VXwork**、**QNX**、**uC/OS**)。
-
- 第二章
-
-
- **1.ARM** **微处理器的特点;**
- ARM7系列
- ARM9系列
- ARM9E系列
- ARM10E系列
- Xscale
- **3.CISC** 与 **RISC** **系统结构的特点和差异;**
- **4.冯.诺依曼结构与哈佛结构的特点和差异**
- **5.ARM** **微处理器的工作状态及差异;**
- **6.ARM系统结构的存储格式;**
- **7.ARM** **处理器的** **7** **工作模式;**
- **9.程序状态寄存器(**CPSR**)结构与作用;(**SPSR**)**
- **11.异常响应和返回;**
- **12.ARM** **寻址处理器**
- **13.ARM** **指令格式(立即数、条件码);**
- **存储器访问指令(Load/Store)**、协处理器指令
-
- 第三章 嵌入式Linux系统
-
-
- **1.Linux** **发展的** **5** **大支柱;**
- **2.Linux** **的发行版(** **RedHat **家族与** **Debian** **家族);**
- **3.Linux** **发展版本;**
- **压缩包装相关命令**、比较合并文件的相关生命
- **7.Linux** **程序开发过程及其工具;**
- **8.vi** **三种工作模式的相互转换关系;**
- **10.GCC** **编译处理流程及文件类型;**
-
- 第四章 嵌入式软件编程技术
-
-
- **2.汇编语言的简单程序编程;**
- **3.可重入函数及其解决方案;**
- **4.中断和处理硬件和软件;**
- **5.高级语言与低级语言的混合编程;**
-
- 第五章 开发环境和调试技术
-
-
- **2.嵌入式软件开发过程;**
- **3.交叉编译与本地编译的区别;**
- **4.交叉调试与本地调试的区别;**
- **5.构建嵌入式开发环境;**
- **6.构建主从机通信环境;**
- **7.开发环境建设中的模拟技术;**
- **8.构建嵌入式交叉开发环境;**
- **9.远程调试方法(**stub**)及常见的三种方法;**
- **10.Linux** **三种内核调试方法;**
-
- 第六章 BootLoader技术
-
-
- **1.嵌入式系统启动过程;**
- **2.典型的引导加载方式;**
- **3.Boot Loader** **概念;**
- **4.BootLoader** **操作模式;**
- **6.Boot Loader** **的** **stage1** **与** **stage2** **主要步骤;**
-
- 第七章 ARM-Linux内核
-
-
- **2. Linux** **内核的特点;**
- **5.** **切割内核;**
- **8.** **核心空间和用户空间;**
- **10.** **虚拟内存实现机制之间的相互关系;**
- 操作、任务、程序**进程、线程**之间的联系;
- **13. Linux** **过程状态转换**
- **Linux** **创建和终止过程****;**
- **16. ARM-Linux** **模块机制;**
-
- 第八章 嵌入式文件系统
-
-
- **4.Linux** **虚拟文件系统**
- **5.NOR** **型闪存与** **NAND** **闪存的特点**
- **6.NAND** **闪存管理中的问题**
- **7.常见的** **FLASH** **文件系统**
- **10.根文件系统和目录结构的作用**
- **11.如何创建根文件系统?**
-
- 第九章 嵌入式驱动设计
-
-
- **2.控制输入输出模式;**
- **4.驱动程序与应用程序的区别;**
- **5.设备分类;**
- **6.设备文件与设备号的关系;**
- **8.设备文件接口(**file operation);
- **12.设备号的分配和释放;**
- **4.驱动程序与应用程序的区别;**
- **5.设备分类;**
- **6.设备文件和设备号之间的关系;**
- **8.设备文件接口(**file operation);
- **12.分配和释放设备号;**
- **13.内核空间与用户空间之间复制数据的方法;**
-
第一章
1.嵌入式系统的前世今生及应用领域;
首个嵌入式系统:AGC
军事
- 武器控制系统
- 数字化单兵系统
工业制造
- 智能测量仪表
- 机电一体化机械设备
- 数控装置
- 工业机器人
- 可编程控制器,控制机
- 分布式控制系统
- 现场总线仪表及控制系统
仪器仪表
- DCG
- 监护仪
智能家居
智能家电
智能汽车
商业、办公自动化及通信
PMP
-
protable media player
-
sixth sense系统
-
可佩戴式多点触控投影机
-
健身服
-
指套探测器
-
表皮电子
-
tacit project手套
-
flora kit电脑
环境检测
地址灾害监控
2.嵌入式系统的发展阶段;
操作系统:
- 无操作系统阶段
- 简单操作系统阶段
- 实时操作系统阶段
- 面向Internet阶段
无操作系统阶段
将嵌入式软件固化在只读内存,汇编编程
- 前提:没有操作系统的支持,通过汇编语言对系统直接控制,运行结束后清除内存,只能执行一些单线程的程序
- 主要特点:系统结构和功能相对单一,处理效率较低,存储容量较小,几乎没有用户接口。使用简便,价格低。主要用于工业控制领域
简单操作系统阶段
开发简单的应用软件
-
前提:微电子工艺水平的提高
-
主要特点:出现了大量高可靠、低功耗的嵌入式CPU,此时的嵌入式系统虽然比较简单,但是初步具有一定的兼容性和扩展性,内核精巧并且效率高。主要用于控制系统负载以及监控应用程序的运行
实时操作系统
实时控制;软实时;硬实时;增加用户体验
- 前提:分布控制、柔性制造、数字化通信和信息家电的需求。硬件实时性的提高
- 主要特点:操作系统的实时性得到提高,能够运行在各种不同类型的微处理器上,具有高度的模块化和扩展性。具备了文件和目录管理、设备管理、多任务、网络、图形用户界面等功能,提供了大量的应用程序接口
面向Internet的阶段
传感网络,物联网,工业物联网,CPS(信息物理社会)
- 前提:Internet技术与信息家电、工业控制技术等的结合
PC时代
- 特点:PC机+Windows操作系统为主要应用开发环境,以互联网为信息共享媒介
后PC时代
- 特点:计算机微型化,提供专用、可移动、多样化硬/软件开发平台,以无线网络及互联网为信息共享媒介
3.嵌入式系统的定义;
嵌入式系统是以应用为中心,以计算机技术为基础,采用可剪裁软硬件,适用于对功能、实时性、可靠性、功耗等有严格要求的专用计算机系统
4. 嵌入式系统与桌面通用系统的区别;
- 运行的任务专用而确定:形式多样、面向特定应用;桌面通用系统:支持大量的、需求多样的应用程序
- 处理器和处理器体系结构类型多
- 实时性要求高:强实时型,一般实时型,弱实时型
- 运行需要高可靠性保障(硬件的看门狗定时器,软件的内存保护和重启动机制)
- 大多数都有功耗约束(间歇工作方式)
- 可用资源少
- 嵌入式系统开发需要专用工具和特殊方法
- 嵌入式系统开发是一项综合的计算机应用技术
5. 嵌入式处理器的基本特征;
-
微处理器是整个系统的核心,通常由三大部分组成:控制单元、算数逻辑单元和寄存器
-
存储器包括主存和外存,外存采用flash芯片存储数据,体积小、功耗低、抗震。
-
大多数输入、输出接口和部分设备已经集成在嵌入式微处理器中
-
相对通用处理器,嵌入式处理器的特点:
- 体积小、集成度高、价格较低,
- 可扩展的处理器接口,功耗低,
- 对实时多任务由很强的支持能力,
- 具有功能很强的存储保护功能,
- 用于桌面和服务器的微处理器芯片内部通常只包括CPU核心、Cache、MMU、总线结构等
- 嵌入式处理器还集成了各种外部接口和设备
6. 嵌入式处理器的种类及特点(MCU、DSP、MPU、SOC);
种类 | 特点与不同之处 | 用途 |
---|---|---|
微处理器MPU | 相对于通用计算机中的CPU:1.只保留和嵌入式应用紧密相关的功能硬件,去除其它冗余的功能,以最低功耗和成本实现特定的需求2.在工作温度、抗电磁干扰、可靠性等方面对CPU做了各种增强3.微处理器装配在专门设计的电路板上,系统的可靠性较低,技术保密性较差4.不是为任何已有的特定计算目的而设计的芯片, | Am186/88,386EX,SC-400,Power PC,68000,MIPS,ARM系列等 |
微控制器MCU | (1)以某一微处理器内核为核心 (2)芯片内部集成各种必要功能和外设) (3)特点:单片化、体积大大减小,从而使成本和功耗下降、可靠性提高 | 1.通用系列:8051,P51XA,MCS-251,MCS-96/196/291等 2.半通用系列:支持USB接口的C540,C541;支持I2C,LCD及众多专用MCU和兼容系列 |
DSP处理器 | (1)采用哈弗结构和专用的硬件乘法器 (2)使用快速DSP指令(RISC) (3)适用于处理器运算速度要求较高、向量运算较多的应用领域 | 1.数字信号处理 数字滤波, 2.移动电话、语音识别 3.智能化嵌入式系统 |
SOC | (1)一种系统集成芯片,功能可以完全由硬件完成,也可以由软硬件完成 (2)高密度、高速度、高抗干扰性 | 1.ARM+ARM 2.ARM+DSP 3. ARM+FPGA |
7. 典型嵌入式处理器的特点及应用场景(ARM、MIPS、POWERPC)
典型嵌入式处理器 | 特点 | 应用场景 |
---|---|---|
ARM | (1)体积小、低功耗、低成本、高性能 (2)支持Thumb/ARM双指令集 (3)大量使用寄存器 (4)寻址方式灵活 (5)固定长度的指令 | 1.Cortex M系列处理器:低端嵌入式应用市场 2. 经典ARM及Cortex R系列处理器:中高端嵌入式应用市场 3.Cortex A系列处理器:高端嵌入式应用市场 |
MIPS | 高性能、高处理能力的高端嵌入式处理器 | 应用于消费类电子、下一代网络、宽带产品、智能卡、机顶盒、数字电视、DVD |
POWERPC | 可伸缩性好、方便灵活 | 应用于DSL调制解调器、SOHO路由器、远程接入服务器、DSLAM、执行局交换机设备、无线基站、企业路由器 |
8. 嵌入式软件系统的体系结构及各个层次的任务;
嵌入式软件系统体系结构:驱动层,操作系统层,中间件层,应用层
- 驱动层
- 板级初始化程序
- 与系统软件相关的驱动
- 与应用软件相关的驱动
- 硬件抽象层
- 通过特定的上层接口与操作系统进行交互,屏蔽了底层硬件的多样性
- 操作系统层
- 包括 嵌入式内核,嵌入式TCP/IP网络系统,嵌入式文件系统,嵌入式GUI系统和电源管理等部分
- 中间件层
- 应用层
- 应用层软件主要由多个相对独立的应用任务组成
- 每个应用任务完成特定的工作
9. 嵌入式操作系统的主要特性;
- 可配置,可剪裁
- 实时任务调度策略
- 适应多种处理器,可剪裁,轻量型,实时可靠,可固化
- 基于优先级的,可抢占的调度算法
- 按照应用对象有偏控制类和偏人机交互类之分
10.嵌入式操作系统的分类;
嵌入式软件系统体系结构:驱动层,操作系统层,中间件层,应用层
- 驱动层
- 板级初始化程序
- 与系统软件相关的驱动
- 与应用软件相关的驱动
- 硬件抽象层
- 通过特定的上层接口与操作系统进行交互,屏蔽了底层硬件的多样性
- 操作系统层
- 包括 嵌入式内核,嵌入式TCP/IP网络系统,嵌入式文件系统,嵌入式GUI系统和电源管理等部分
- 中间件层
- 应用层
- 应用层软件主要由多个相对独立的应用任务组成
- 每个应用任务完成特定的工作
- 能否简述嵌入式系统的主要特性?
- 可配置,可剪裁
- 实时任务调度策略
- 适应多种处理器,可剪裁,轻量型,实时可靠,可固化
- 基于优先级的,可抢占的调度算法
- 按照应用对象有偏控制类和偏人机交互类之分
- 能否简述嵌入式系统的分类?
- 嵌入式处理器的位数
4.8.16.32.64位嵌入式系统
- 应用
信息家电类,移动终端类,汽车电子类,工业控制类,通信类
- 速度
- 强实时系统,毫秒或者微妙
- 一般实时系统,几秒
- 弱实时系统,数十秒或更长
- 确定性
- 硬实时系统
如果系统响应时间不能满足,会引起系统崩溃或致命的错误
- 软实时
不会导致系统出现致命错误或崩溃
- 嵌入式系统软件复杂程度
循环轮询系统
有限状态机系统
前后台系统
单处理器多任务系统
多处理器多任务系统
- 嵌入式系统的商业模式
- 商业型
- 开源型
11. 典型嵌入式操作系统的特点及应用场景(Linux 、VXwork、QNX、uC/OS)。
嵌入式操作系统 | 特点 | 应用场景 |
---|---|---|
Linux | (1)广泛的硬件支持 (2) 内核高效稳定 (3)开放源码,软件丰富 (4)优秀的开发工具 (5)完善的网络通信和文件管理机制 | Android、MeeGo |
VXwork | 高可靠性、高实时性、可剪裁性好、但非常昂贵 | 用于美国“极地登陆者”号、“深空二号”和火星气候轨道器等登陆火星探测器上 |
QNX | 高可靠性、高安全性、高度伸缩性、可灵活剪裁 | 广泛嵌入到汽车、智能机器、智能仪器仪表、机顶盒、通讯设备、PDA等应用,目前作为黑莓手机及黑莓平板电脑的操作系统 |
uc/OS | 开源、结构小、可剥夺、实时的 (缺点:不支持时间片轮转调度法) | 用于控制类等低端应用中。如照相机行业、医疗检测仪器、音响设施等 |
第二章
1.ARM 微处理器的特点;
- 高性能、低成本、低功耗
- 大量的寄存器,可用于多种用途
- Load/Store体系结构,多寄存器Load/Store指令
- 3地址指令(两个源操作数寄存器和结果寄存器)
- 每条指令都条件执行
- 能通过协处理器指令集扩展ARM指令集,在编程模式下增加了新的寄存器和数据类型
- 在Thumb体系结构中以高密度16位压缩形式表示指令集
2.ARM 各体系架构版本与各系列产品的特点;
架构 | 区别 | 应用场景 |
---|---|---|
v1 | 基本指令 | 只在原型机ARM1出现过 |
v2 | 对V1进行了扩展,增加了指令以及寻址空间 | ARM2与ARM3架构 |
v3 | 增加了CPSR和SPSR寄存器;寻址空间;中止和未定义处理器模式 | |
v4 | 引进了16位的Thumb指令集 | |
v5 | 新增指令 | |
v6 | 在芯片功耗和多媒体处理上有所突破 | 根下一代的消费类电子、无线设备、网络应用和汽车电子产品等需求制定 |
v7 | 采样Thumb-2技术,兼容性好 | |
v8 | 支持64微指令集的处理器架构;包含两个执行状态:AArch64和AArch32 | 基于64微Cortex-A5X系列的百度ARM服务器 |
- A:面向简短的基于虚拟内存的操作系统和用户应用
- R:针对实时系统
- M:对微控制器和低成本应用提供优化
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5TULiqLS-1608779280944)(D:\数据可视化\大数据分析学习\图片\image-20201221143448012.png)]
3.能够举例分析ARM微处理器系列芯片的特点?
ARM7系列
- 广泛应用于多媒体和嵌入式设备,包括Internet设备、网络和调制解调器设备,以及移动电话、PDA等无线设备
ARM9系列
- 主要应用于引擎管理,仪器仪表,安全系统和机顶盒等领域
ARM9E系列
- 允许在硬件中执行Java字节码
- 主要应用于下一代无线设备、数字消费品、成像设备、工业公职、存储设备和网络设备等领域
ARM10E系列
- 使用向量浮点(VFP)单元VFP10提高高性能的浮点解决方案
- 用于视频游戏机和高性能打印机等场合
Xscale
- 应用于手提式通讯和消费类电子类设备
3.CISC 与 RISC 体系结构的特点及区别;
特点 | |
---|---|
CISC | (1)指令的种类繁多 (2) 指令功能强大 (3)指令机器码长度因指令不同而不同 (4)指令执行时间有较大的差异 (5)高性能微指令结构耗用大量晶体管,造成体积成本增加 |
RISC | (1)具有一个短小精悍的指令集 (2)指令具有相同的机器码位长 (3)95%的指令执行时间为一个时钟周期 (4)节省了大量晶体管,但无法实现高性能指令 (5)采用载入(Load/Store)模式 |
指标 | RISC | CISC |
---|---|---|
指令集 | 一个周期执行一条指令,通过简单指令的组合实现复杂操作;指令长度固定 | 指令长度不固定,执行需要多个周期 |
流水线 | 流水线每周期前进一步 | 指令的执行需要调用微代码的一个微程序 |
寄存器 | 更多通用寄存器 | 用于特定目的的专用寄存器 |
Load/Store结构 | 独立的Load/Store指令完成数据在寄存器和外部存储器之间的传输 | 处理器能够直接处理存储器中的数据 |
4.冯.诺依曼结构和哈佛结构的特点及区别
哈佛结构是一种将程序指令存储和数据存储分开的存储器结构。
- 特点:
- 使用两个独立的存储器模块分别存储指令和数据,使用两条独立的总线进行访问
- CPU可以进行进行的操作,提高处理器的执行效率
冯.洛依曼结构的处理器指令和数据使用同一个存储器
- 特点:
- 指令和数据存储字相同的内存空间,但是存储地址不同
- 处理器利用相同的总线处理内存中的指令和数据,指令和数据具有相同的数据宽度,指令和数据无法同时存取
5.ARM 微处理器的工作状态及区别;
ARM状态,此时处理器执行32位的、字对齐的ARM指令
Thumb状态,此时处理器执行16位的、半字节对齐的Thumb指令
ARM微处理器开始执行代码是,应该处于ARM状态
进入Thumb状态:
- 大概操作数寄存器的状态为位1时,采用执行BX指令的方法
- 当处理器处于Thunb状态发生异常时,在异常处理返回时,自动切换到Thumb状态
进入ARM状态
- 当操作数寄存器的状态位为0时,执行BX指令
- 处理器进行异常处理时,把PC指针放入异常模式链接寄存器中,从异常向量地址开始执行程序
ARM指令集和Thumb指令集在应用上的区别?
- 并非所有ARM指令都有对应的Thumb指令
- Thumb代码使用的存储空间比ARM少,指令数更多,执行速度快,功耗更低
6.ARM体系结构的存储器格式;
ARM体系结构将存储器看作是从零地址开始的字节的线性组合
从零字节到三字节放置第一个存储的数据
从第四个字节到第七个字节放置第二个存储的字数据,依次排列
作为32位的微处理器,ARM体系结构所支持的最大寻址空间为4GB
ARM体系结构可以用两种方法存储字数据,分别是大端格式、小端格式
7.ARM 处理器的 7 种工作模式;
工作模式 | 运用场合 | 说明 |
---|---|---|
用户(usr) | 运行用户应用程序 | 不能直接切换到其它模式 |
系统(sys) | 运行操作系统 | 与用户模式类似,但具有可以直接切换到其它模式等特权 |
块中断(fiq) | 高速I/O数据传输处理 | FIQ异常响应时进入该模式 |
中断(irq) | 常规I/O数据传输处理 | IRQ异常时进入该模式 |
管理(svc) | 开机/复位程序及软中断掉 | 系统复位和软件中断时进入此模式 |
访问中止(abt) | 用于支持虚拟内存和/或存储器保护 | 仅用于ARM9及后续结构 |
未定义(und) | 自定义指令,协处理器软件仿真 | 未定义指令异常响应式进入此模式 |
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wD6Pdyzv-1608779280946)(D:\数据可视化\大数据分析学习\图片\image-20201221150548978.png)]
- 后五种为异常模式,程序和特定异常进入,每个异常模式都有独立的寄存器
- 用户和系统模式使用完全相同的寄存器组
8.ARM 状态下的寄存器组织(未分组的寄存器
PC 寄存器);
任何时候,通用寄存器R14-R0、程序计数器PC、一个或两个状态寄存器都是可以访问的
R0-R7为未分组的寄存器,在中断或异常处理时,使用相同的物理寄存器
R8-R12为分组寄存器,取决于当前的处理器模式,有两组寄存器,一组用于FIQ,一组用于其它
R14为链接寄存器(LR),保存子程序返回地址;发生异常时,将R14对应的异常模式版本设置为异常返回地址。将PC的当前值拷贝个R14,执行完子程序后,将R14的值拷贝会PC
寄存器R13常作为堆栈指针.
寄存器R15用作程序计数器(PC)。
在ARM状态下,位[1:0]为0,位[31:2]用于保存PC;
在Thumb状态下,位[0]为0,位[31:1]用于保存PC;
9.程序状态寄存器(CPSR)的结构与作用;(SPSR)
CPSR反映了当前处理器的状态:
4个条件代码标志(负(N)、零(Z)、进位©和溢出(V) );
2个中断禁止位,分别控制一种类型的中断;
5个对当前处理器模式进行编码的位;
1个用于指示当前执行指令(ARM还是Thumb)的位。
- CPSR:当前程序状态寄存器,反映当前处理器的状态
- SPSR:备份程序状态字,保存异常发生前的CPSR
10.异常的基本概念及分类;
非预知的引发处理器暂时脱离正常指令序列并转到另外的 程序段去运行的现象
异常包括异常和中断两种类型。
(1) 异常 (Exceptions) 是因指令的执行而产生的,属于软件触发, 且大部分是不可屏蔽的。
(2) 中断 ( Interrupt) 通常是由电信号作用到处理器专门的中断 请求引脚触发的,属硬件触发。而且通常 可以通过对中断屏蔽位的设置禁止或允许 对其的响应
ARM处理器共设置了七种不同类型的异常,包括:
- 两种硬件触发的中断:
- 普通中断(IRQ);快中断(FIQ)
- 五种软件触发的异常:
- 复位; 未定义指令; 软件中断; 指令预取中止; 数据中止
11.异常的响应及返回;
对异常的响应:
- 将下一条指令的地址存入相应连接寄存器LR,以便程序在处理异常返回时能从正确的位置重新开始执行
- 将CPSR复制到相应的SPSR中
- 根据异常类型,强制设置CPSR的运行模式位
- 强制PC从相关的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序处,同时设置中断禁止位,以禁止中断发生
异常返回:
- 将连接寄存器LR的值减去相应的偏移量后送到PC中
- 将SPSR复制回CPSR中
- 若在进入异常处理时设置了中断禁止位,要在此清除
12.ARM 处理器的寻址方式
寻址方式 | 说明 |
---|---|
立即寻址 | 也叫立即数寻址,操作数包含在指令的操作码中 |
寄存器寻址 | 利用寄存器中的内容作为操作数 |
寄存器移位寻址 | 操作数有寄存器的数值进行相应移位得到 |
寄存器间接寻址 | 以寄存器中的内容作为操作数的地址 |
基址变址寻址 | 将寄存器的内容与指令中给出的地址偏移量相加,得到操作数的地址 |
多寄存器寻址 | 一条指令可以完成多个寄存器的传送,这种寻址方式可以用一条指令完成传送最多16个通用寄存器的值 |
堆栈寻址 | 使用一个称作堆栈指针的专用寄存器指示当前的操作位置,堆栈指针总是指向栈顶 |
相对寻址 | 以程序计数器PC的当前值为基地址,指令中的地址标号作为偏移量,两者相加后的到操作数的地址 |
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ArpSNMkn-1608779280948)(D:\数据可视化\大数据分析学习\图片\image-20201221161613837.png)]
13.ARM 的指令格式(立即数、条件码);
{} {s} ,{,}
<>号内的项是必须的,{}号内的项是可选的
opcode:指令助记符;cond:执行条件
S:是否影响CPSR寄存器的值
Rd:目标寄存器; Rn:第一个操作数的寄存器
op2:第二个操作数
14.ARM9 的指令系统(跳转指令、数据处理指令、
存储器访问指令(Load/Store)、协处理器指令
杂项指令、饱和算术指令)
存储器访问指令:
- 把数据从存储器到寄存器中的传送叫加载,数据从寄存器到存储器的传送叫存储
- 分为3类:单寄存器数据加载/存储指令;多寄存器加载/存储指令;数据交换指令
数据处理指令:
- 只能对寄存器得内容进行操作,不允许对存储器中得数据进行操作,也不允许指令直接使用存储器的数据或在寄存器与存储器之间传送数据
- 分为三大类:数据传送指令;算数逻辑运算指令;比较指令
跳转指令:
-
即分支指令,能够跳转到指定地址或根据跳转地址的最低位来切换处理器状态
-
助记符 说明 操作 条件码位置 B label 分支指令 PC<–label B {cond} BL label 带链接的分支指令 LR<-PC-4, PC<-label BL{cond} BX Rm 带状态切换的分支指令 PC<-Rm,切换处理器状态 BX{cond} BLX RM 带链接与状态切换的指令 LR<-PC-4,PC<-Rm,切换处理器状态 BLX{cond}
协处理器指令:
- 初始化ARM处理器、协处理器处理数据,协处理器与处理器数据交互等
杂项指令:
- 软中断指令,读状态寄存器指令,写状态寄存器指令,断点指令
15.ARM 的四条伪指令(ADR、ADRL、LDR、NOP);
- ADR:将基于PC相对偏移的地址值或基于寄存器相对偏移的地址值读取到寄存器中
- ADRL:基于PC相对偏移的地址值或基于寄存器相对偏移的地址值读取到寄存器中,比ADR伪指令读取更大范围的地址
- LDR:用于加载32位的立即数或一个地址值到指定寄存器
- NOP:在汇编时将会被代替乘ARM中的空操作
第三章 嵌入式Linux系统
1.Linux 发展的 5 大支柱;
Unix操作系统:诞生了c语言,只能自己使用和发放到大学得科研机构中
Minix操作系统:用于教学,开放源码。微内核结构
GNU计划:1987年6月完成得11万行源代码开放得编译器
POSIX标准
Internet:
2.Linux 的发行版( **RedHat 家族与 Debian 家族);
RedHat:使用数量最多得Linux发行版
Debian:自由社会使用最多得发行版
Ubuntu:基于Debian的一个发行版
3.Linux 版本的发展;
从Linux诞生以来,Linux内核就没有停止过升级,从1991年0.01版本到1999年具有里程碑意义的2.2版本,一直到我们现在看到的x.x.xx版本
- Linux内核版本有两种:稳定版和开发版
- Linux内核的命名机制:num.num.num(第一个数字是主版本号、第二个数字是次版本号、第三个数字是修订版本号)
4.Linux 主机开发环境搭建;
- 光盘
- 硬盘
- 网络安装(HTTP,FTP,NFS)
- 虚拟机(Xen,VMware)
- u盘启动。。。
5.Linux 基本命令(用户系统相关命令、文件目录相
关命令、压缩打包相关命令、比较合并文件相关命
令、网络相关命令);
文件目录命令
命令 | 作用 |
---|---|
ls / ls -l |
列目录 |
pwd |
显示当前目录名称 |
cd /etc --> cd ../bin |
更改当前目录 (即从etc目录到bin目录) |
mkdir mydir-->rmdir mydir |
建立和删除目录 |
文件操作命令:
命令 | 功能 |
---|---|
file |
显示指定文件的类型 |
touch |
建立指定名称的文件或更新文件时间 |
cp |
复制文件或目录 |
rm |
删除文件或目录 |
mv |
移动文件或目录,文件或目录重命名 |
find |
在指定目录查找符合条件的文件 |
文本文件查看命令:
命令 | 功能 |
---|---|
cat |
显示文本文件内容 |
more |
分页显示文本文件内容 |
less |
分页显示文本文件内容,并可方便反复浏览 |
head |
显示文件首部内容 |
tail |
显示文件尾部内容 |
压缩打包相关命令:
文件后缀 | 解压命令 | 示例 |
---|---|---|
.a | tar xv | tar xv hello.a |
.z | uncompress | uncompress hello.z |
.gz | gunzip | gunzip hello.gz |
.tar.gz/.tgz | tar xvzf | tar xvzf hello.tar.z |
.tar.bz2 | tar jxvf | tar jxvf hello.tar.bz2 |
.rpm | 安装:rmp -i 解压:rmp2cpio | 安装:rpm -i hello.rpm 解压:rmp2cpio hello.rpm |
.deb | 安装:dpkg -i 解压:dpkg-dep --fsys-tarfile | 安装:dpkg -i hello.deb 解压:dpkg-dep --fsys-tarfile hello.deb |
-zip | unzip | unzip hello.zip |
6.Linux 软件的安装;
Linux | 管理机制 | 使用指令 | 线上升级机制 |
---|---|---|---|
Red Hat/Fedora | RPM | rpm | YUM(yum) |
Debian/Ubuntu | DPKG | dpkg | APT(apt-get |
7.Linux 程序开发过程及其使用的工具;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oHVBLYpj-1608779280949)(D:\数据可视化\大数据分析学习\图片\image-20201221185954155.png)]
文档编辑VI
GCC工具
GDB工具
Make工具
8.vi 三种工作模式的相互转换关系;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JPGMJgpi-1608779280951)(D:\数据可视化\大数据分析学习\图片\image-20201221190205279.png)]
9.vi 的基本操作命令;
i:在当前光标所在处插入要输入的字符,光标后面的字符会向后退
o:在光标所在行的下方插入一行
a:从当前光标的下一个字符的位置添加字符,已存在的字符会向后退
10.GCC 编译处理流程及文件类型;
- 预处理:分析各种预处理命令,如#define,#include,#if
- 编译:根据输入文件产生汇编语言程序
- 汇编:将汇编语言输入,产生扩展名为.o的目标文件
- 链接:以.o目标文件,库文件作为输入,生成可执行文件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LtNVgxj2-1608779280952)(D:\数据可视化\大数据分析学习\图片\image-20201221190526545.png)]
11.GCC 的常用选项及 GCC 的常用编译指令;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N8ZVi4Ys-1608779280953)(D:\数据可视化\大数据分析学习\图片\image-20201221190637991.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pC9Nsp8V-1608779280954)(D:\数据可视化\大数据分析学习\图片\image-20201221190653166.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZF3hoFO7-1608779280955)(D:\数据可视化\大数据分析学习\图片\image-20201221190702725.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SssHxrfW-1608779280955)(D:\数据可视化\大数据分析学习\图片\image-20201221190712351.png)]
GCC常用编译指令:
选项 | 用法 | 作用 |
---|---|---|
无选项编译链接 | gcc hello.c | 将hello.c预处理、汇编、编译并链接形成可执行文件,这里未指定输出文件,默认输出为a.out |
选项-o | gcc hello.c -o hello | 将hello.c预处理、汇编、编译并链接形成可执行文件helllo,-o选项用来指定输出文件的文件名 |
选项-E | gcc -E hello.c -o hello.i | 将hello.c预处理输出hello.i文件 |
选项-S | gcc -S hello.i | 将预处理输出文件hello.i汇编成hello.s文件 |
选项-c | gcc -c hello.s | 将汇编输出文件hello.s编译输出为hello.o文件 |
无选项链接 | gcc hello.o -o hello | 将编译输出文件hello.o链接成最终可执行文件hello |
选项-O | gcc -O1 hello.c hello | 使用编译优化级别1编译程序,级别为1~3,级别越大优化效果越好,但编译时间越长 |
选项-Wall | gcc -Wall hello.c -o hello | 能够显示所有的警告信息,以便于修改调试 |
12.GDB 的基本用法与命令;
- 编译时使用调试选项 gcc -g hello.c main.c -o hello
- 启动GDB
- help查询命令用法
- quit或ctrl+d退出GDB
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EATbY8pi-1608779280956)(D:\数据可视化\大数据分析学习\图片\image-20201221191033312.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HpLaQTFj-1608779280957)(D:\数据可视化\大数据分析学习\图片\image-20201221191042183.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VmmiVMsd-1608779280957)(D:\数据可视化\大数据分析学习\图片\image-20201221191052133.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aG804qZE-1608779280958)(D:\数据可视化\大数据分析学习\图片\image-20201221191112205.png)]
13.Make 程序和 Makefile 文件;
Make:自动编译所有内核代码文件,要
使用make工具程序,必须编写一个名称为
makefile(或Makefile)的文件。
Makefile:主要包含一些make要遵守的执
行规则和要求执行的命令等内容,用于告诉
make需要对所涉及的源文件做哪些操作和处
理以生成相应的目标文件。
14.Makefile 里主要包含的五个东西;
显式规则,隐含规则,变量定义,文件指示和注释
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8DVNCXDm-1608779280959)(D:\数据可视化\大数据分析学习\图片\image-20201221191310815.png)]
16.make 的工作原理;
- make在当前目录下找名字为Makefile或makefile的文件
- 将文件中的第一个目标文件作为最终目标文件
- 如果最终目标文件不存在或者最终目标文件依赖的后面的.o文件的文件修改时间更新,执行后面定义的命令生成最终目标文件
- 如果依赖的.o文件不存在,make在当前文件中找目标为该.o文件的依赖规则,生成.o文件
17.Makefile 的语法-常用变量、自动变量、自动生成
依赖性、伪目标;
- = 使用时展开
- := 定义时展开
- += 变量追加
- ?= 若未定义则定义,若一定义则不执行此定义
自动推导文件以及文件依赖关系后面的命令
伪目标:即便该命令执行出错,make也不管:.PHONY
第四章 嵌入式软件编程技术
1.GUN ARM 汇编编程基础: GUN ARM 汇编语句
格式、常用的预定义寄存器名称、GNU 汇编语言定
义入口点、常用伪操作(.end;.include;.gobal)。
GUN
执行指令,伪操作,伪指令
R0-R15:通用寄存器
A1-A4:入口参数,处理结果,暂存
IP:保存栈指针
LR:链接寄存器
CPSR:当前程序状态寄存器
SPSR:程序状态备份寄存器
GNU
汇编程序段:text代码段,数据段,未初始化,端数据
默认入口时_start标号,也可以使用ENTRY标记指明其他入口点
十进制,二进制0B,八进制0,十六进制
字符串“xxx\n”
表达式,其他符号使用与C语言类似
常用伪操作:数据定义伪操作,函数定义伪操作
伪操作:穿插在汇编编译、链接程序将源程序正确生成目标代码并合理分配存储区的一类符号
.end:表明源文件的结束
.include:在指定位置展开文件
.gobal:全局标号
主要作用:标识段的气质及属性,定义数据的类型,分配存储区大小,定义过程及其类型,表示程序的结束位置等
2.汇编语言的简单程序编程;
理解例题,会写展开代码
用GNU ARM汇编1程序设计实现20的阶乘,并将其64位结果放在R9和R8寄存器中(其中R9放高32位,R8放低32位)
.global _start
.text
_start:
MOV R8, #20 @低32位初始化为20
MOV R9, #0 @高32位初始化为0
SUB R0,R8, #1 @初始化计数器
Loop:
MOV R1,R9 @暂存高位值
UMULL R8,R9,R0,R8 @[R9 : R8] = R0 * R8 R9存储高8位的值,R8存储低8位的值
MLA R9,R1,R0,R9 @R9 = R1 * R0 + R9
SUBS R0,R0,#1 @计数器递减
BNE Loop @计数器不为0时继续循环
.Stop:
B Stop
.end @文件结束
3.可重入函数及其解决方法;
- 如果某个函数可被多个任务并发调用而不会造成数据错误,则该函数具有可重入性
- 可重入函数可在任意时刻被中断,稍后继续运行时不会造成错误
- 解决:
- 将全局变量变为局部变量
- 使用信号量操作
- 使用中断处理函数:Disable_IRQ()
4.中断及处理的硬件部分及软件部分;
硬件部分:
- 复制CPSR到SPSR_
- 设置正确的CPSR位
- 切换到
- 保存返回地址到LR_
- 设置PC跳转到相应的异常向量表入口
软件部分:
- 把SPSR和LR压栈
- 把中断服务程序的俱存其压栈
- 开中断,允许嵌套中断
- 中断服务程序执行完后,恢复寄存器
- 弹出SPSR和PC,恢复执行
5.高级语言与低级语言混合编程;
- 汇编代码简洁,采用内联汇编
- 将汇编程序以文件的形式加入到项目中,按照ATPCS过程调用标准
子程序间通过寄存器R0-R3传递参数
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FTcETynE-1608779280960)(D:\数据可视化\大数据分析学习\图片\image-20201223145818873.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zRDe5PBs-1608779280961)(D:\数据可视化\大数据分析学习\图片\image-20201223145828860.png)]
汇编程序调用C程序
- 在汇编程序中使用import伪指令事先声明将要调用的C语言函数
- 通过BL指令来调用c函数
c程序调用汇编程序
- 在汇编程序中使用EXPORT伪指令声明被调用的子程序,表示该子程序将在其他文件中被调用
- 在C程序中使用extern关键字声明要调用的汇编子程序为外部函数
内联汇编:
- 事先一些高级语言不能事先或者不容易事先的功能
- 时间要求紧迫
- 支持大部分ARM指令和Thumb指令
asm(
汇编语句模板
输出部分
输入部分
修改部分(用寄存器保存下来)
)
第五章 开发环境和调试技术
1.宿主机-目标机开发模式;
宿主机:资源丰富
目标机:资源受限
4种链接方式:串口,以太网,USB,JTAG
2.嵌入式软件开发流程;
()为中间得到的结果文件
代码编程(c/汇编源程序)->交叉编译(OBJ文件)->交叉链接(系统映像文件)->重定向与下载到目标板->目标板与宿主机开发平台一起调试
3.交叉编译与本地编译的区别;
- 交叉编译指在一种平台上编译出能在另一种平台(体系结构不同)上运行的程序
- 本地编译在本机平台上编译出能在本机上运行的程序
4.交叉调试与本地调试的区别;
相关文章
动力学技术KTU1121 USB Type-C 端口保护器的介绍、特性、及应用
Sensata PTE7300密封数字压力传感器的介绍、特性、及应用
PANJIT PBHV8110DA/PBHV9110DA低Vce(sat)晶体管的介绍、特性、及应用
ams OSRAM OSLON 黑色平板X LED器件的介绍、特性、及应用
Cree LED CLQ6A三合一贴片LED的介绍、特性、及应用
Cree LED CLQ6B 4-in-1 RGBW贴片LED的介绍、特性、及应用
NDK NX1210AB表面贴装晶体的介绍、特性、及应用
伊顿ACE2V3225共模芯片电感器的介绍、特性、及应用
意法半导体X040灵敏型栅可控硅和Z040可控硅的介绍、特性、及应用
ABLIC S-82Y1B电池保护芯片的介绍、特性、及应用
交叉调试 | 本地调试 |
---|---|
调试器和被调试程序运行在不同的计算机上 | 调试器和被调试器运行在同一台计算机上 |
可独立运行 | 需要操作系统的支持 |
被调试程序的装载由调试器完成 | 被调试程序的装载由Loader程序完成 |
需要通过外部通信的方式控制被调试程序 |