嵌入式课后答案11页版本.docx
《嵌入式课后答案11页版本.docx》由会员分享,可在线阅读,更多相关《嵌入式课后答案11页版本.docx(16页珍藏版)》请在冰豆网上搜索。
嵌入式课后答案11页版本
第1章概述
1.嵌入式系统的基本含义是什么?
为什么说单片机是典型的嵌入式系统?
一种计算机硬件和软件的组合,也许还有机械装置,用于实现一个特定功能。
在某些特定情况下,嵌入式系统是一个大系统或产品的一部分。
MCU的含义是:
在一块芯片上集成了中央处理单元(CPU)、存储器(RAM/ROM等)、定时器/计数器及多种输入输出(I/O)接口的比较完整的数字处理系统。
大部分嵌入式系统以MCU为核心进行设计。
MCU从体系结构到指令系统都是按照嵌入式系统的应用特点专门设计的,它能很好地满足应用系统的嵌入、面向测控对象、现场可靠运行等方面的要求。
因此以MCU为核心的系统是应用最广的嵌入式系统。
2. 简述嵌入式系统的特点以及应用领域。
答:
嵌入式系统属于计算机系统,但不单独以通用计算机的面目出现;嵌入式系统开发需要专用工具和特殊方法;使用MCU设计嵌入式系统,数据与程序空间采用不同存储介质;开发嵌入式系统涉及软件、硬件及应用领域的知识;嵌入式系统的其他特点,比如紧张的资源,较高稳定性要求,低功耗,低成本等。
一般用于工业控制,智能家电,日常电子等领域。
日常数码产品:
手机,MP3,U盘,相机等。
日常工业类:
冰箱,空调,微波炉,汽车等。
3.比较MCU与CPU的区别与联系。
答:
CPU是一个单独的PC处理器。
而MCU,则有微处理器,存储器(RAM/ROM等)、定时器/计数器及多种输入输出(I/O)接口的比较完整的数字处理系统。
所以可以这么说,MCU是一个包含微处理器的嵌入式系统,而CPU紧紧是一个处理器而已。
4.嵌入式系统的常用术语
嵌入式的知识体系
◆硬件最小系统(包括电源、晶振、复位、写入调试接口)
◆通用I/O(开关量输入/输出,涉及各种二值量检测与控制)
◆模数转换A/D(各种传感器信号的采集与处理,如红外、温度、光敏、超声波、方向等)
◆数模转换D/A(对模拟量设备利用数字进行控制)
◆通信(串行通信接口SCI、串行外设接口SPI、集成电路互联总线I2C,CAN、USB、嵌入式以太网、ZigBee技术等)
◆显示(LED、LCD等)
◆控制(控制各种设备,包括PWM等控制技术)
◆数据处理(图形、图像、语音、视频等处理或识别)
◆各种具体应用
与硬件相关的术语
Ø封装(Package)
Ø印刷电路板(PCB,Printedcircuitboard)
Ø动态可读写随机存储器(DRAM,DynamicRandomAccessMemory)
Ø静态可读写随机存储器(SRAM,StaticRandomAccessMemory)
Ø只读存储器(ROM,ReadOnlyMemory)
Ø闪速存储器(FlashMemory)
Ø模拟量
开关量
与通信相关的术语
Ø并行通信
Ø串行通信
Ø串行外设接口SPI
Ø集成电路互连总线I2C
Ø通用串行总线USB
Ø控制器局域网CAN
Ø背景调试模式BDM
Ø边界扫描测试协议JTAG
与功能模块及软件相关的术语
Ø通用输入/输出GPIO
ØA/D与D/A
Ø脉冲宽度调制器PWM
Ø看门狗
Ø液晶显示LCD
Ø发光二极管LED
Ø键盘
Ø实时操作系统RTOS
5.C语言的那些特性使得它成为嵌入式系统中使用频率最高的高级语言。
答:
相比底端汇编,更简单易学;与高级语言如(C++,C#,java等)相比,执行效率高,编译后的编码体积小,而且支持好的编译器还支持嵌入汇编代码;对位的操纵能力很强。
6.举例说明结构体变量类型的定义,结构体变量的声明和使用方法
6.结构体
定义结构体类型,类型名称为student:
structstudent{
charname[8];//成员变量name
intage;//成员变量age
charsex[2];//成员变量sex
};
声明和使用结构体变量和指针:
structstudents1;
structstudent*Pstudent;
s1.age=20;
Pstudent=(structstudent*)malloc(sizeof(structstudent));
Pstudent->age=18;
1、什么是嵌入式系统?
嵌入式系统的特点是什么?
嵌入式系统是以应用为中心,以计算机技术为基础,软件硬件可裁剪,功能、可靠性、
成本、体积、功耗严格要求的专用计算机系统。
嵌入式系统的主要特点如下:
高实时性OS、系统内核小
专用性强
系统精简
实时性和可靠性要求高
嵌入式软件开发走向标准化
嵌入式系统需要专门的开发工具和环境
2、嵌入式软件的特点有哪些?
规模相对较小,开发难度大
快速启动,直接运行
实时性和可靠性要求高
程序一体化
两个平台
3、嵌入式系统的主要应用领域有哪些?
消费电子、通信设备、家庭设备、汽车电子、工业控制、军事国防、医疗电子等。
4、按实时性来分,嵌入式系统可分为几类?
它们的特点是什么?
可分为硬实时系统和软实时系统。
其中硬实时系统对响应时间有严格要求,如果系统
响应时间得不到满足,就会引起系统崩溃或致命的错误;软实时系统对响应时间有要求,
但系统响应时间得不到满足时,不会导致系统崩溃或致命的错误。
0deadlinetime
1
HardSystem
SoftSystem
5、影响系统响应时间的主要因素有哪些?
影响系统响应时间的主要因素有:
任务调度算法
任务执行时间
事件发生的频率
任务数量
中断响应时间
任务响应时间
资源共享
任务间通信
6、根据自己的理解描述嵌入式系统的发展趋势?
行业性嵌入式软硬件平台——标准化
互联网的普及——网络化
半导体技术的改善——小型化
3C技术的快速融合——功能多样化
使用者的需求——个性化
信息服务应用生活化——泛在化
28、请简述计数信号量的工作原理。
计数器信号量通常用于保护多实例访问的资源。
计数信号量可以看成一个内存单元,
这个内存单元的内容保存一个计数值。
当一个任务用semTake获取一个计数信号量时,会有
两种结果:
如果这个信号量的计数是非0的,那这个信号量的计数就会减1,调用semTake的任务也
会继续执行;
如果这个信号量的计数是0,调用semTake的任务会被阻塞,等待信号量的可用。
如果
用semTake获取一个计数信号量时指定了超时,并且达到了超时值,这个任务会从阻塞队列
移出并移入到就绪队列,同时返回错误状态。
有可能会有几个任务同时等待在一个计数信
号量上。
当一个任务调用semGive()释放一个计数信号量时,等待在这个计数信号量队列中的任
务会解除阻塞状态。
如果没有任务等待,该信号量计数会加1。
29、简述消息队列的工作机制?
工作模式?
有何优缺点?
消息队列是任务之间传递信息的一种机制,允许多个任务,中断之间发送以指针方式
定义的变量或其他信息,指向的数据结构的变量类型也可以有所不同;可以看作多个邮箱
组成的数组,共用一个等待列表,可以用作计数型信号量。
主要的工作模式有两种:
C/S模型、双工通信模型。
优点:
可以携带少量信息,可以缓冲,防止峰值。
缺点:
效率不高。
传递指针信息,没有对消息进行复制,不能对原消息进行修改,效
率相对高(vxWorks会复制消息)。
30、简述管道的工作机制?
与消息队列相比,各有什么优点?
管道是构筑于消息队列之上,由pipeDrv所控制的一个虚拟的I/O设备,具有标准的I/O
接口。
消息队列的优点:
具有超时功能、消息有优先级、更快、可以被删除。
管道的优点:
使用标准的I/O接口,如read(),write(),open(),close();可以通过iotaskStdSet
()重定向;在Select()重可以使用文件描述符。
31、简要描述VxWorks中信号的定义和用途。
信号是一种软件通知,用以通知处理事件的任务。
VxWorks支持软件信号功能,信号
异步地改变任务的控制流,任何任务都可以向另外一个任务发送信号。
信号多用于异常处理,很少用于任务间通信。
32、实时系统软件开发不同于其他软件工程的主要特征有哪些?
实时系统的设计是受资源约束的。
时间是实时系统的首要资源,除此以外,其他系统
资源如内存大小等,在实现系统目标时都有可能与时间进行折衷。
实时系统是紧凑而复杂的,通常需要软件硬件协同设计。
实时系统的运行常常不需要用户的参与。
33、选择嵌入式系统处理器时主要考虑哪些因素?
主要考虑的因素有应用类型、I/O接口、主频、功耗、所支持的存储器类型、总线、价
格、封装、产品的生命力和厂家的实力、技术支持和第三方软件的支持。
34、选择嵌入式操作系统时主要考虑哪些因素?
是自建还是购买,或是使用开源软件;
应用对嵌入式操作系统的功能、性能的要求;
与硬件平台和开发工具的关系;
产品所属的应用领域是否有行业的标准或限制;
技术支持;
版税或服务费的问题。
第2章ARMCortex-M0+处理器
ARM公司在经典处理器ARM11以后的产品统一改用Cortex命名,并分成A50、A、R和M四类,旨在为各种不同的市场提供服务。
1.ARMCortex-A50系列处理器面向高效的低功耗服务器市场领域。
2.ARMCortex-A系列处理器面向尖端的基于虚拟内存的操作系统和用户应用。
3.ARMCortex-R系列处理器针对实时系统,
为有严格的实时响应限制的嵌入式系统提供高性能计算解决方案。
4.ARMCortex-M系列处理器
该系列处理器是一系列可向上兼容的高能效、易于使用的处理器,旨在帮助开发人员满足将来的嵌入式应用的需要。
2.取数指令
存储器中内容加载到寄存器中的指令。
其中,LDR、LDRH、LDRB指令分别表示加载来自存储器单元的一个字、半字、单字节(不足部分以0填充)。
LDRSH和LDRSB指令将存储单元的半字、单字节有符号数扩充至32位,并加载到指定寄存器Rt中。
3.存数指令
寄存器中内容存储至存储器中。
STR、STRH、STRB指令存储Rt寄存器的字、半字、单字节至存储器。
存储单元地址由Rn与Rm之和决定。
Rt、Rn和Rm必须为R0~R7之一。
3.ARMCortex-M0+处理器的寄存器
4.1)立即数寻址,操作数直接通过指令给出,数据包含在指令编码中,随着指令一起被编译成机器码存储于程序空间中。
用#作为立即数的前导标识符。
ARMCortex-M0+立即数范围是0x00~0xff。
例如:
SUBR1,R0,#1@R1←R0-1
MOVR0,#0xff@将立即数0xff装入R0寄存器
2)寄存器寻址,操作数来自于寄存器。
MOVR1,R2@R1←R2
SUBR0,R1-R2@R0←R1-R2
3)直接寻址,操作数来自存储单元,指令中直接给出存储单元的地址。
指令码中显示数据的位数,字(4字节)、半字(2字节)、单字节三种情况。
LDRRt,label@从标号label处连续取4字节至寄存器Rt中
LDRHRt,label@从标号label处连续取2字节至寄存器Rt中
LDRBRt,label@从标号label处取单字节至寄存器Rt中
4)偏移及寄存器间接寻址,操作数来自存储单元,指令中通过寄存器及偏移量给出存储单元的地址。
偏移量不超过4KB(指令编码中偏移量为12位)。
偏移量为0的偏移寻址也称为寄存器间接寻址。
LDRR3,[PC,#100]@地址为(PC+100)的存储器单元的内容加载到寄存器R3中
LDRR3,[R4]@地址为R4的存储单元的内容加载到寄存器R3中
8.伪指令是没有对应机器码的指令,只能为编译器所识别并指导汇编如何进行。
主要用于变量和常量以及宏的定义、条件判断、文件包含等。
第3章KL25简介与硬件最小系统
(本章3.6节内容不做考核要求)
•3.1飞思卡尔Kinetis系列微控制器简介
飞思卡尔在2010年飞思卡尔技术论坛(FTF2010)美国站推出了Kinetis系列微控制器。
面向领域不同,Kinetis系列基于ARMCortex-M内核陆续推出了KinetisK系列、L系列、M系列、W系列。
•KinetisK系列
飞思卡尔的KinetisK系列产品组合有超过200种基于ARMCortex-M4结构的低功耗,高性能、可兼容的微控制器。
目标应用领域是便携式医疗设备、仪器仪表、工业控制及测量设备等。
•KinetisL系列
飞思卡尔的KinetisL系列MCU不仅汲取了新型ARMCortex-M0+处理器的卓越能效和易用性、功耗更低、价格更低、效率更高,而且体现了Kinetis产品优质的性能、多元化的外设、广泛的支持和可扩展性。
目标应用领域是8/16位为微控制器应用领域的升级换代,适用于价格敏感、能效比相对较高领域,如手持设备、智能终端等。
•KinetisM系列
飞思卡尔的KinetisM系列也是基于32位ARMCortex-M0+内核的MCU。
目标应用领域是经济高效的单相或两相电表设计中。
•KinetisW系列
飞思卡尔的KinetisW系列MCU扩展了KinetisK系列基于ARMCortex-M4的成功之处。
目标应用领域是智能电表、传感器控制网络、工业控制、数据采集等。
MCU的硬件最小系统是指可以使内部程序运行所必须的最低规模的外围电路,也可以包括写入器接口电路。
2.电路中需要大量的电源类引脚用来提供足够的电流容量同时保持芯片电流平衡,所有的电源引脚必须外接适当的滤波电容抑制高频噪音。
去耦是指对电源采取进一步的滤波措施,去除两级间信号通过电源互相干扰的影响
3.一般情况下,MCU的硬件最小系统由电源、晶振及复位等电路组成。
随着Flash存储器制造技术的发展,硬件最小系统应该把写入器的接口电路也包含在其中。
KL25芯片的硬件最小系统包括电源电路、复位电路、晶振电路及与写入器相连的SWD接口电路。
1.MOV指令与LDR指令都是往目标寄存器中传送数据,但是它们有什么区别吗?
MOV指令用于将数据从一个寄存器传送到另一个寄存器中,或者将一个常数传送到一个寄存器中,但是不能访问内存。
LDR指令用于从内存中读取数据放入寄存器中。
第5章构件化开发方法与底层驱动构建封装规范
1.嵌入式硬件构件是指将一个或多个硬件功能模块、支撑电路及其功能描述封装成一个可重用的硬件实体,并提供一系列规范的输入/输出接口。
据接口之间的生产消费关系,接口可分为提供接口和需求接口两类。
根据所拥有接口类型的不同,硬件构件分为核心构件、中间构件和终端构件三种类型。
2.构件(Component)是可重用的实体,它包含了合乎规范的接口和功能实现,能够被独立部署和被第三方组装。
软件构件(SoftwareComponent)是指,在软件系统中具有相对独立功能、可以明确辨识构件实体。
嵌入式软件构件(EmbeddedSoftwareComponent)是实现一定嵌入式系统功能的一组封装的、规范的、可重用的、具有嵌入特性的软件构件单元,是组织嵌入式系统功能的基本单位。
嵌入式软件分为高层软件构件和底层软件构件(底层驱动构件)。
高层软件构件与硬件无关,而底层驱动构件与硬件密不可分,是硬件驱动程序的构件化封装。
•2.5.2基于硬件构件的嵌入式系统硬件电路设计
5.2.1设计时需要考虑的基本问题
1.MCU的选择
选择MCU时要考虑MCU所能够完成的功能、MCU的价格、功耗、供电电压、I/O口电平、管脚数目以及MCU的封装等因素。
2.电源
(1)考虑系统对电源的需求,例如系统需要几种电
估计各需要多少功率或最大电流(mA)。
(2)考虑芯片与器件对电源波动性的需求。
一般允许电源波动幅度在±5%以内。
对于A/D转换芯片的参考电压一般要求±1%以内。
(3)考虑工作电源是使用电源模块还是使用电源电路。
3.普通I/O口
(1)上拉、下拉电阻:
考虑用内部或者外部上/下拉电阻。
(2)开关量输入:
一定要保证高低电压分明。
(3)开关量输出:
基本原则是保证输出高电平接近电源电压,低电平接近地电平。
4.A/D电路与D/A电路
(1)A/D电路:
要清楚前端采样基本原理,对电阻型、电流型和电压型传感器采用不同的采集电路。
如果采集的信号微弱,还要考虑如何进行信号放大。
(2)D/A电路:
考虑MCU的引脚通过何种输出电路控制实际对象。
5.控制电路
对外控制电路要注意设计的冗余与反测,要有合适的信号隔离措施等。
在评估设计的布板时,一定要在构件的输入输出端引出检测孔,以方便排查错误时测量。
6.考虑低功耗
低功耗设计并不仅仅是为了省电,更多的好处在于降低了电源模块及散热系统的成本。
要做到低功耗一般需要注意以下几点:
(1)并不是所有的总线信号都要上拉。
(2)不用的I/O口不要悬空,如果悬空的话,受外界的一点点干扰就可能成为反复振荡的输入信号,而MOS器件的功耗基本取决于门电路的翻转次数。
(3)对一些外围小芯片的功耗也需要考虑。
7.考虑低成本
(1)正确选择电阻值与电容值。
(2)指示灯的选择。
(3)不要什么都选最好的。
4.为了抑制共阻抗,可采取以下措施:
(1)一点接地
(2)就近多点接地
(3)大面积接地
(4)加粗接地线
(5)D/A(数/模)电路的地线分开
5.3.3硬件构件及底层软件构件的重用与移植方法
1.硬件构件的重用与移植
对于以单MCU为核心的嵌入式应用系统而言,当用硬件构件“组装”硬件系统时,核心构件(即最小系统)有且只有一个,而中间构件和终端构件可有多个,并且相同类型的构件可出现多次。
下面以终端构件LCD为例,介绍硬件构件的移植方法。
2.底层构件的移植
当一个已设计好的底层构件移植到另外一个嵌入式系统中时,其头文件和程序文件是否需要改动要视具体情况而定。
例如:
系统的核心构件发生改变(即MCU型号改变)时,底层内部构件头文件和某些对外接口函数也要随之改变,例如模块初始化函数。
而对于外接硬件构件,希望不改动程序文件,而只改动头文件,那么,头文件就必须充分设计。
以LCD构件为例,与前图相对应的底层构件头文件lcd.h可如下编写。
第6章串行通信模块及第一个中断程序结构
MCU与PC进行通信为什么要进行电平转换?
如何进行电平转换?
答:
在MCU中,若用RS-232总线进行串行通信,则需外接电路实现电平转换。
在发送端,需要用驱动电路将TTL电平转换成RS-232电平;在接收端,需要用接收电路将RS-232电平转换为TTL电平。
电平转换器不仅可以由晶体管分立元件构成,也可以直接使用集成电路。
目前广泛使用MAX232芯片较多,该芯片使用单一+5V电源供电实现电平转换。
1.M0+中断结构及中断过程
由模块中断源、中断控制器(NVIC)和M0+内核组成。
其中断过程分为二步:
(1)模块中断源向中断控制器(NVIC)发出中断请求信号。
(2)中断控制器对发来的中断信号进行管理,判断该中断是否允许中断,若允许,通过私有外设总线发送给M0+内核,由内核进行中断处理;如果同时有多个中断信号到来,NVIC根据设定好的中断信号的优先级进行判断,优先级高的中断首先响应,优先级低的中断挂起,压入堆栈保存;如果优先级完全相同的多个中断源同时请求,则先响应IRQ中断号较小的,其他的被挂起。
3.中断初始化设置步骤
根据KL25的中断机制,想让一个非内核中断源能够得到内核响应,必须要进行初始化设置。
初始化的几个基本步骤如下:
(1)设置模块中断使能位使能模块中断,使模块能够发送中断请求信号。
例如在UART中,将控制寄存器C2的RIE位置1。
(2)在中断控制器中设置中断使能寄存器,使该模块对应的使能位置1,允许该中断请求。
第7章 定时器模块
1.实现计数与定时的基本方法有哪些?
比较它们的优缺点。
答:
实现计数与定时的基本方法有三种:
完全硬件方式、完全软件方式和可编程计数器/定时器方法。
其中完全硬件方式速度快,但通用性和灵活性差;
完全软件方式的优点是节省硬件。
主要缺点是执行延时程序期间,CPU一直被占用,所以降低了CPU的使用效率,也不容易提供多作业环境;
可编程计数器/定时器方法的最突出的优点是计数时不占用CPU的时间。
3.定时器模块的核心是什么,为什么?
答:
定时器模块的核心是计数器。
计数器装载预置的初始计数值之后,启动会以预设的频率进行加一或者减一的运作,当其值变化到0(溢出到0或者减到0)时,即完成了定时的功能,其定时的时长取决于预置的初始计数值和预设的频率。
4.TPM模块具有基本定时、输入捕捉、输出比较、脉宽调制(PWM)功能。
1.寄存器地址分析
每个TPM模块的地址(十六进制)为4003_8000+x*1000(其中x代表模块号)。
2.控制寄存器
1)状态和控制寄存器
SC包含的溢出状态标志和控制位,用于配置中断使能、模块配置和预分频因子。
2)通道(n)状态和控制寄存器
通道状态控制寄存器CnSC包含通道中断状态标志和控制位用来配置中断使能、通道模式和引脚功能。
3.捕捉和比较状态寄存器
对于每个LPTPM通道中,状态寄存器包含了状态标志CHnF位(在CnSC中)和TOF位(在SC中)的一个拷贝,这是为了便于软件编写。
4.其它寄存器
1)计数器寄存器
2)模数寄存器
3)通道(n)值寄存器
4)配置寄存器
TPM(定时器/脉宽调制模块)共有三个模块TPM0/TPM1/TPM2,TPM0有6个通道,TPM1和TPM2只有2个通道。
TPM支持输入捕捉、输出比较,并且能够产生PWM信号来控制电机。
TPM的基本定时器部分是一个递增的计数器,通过设定模块的溢出值,当计数器递增到该数值时,产生TPM中断,可以通过选择时钟源和溢出值设定该计数器的频率。
周期中断定时器模块(PeriodicInterruptTimer,PIT)是一组可以用于产生中断和触发DMA通道的定时器。
该模块的中断都是可屏蔽的,每个定时器都有独立的溢出周期,周期中断定时器模块没有外部引脚。
----定时器+调试模式+中断
低功耗定时器LPTMR(Lowpowertimer)可以被配置成具有可选预分频因子的定时计数器,也可以被配置成带有脉冲干扰滤波器的脉冲计数器。
绝大多数的系统复位都不会影响其继续使用,可以用作天数计数器。
LPTMR模块共有五种操作模式,即运行模式、等待模式、停止模式、低漏电模式和调试模式。
一种计算机硬件和软件的组合,也许还有机械装置,用于实现一个特定功能。
其核心是微控制器单元(MCU)
实时时钟RTC(RealTimeClock)模块是一个独立供电的模块,在芯片掉电时由备用电源(VBAT)供电,确保RTC计时器正常运行,保持RTC寄存器状态。
RTC模块主要包含一个外部晶体振荡器、一个POR(Power-onr