一、名词解释
封装
用塑料、金属或陶瓷材料等把集成电路封在其中。可以保护芯片,并使芯片与外部世界连接
印刷电路板(PCB)
组装电子元件用的基板,在通用器材上按预定设计形成点间连接及印制元件的印制板,是电
路原理图的实物化。
动态可读写随机存储器(DRAM)
由一个MOS管组成一个二进制存储位。放电导致“1”的电压慢慢降低
静态可读写随机存储器(SRAM)
由四个或六个MOS管构成一个二进制位,有电不用刷新,保持原有数据
只读存储器(ROM)
数据可以读出,但不可以修改
闪速存储器(FlashMemory)
是一种新型快速的E2PROM
模拟量
时间连续、数值也连续的物理量
开关量
一种二值信号,用两个电平分别表示两个逻辑值
并行通信
数据的各位同时在多根并行数据线上进行传输的通信方式,各位同时由源到达目
的地
串行通信
数据在单线或双线上,按时间先后一位一位地传送,优点是节省传输线,对并行
来说速度较慢
串行外设接口SPI
一种串行通信方式,用于MCU扩展外围芯片使用
集成电路互连总线I2C
一种两线式串行总线,用于用户板内MCU与其外围电路的连接
通用串行总线USB
通用串行总线是MCU与外界进行数据通信的一种新的方式,速度快,抗干扰能
力强
控制局域网CAN
全数字、全开放的现场总线控制网络
背景调试模式BDM
一种调试接口,用于嵌入式MCU的程序下载与程序调试
边界扫描测试协议JTAG
对芯片进行测试的一种方式,用于对MCU的程序进行载入与调试
通用输入/输出GPIO
基本的输入输出,也称并行IO
A/D与D/A
将电压信号(模拟量)转换为对应的数字量
DA将数字量转换成电压信号
脉冲宽度调制器PWM
一个D/A转换器,可以产生一个高电平和低电平之间重复交替的输出信号
看门狗
为了防止程序跑飞而设计的一种自动定时器,跑飞时定时器自动溢出,是系统程
序复位
液晶显示LCD
电子信息产品的一种显示器件,分为字段型,点阵字符型,点阵图形型
发光二极管LED
将电流顺向通到半导体PN结处而发光的器件
键盘
嵌入式系统中常见的输入设备,识别键盘有查询法,定时扫描法与中断法
实时操作系统RTOS
运行于嵌入式系统上的操作环境,可以提供建立多任务的能力
采样精度
数字量变化一个最小量时模拟信号的变化量,即采样位数
采样速率
完成一次A/D采样所要花费的时间
滤波
为了使采样的数据更准确,必须对采样的数据进行筛选,去掉误差较大的毛刺
中值滤波
连续采样n次,并将结果按照从大到小的顺序排列,取中间值作为中值滤波的结果
均值滤波
进行n次中值滤波,再将n次中值结果相加,然后除以采样次数n得到最终结果
物理量回归
把AD采样值与实际物理量对应起来
二、简答
1.嵌入式系统的基本含义是什么?为什么说MCU是典型的嵌
入式系统?
含义:一种计算机硬件和软件的组合,用于实现一个特定功能。
置入应用对象内部起操作控制作用的专用计算机系统。
MCU含义:在一块芯片上集成了中央处理单元(CPU)、存储器(RAM/ROM等)、定时器/
计数器及多种输入输出(I/O)接口的比较完整的数字处理系统。
why:大部分嵌入式系统以MCU为核心进行设计。MCU从体系结构到指令系统都是按照嵌
入式的应用特点专门设计的,它能很好地满足应用系统的嵌入、面向测控对象、现场可靠运
行等方面的要求。
2.简述嵌入式系统的特点,并给出一些嵌入式系统的实例。
(1)嵌入式系统属于计算机系统,但不单独以通用计算机的面目出现。
(2)嵌入式系统开发需要专用工具和特殊方法。
(3)使用MCU设计嵌入式系统,数据与程序空间采用不同存储介质。(程序被固化在FLASH
中,变量及堆栈在RAM存储器)。
(4)开发嵌入式系统设计软件和硬件及应用领域的知识。
(5)嵌入式系统的其他特点:资源不如通用丰富,更高可靠性和稳定性,有实时性要求,
低成本,低功耗,生命周期长。
一般用于工业控制,智能家电,日常电子等领域。如冰箱、洗衣机等。
3.学习一个新MCU芯片的基本要素
(1)了解性能及内部主要功能模块与存储空间的地址分配
(2)了解基本的编程结构、编程模式及寻址方式
(3)了解中断结构
(4)了解芯片的引脚的总体布局情况、硬件最小系统电路
(5)理解第一个工程的结构、工程中各个文件的基本功能
(6)编译、链接,理解列表文件、机器码文件
(7)借助硬件评估环境,重复练习
(8)充分理解第一个工程的执行过程
(9)决定是否采用嵌入式(实时)操作系统
4.如何选择入门芯片
不是追求芯片位数、工作频率、操作系统等因素,而是追求稳定可靠、维护、升级、功
耗、价格等指标。初学者尽量选择8位,工作频率低的芯片。
通过某一MCU作为蓝本获得嵌入式系统知识体系的通用知识,基本原则:入门时间较
短、硬件成本较少、知识要素较多、学习难度较低
5.比较MCU和CPU的区别和联系
CPU:中央处理器(CentralProcessingUnit)
MCU:MCU(MicroControlUnit)中文名称为微控制单元
区别:CPU是数据处理的单元,MCU中一般包含CPU,但除了数据处理单元外还有其他的
外围的模块,如、RAM、ROM、定时计数器和多种I/O接口等,也就是说,MCU是集成了
CPU和其他外围模块的微型控制单元。MCU是一个包含微处理器的嵌入式系统,而CPU仅
仅是一个处理器而已。
6.C语言的哪些特性使它成为嵌入式系统使用频率最高的高级
语言?
(1)相比底端汇编,更简单易学;
(2)与高级语言如(C++,C#,java等)相比,执行效率高,编译后的编码体积小,而
且支持好的编译器还支持嵌入汇编代码;
(3)对位的操纵能力很强。
处理器分为哪几个系列?简要说明各系列的主要应用
范围。
(1)Cortex-A系列作为开放式操作系统的高性能的应用程序处理器在高级工艺节点中
可实现高达2GHz及以上标准频率的卓越性能。Cortex-A系列处理器适用于具有高计算
要求、运行丰富操作系统以及提供交互媒体和图形体验的应用领域。
(2)ARMCortex-R实时处理器为具有严格的实时响应限制的嵌入式系统提供高性能计
算解决方案。目标应用包括:智能手机、硬盘驱动器、数字电视、医疗行业、工业控制、
汽车电子等。
(3)ARMCortex-M处理器系列是一系列可向上兼容的高能效、易于使用的处理器,
Cortex-M系列针对成本和功耗敏感的MCU和终端应用(如智能测量、人机接口设备、
汽车和工业控制系统、大型家用电器、消费性产品和医疗器械)的混合信号设备进行过
优化。
tex-M4指令系统寻址方式有几种?
(1)立即数寻址方式中,操作数直接通过指令给出,数据包含指令编码中,随着指令一
起被编译成机器码存储于程序空间中。用“#”作为立即数的前导标识符。ARMCortex-M0+
的立即数范围是0x00~0xff。
(2)寄存器寻址中,操作数来自于寄存器。
(3)直接寻址方式中,操作数来自于存储单元,指令中直接给出存储单元地址。指令码
中,显示给出数据的位数,有字(4字节)、半字(2字节)、单字节三种情况。例如:
(4)偏移寻址中,操作数来自于存储单元,指令中通过寄存器及偏移量给出存储单元的
地址。偏移量不超过4KB(指令编码中偏移量为12位)。偏移量为0的偏移寻址也称为
寄存器间接寻址。
tex-M4处理器有哪些寄存器?简述各个寄存器的
作用。
(1)通用寄存器R0~R12:用于数据操作。
(2)堆栈指针R13:分为主堆栈指针(MSP)和进程堆栈指针(PSP)。
MSP:操作系统内核、中断服务例程以及所有需要特权访问的应用程序代码来使用。
PSP:用于常规应用程序代码。
(3)连接寄存器R14(LR):当调用一个子程序时,由R14存储返回地址。
(4)程序计数寄存器R15(PC):指向当前程序地址。
(5)特殊功能寄存器:程序状态字寄存器、中断屏蔽寄存器、控制寄存器。
10.给出K60芯片的RAM、Flash的地址范围,说明堆栈空
间、全局变量、常量、程序存放在哪儿
FLASH
地址:0x0000_0000~0x0007_FFFF,
MK60N512VMD100芯片的实际Flash存储器大小512KB
存放中断向量表、程序代码及常量
中断向量表从0x0000_0000处存放,程序代码从0x0000_0410处存放
RAM
地址:0x1FFF_0000~0x2000_FFFF
MK60N512VMD100芯片的RAM大小128KB
存放全局变量和局部变量
K60芯片初始化时将在Flash区域0x0000_0000位置开始的中断向量表复制到RAM的起
始位置0x1FFF_0000中,长度0x410个字节。在此之后,RAM存放用户sdata、data、bss等
数据段。在这些数据段存放完后紧接着就是堆和栈的地址空间,堆默认大小事4KB,栈默认
大小是1KB,用户可通过链接文件自行配置大小。
在链接文件中,应该将堆栈指针SP配置在实际RAM存储器的最高地址,进栈时,堆栈
指针向RAM低地址方向移动。出栈时,堆栈指针SP向RAM高地址方向移动。
11.分析K60的最小系统原理图各部分的基本原理
(1)电源及基本的滤波电路:
电路中需要大量的电源类引脚用来提供足够的电流容量,同时保持芯片电流平衡,所有
的电源引脚必须外接适当的滤波电容以抑制高频噪声。
(2)复位电路及复位功能:
复位,意味着MCU一切重新开始。K60的复位引脚是双向引脚,作为输入引脚,拉低
可使芯片复位,作为输出引脚,上电复位期间有低脉冲输出,表示芯片已经复位完成。
(3)晶振电路:
晶振电路为芯片提供准确的工作时钟,相当于计时器。作为振荡源的晶体振荡器分为无
源晶振和有源晶振。有源晶振需要外接电源,无源晶振有两个引脚,由于无极性原件自身无
法起振,因此需要借助辅助电路才能产生振荡信号。晶振一旦不能正常工作,芯片将无法启
动。
(4)JTAG接口电路:
可以实现程序的下载和调试功能。
12.上电启动执行过程
首先查询保存在Flash存储区首端的中断向量表,取出第一个表项的内容作为堆栈初始化指
针,取出第二个表项的内容作为启动函数指针
在_startup函数中,将通用寄存器清0,关中断之后调用start函数
在start.c函数中,关闭看门狗、启动通用例程(复制中断向量表到RAM中)、系统初始化
(sysinit),调用主函数。
13.简要说明临界区访问函数的基本原理及使用场合
基本原理:在构建公共要素内部使用一个静态变量记录系统当前的中断状态,以非零值表示
当前系统关中断的嵌套层次,当计数变量的值为1时说明当前只有一次关中断,此时再开中
断才真正打开系统中断。
使用场合:
①临界状态:此时程序对CPU资源的使用是独占的
②对临界访问进行管理,避免直接执行开关中断管理对临界区的访问产生安全隐患
14.简述M4中断机制及执行过程
(1)首先中断源向中断控制器发出中断请求信号。
(2)然后,中断控制器对发来的中断信号进行管理,判断该中断是否允许中断,若允许,
通过私有外设总线发送给M0+内核,由该内核进行中断处理;
①如果同时有多个中断信号到来,NVIC根据设定好的中断信号的优先级进行判断,
优先级高的中断首先响应,优先级低的中断挂起,压入堆栈保存;
②如果优先级完全相同的多个中断源同时请求,则优先响应IRQ中断号较小的,其他
的被挂起。
的编程要点、相关函数及其作用
(1)通过设置“数据方向寄存器”来指定相应引脚输入或输出功能。若指定位为0,则
为输入;若指定位为1,则为输出。
(2)若是输出引脚,则通过设置“数据输出寄存器”来指定相应引脚输出低电平或高电
平,对应值为0或1。
(3)若是输入引脚,则通过“数据输入寄存器”获得引脚状态,若指定位为0,表示当
前该引脚上为低电平;若为1,则为高电平。
Uint8hw_gpio_init(uint8port,uint8pin,uint8dir,uintstate)初始化端口作为GPIO引脚功能
Voidhw_gpio_t(uint8port,uint8pin,uint8state)设定指定引脚状态
Voidhw_gpio_get(uint8port,uint8pin)获取指定引脚状态
Voidhw_gpio_rever(uint8port,uint8pin)反转指定引脚状态
16.A/D的相关函数及其作用
Uint8hw_adc_init(intModelNumber)A/D初始化
Uint16hw_adc_once(intModelNumber,intChannel,uint8accuracy)采集一次一路模拟量的A/D
值
Uint16hw_adc_mid(intModelNumber,intChannel,uint8accuracy)中值滤波后的结果
Uint16hw_adc_ave(intModelNumber,intChannel,uint8accuracy,uint8N)均值滤波后的结果
17.D/A的相关函数及其作用
voidhw_dac_init(uint8ModelNumber,uint8RefVoltage)初始化DAC模块设定
RefVoltage:参考电压选择
uint8hw_adc_convert(uint8ModelNumber,uint16VReference)执行DAC转换
VReference:参考电压转换值
的相关函数及其作用
(1)初始化:uint8hw_uart_init(uint8uartNo,uint32baud);
(2)接收单个字节:uint8hw_uart_re1(uint8uartNo,uint8*fp);
(3)发送单个字节:uint8hw_uart_nd1(uint8uartNo,uint8ch);
(4)接收N个字节:uint8hw_uart_reN(uint8uartNo,uint16len,uint8*buff);
(5)发送N个字节:uint8hw_uart_ndN(uint8uartNo,uint16len,uint8*buff);
(6)发送字符串:uint8hw_uart_nd_string(uint8uartNo,void*buff);
(7)使能串口接收中断:voidhw_uart_enable_re_int(uint8uartNo);
(8)禁止串口接收中断:voidhw_uart_disable_re_int(uint8uartNo);
三、英语翻译
四、论述题(15×2)
1.嵌入式系统的知识体系
嵌入式系统的应用范围可以粗略分为两大类:
(1)电子系统的智能化(工业控制、现代农业、家用电器等),这类应用所使用的嵌入式处
理器一般被称为微控制器(MCU);
(2)计算机应用的延伸(平板电脑、手机、通信等),这类应用所使用的嵌入式处理器一般
被称为应用处理器。
一般来说,微控制器与应用处理器的主要区别在于可靠性、数据处理量、工作频率等方面,
相对应用处理器来说,微控制器的可靠性要求更高、数据处理量较小、工作频率较低。从开
发角度来讲,应用处理器的软件开发大多需要操作系统的支撑,而微控制器的软件开发可以
根据需要选择使用适当的操作系统也可以不使用操作系统。从由浅入深、由简到繁的学习规
律来说,嵌入式学习的入门应该选择微控制器,而不是应用处理器,应通过对微控制器基本
原理与应用的学习,逐步掌握嵌入式系统的软件与硬件基础,然后在此基础上进行嵌入式系
统其他方面知识的学习。
本书主要阐述以MCU为核心的嵌入式技术基础与实践。要完成一个以MCU为核心的嵌入
式系统应用产品设计,需要有硬件、软件及行业领域相关知识。硬件主要有MCU的最小硬
件系统、输入/输出外围电路、人机接口设计。软件设计有固化软件的设计,也可能含PC软
件的设计。行业知识需要通过协作、交流与总结获得。
概括地说,学习以MCU为核心的嵌入式系统,需要以下软件硬件基础知识与实践训练:
(1)硬件最小系统
(2)通用I/O
(3)模数转换A/D
(4)数模转换D/A
(5)通信(SCI、SPI、I2C,CAN、USB、ZigBee等);
(6)显示(LED、LCD等);
(7)控制(控制各种设备,包含PWM等控制技术);
(8)数据处理(图形、图像、语音、视频等处理或识别);
(9)各种具体应用。
事实上,万变不离其宗,任何应用都可以归入这几类。而应用中的硬件设计、软件设计、测
试等都必须遵循嵌入式软件工程的方法、原理与基本原则。所以,嵌入式软件工程也是嵌入
式系统知识体系的有机组成部分,只不过,它融于具体项目的开发过程之中。
以上实践训练涉及硬件基础、软件基础及相关领域知识。计算机语言、操作系统、开发环境
等均是完成这些目的的工具。有些初学者,容易把工具的使用与所要达到的真正目的相混淆。
例如,有的学习者,学了很长时间的嵌入式操作系统移植,而不进行实际嵌入式系统产品的
开发,到了最后,做不好一个稳定的嵌入式系统小产品,偏离了学习目标,甚至放弃了嵌入
式领域。这就是进入了嵌入式系统学习误区的情况。
2.底层构件的实现方法与编程思想
底层构件是与硬件直接打交道的软件,由头文件和源文件两部分组成。
头文件中的内容主要有:
(1)包含下层构件头文件的#include语句
(2)用以描述构件属性的宏定义语句
(3)对外接口函数原型说明。
在头文件中使用函数原型,对于建立代码模块和外部接口的规范,便于他人使用,都是很有
帮助的。使用这些函数的用户,不需要查找源代码去了解参数的具体类型,直接查看函数原
型即可。
源程序文件中存放构件的内部函数和外部函数的定义,及函数的实现代码,以完成函数所要
实现的功能。
在对底层构件进行设计时,最为关键的工作是要对构件的共性和个性进行分析,抽取出构件
的属性和对外接口函数。尽量做到:当一个底层构件应用到不同系统中时,仅需要修改构件
的头文件,对于构件的源程序文件则不必修改或改动很小。
例如,串行通信模块SCI是大多数MCU都具有的内部模块。仔细分析各种MCU串行通信程
序可发现:在查询方式下,各种MCU都是根据状态寄存器中的两个标志位来判断是否接收
到数据和数据是否发送完毕,这就是SCI模块的共性。对于不同的MCU,该状态寄存器的名
称可能不同,这两个标志位的位号也有可能不同。此外,用以设置波特率、通信格式、是否
校验、是否允许中断等参数的寄存器也不同,这就是SCI模块的个性。分析出了共性和个性
之后,就可以抽取出SCI构件的属性和操作,编制构件头文件和程序文件了。
在编写构件时,一般应注意以下几方面的内容。
(1)构件的头文件和源程序文件的主文件名一致,且为构件名。
(2)属性和操作的命名统一以构件名开头。当使用底层构件组装软件系统时,避免构件之
间出现同名现象。也有顾名思义的效果。
(3)对MCU内的模块寄存器名和端口名进行重定义,在其他的代码里面都将使用宏名对模
块寄存器和端口进行操作。当构件移植时只需要修改重定义语句就可以了。
(4)内部函数与外部函数要设计合理,函数参数个数及类型要考虑全面。内部函数仅提供
给同一构件中的其他内部函数或外部函数调用,作用域仅限于定义该函数的文件。外部函数
是对外接口函数,供上层应用程序调用。在定义外部函数时,应该对函数名、函数功能、入
口参数、函数返回值、使用说明、函数适用范围等进行详细描述,以增强程序的可读性。上
层应用程序不能直接对构件的属性进行读取或设置,必须进行借助于该构件提供的接口函数
来实现。
(5)应用程序在使用底层构件时,严格禁止通过全局变量来传递参数,所有的数据传递都
要通过函数的形式参数来接收。这样做不但能使得接口简洁,而且避免了全局变量可能引发
的安全隐患。
3.硬件构件的基本思想与应用方法
嵌入式硬件是任何嵌入式产品不可分割的重要组成部分,是整个嵌入式系统的构建基础,嵌
入式应用程序和操作系统都运行在特定的硬件体系上。一个以MCU为核心的嵌入式系统通
常包括电源、写入器接口电路、硬件支撑电路、UART、USB、Flash、A/D、D/A、LCD、键盘、
传感器输入电路、通信电路、信号放大电路、驱动电路等硬件模块,其中有些模块集成在
MCU内部,有的位于MCU之外。
与硬件模块的概念不同,嵌入式硬件构件是指将一个或多个硬件功能模块、支撑电路及其功
能描述封装成一个可重用的硬件实体,并提供一系列规范的输/输出接口。由定义可知,传
统概念中的硬件模块是硬件构件的组成部分,一个硬件构件可能包含一个或多个硬件模块。
根据接口之间的生产消费关系,接口可分为提供接口和需求接口两类。根据所拥有接口类型
的不同,硬件构件分为核心构件、中间构件和终端构件三种类型。核心构件只有提供接口,
没有需求接口。它只为其他硬件构件提供服务,而不接收服务。在以单MCU为核心的嵌入
式系统中,MCU的最小系统就是典型的核心构件。中间构件既有需求接口又有提供接口,
即它不仅能够接受其他构件提供的服务,而且能够为其他构件提供服务。而终端构件只有需
求接口,它只接受其他构件提供的服务。
利用硬件构件进行嵌入式系统硬件设计之前,应该进行硬件构件的合理划分,按照一定规则,
设计与系统目标功能无关的构件个体,然后进行“组装”,完成具体系统的硬件设计。这样,
这些构件个体也可以被组装到其他嵌入式系统中。在硬件构件被应用到具体系统中后,设计
人员需要做的仅仅是为需求接口添加接口网标。
本文发布于:2023-02-04 18:13:31,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/fan/88/188513.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |