重邮--自动化-嵌入式
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1 嵌入式定义:以应用为中心,以计算机技术为基础、软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功能严格要求的专用计算机程序。
嵌入式微处理器特点:对实时多任务有很强的支持能力,能完成多任务并具有较短的中断响应时间;具有功能更很强的存储区保护功能;具有可扩展的处理器结构;功耗很低。
嵌入式操作系统特点:体积小;实时性;特殊的开发调试环境;
简述嵌入式系统的特点。
答:1、功能特定性;2、规模可变性;3、实时性与稳定性;4、系统内核小;5、专用型强;6、系统精简;7、高实时操作系统;8、具有专门的开发工具和开发环境。
嵌入式系统分类:硬实时系统(指系统要确保在最坏情况下的服务时间,即对于事件响应时间的截止期限必须满足);软实时系统(系统的时限是柔性灵活的,可以容忍偶然的超时错误,失败造成的后果并不严重,仅仅是降低了系统的吞吐量)
2 一个完整的嵌入式系统应包括嵌入式计算机系统和被控对象,嵌入式计算机系统是控制核心,是被控对象的指挥和监控中心,负责指挥被控对象动作和检测被控对象的运行状况;被控对象主要由执行装置、驱动器、传感器等
组成,接受嵌入式计算机系统发出的控制命令,执行所规定的操作或任务。
嵌入式计算机系统主要包括硬件层(包括提供嵌入式计算机正常运行的最小系统(如电源、系统时钟、复位电路、存储器等)、通用I/o 接口和一些外设及其他设备)、中间层(把系统软件和硬件隔离,使系统软件和硬件无关,中间层一般具有相关硬件初始化、数据的输入输出操作和硬件设备的配置等功能)、系统软件层(为功能层提供系统服务,如操作系统、文件系统、图形用户接口等)和功能层(用户应用程序)。
嵌入式系统设计流程:系统需求分析(规格说明书);系统结构设计;软、硬件协同设计;系统集成;系统测试;系统运行与维护。
3. 简述哈佛体系结构和冯诺依曼特点。
答:冯.诺曼结构处理器特点:必须有一个存储器;必须有一个控制器;必须有一个运算器,用于完成算术运算和逻辑运算;必须有输入和输出设备,用于进行人机通信。
(将程序指令存储器和数据存储器合并在一起的存储器结构,处理器使用同一个存储器,经由同一组总线传输,在对数据读取时,首先从指令存储器读出程序指令内容,然后从数据存储区读出数据) 哈佛结构处理器具有以下几个特点: 将程序指令存储和数据存储分开的存储器结构
中央处理器首先到程序指令存储器中读取程序指令内容,解码后得到数据地址,再到
相应的数据存储器中读取数据,并进行下一步的操作(通常是执行)。
执行时可以预先读取下一条指令,可以使指令和数据有不同的
4、简述 CISC 和 RISC 各自的主要特点。
答:CISC 主要特点:1)指令格式不固定,指令长度不一致,操作数可多可少;2)寻址方式复杂多样,以利于程序编写; 3)采用微程序结构,执行每条指令均需完成一个微指令序列; 4)每条指令需要若干个机器周期才能完成。
RISC 主要特点:1)指令数目少,使用等长指令,执行指令速度快; 2)寻址方式少且简单,一般不超过 4 种; 3)指令数目较少,指令功能简单; 4)每条指令的执行时间一般为一个时钟周期。
5.简述 ARM 的 7 种处理器模式。
答: 处理器模式 描 述
用户模式(User,usr ) 正常程序执行的模式 快速中断模式(FIQ,fiq ) 用于高速数据传输和通道处理 外部中断模式(IRQ,irq ) 用户通常的中断使用
特权模式(Supervisor,sve ) 供操作系统使用的一种保护模式 数据访问中止模式(Abort,abt ) 用于虚拟存储及存储保护 未定义指令中止模式(Undefined,und 用于支持通过软件仿真硬件的协处理器
系统模式(System,sys )
用于运行特权级的操作系统任务
6.简述 ARM 处理器通用寄存器的分类及作用,程序状态寄存器的作用。
答:ARM 处理器含有 37 个寄存器,这些寄存器包括以下两类寄存器。
(1)31 个通用寄存器:包括程序计数器 PC 等,这些寄存器都是 32 位寄存器。
在 ARM 处理器的7 种模式下都有一组对应的寄存器组。
在任意时刻,可见的寄存器组包
15 个通用寄存器 R0~R14、一个或两个状态寄存器和 PC 。
通用寄存器通常又可以分为下面 3 类:未备份寄存器:包括 R0~R7。
备份寄存器:包括 R8~R14。
程序计数器 PC :即 R15。
(2)6 个状态寄存器:状态寄存器也是 32 位的寄存器,但是只使用了其中的 12 位。
CPSR 可以在任何处理器模式下被访问。
每一种模式下都有一个专用的物理状态寄存器,
称为 SPSR (备份程序状态寄存器)。
当特定的异常中断发生时,这个寄存器用于存放当前程序状态寄存器的内容。
在异常退出时,可以用 SPSR 中保存的值来恢复 CPSR 。
硬件产生中断请求,处理器响应中断,PC 跳转到固定地址,从起始固定地址跳转到用户定义的固定地址的内存区,其中存放着中断再跳转的解析程序,解析程序读取中断向量表,得到具体中断源的中断函数的目标地址,跳至目标中断函数进行中断现场保存,跳转到由用户编写的中断服务程序,恢复现场,然后中断返回。
8、Boot Loader 程序的主要功能是什么?
答:Boot Loader 是在操作系统内核运行之前运行的一段小程序,通过这段小程序,可以初始化硬件设备,建立内存空间饿映射图,从而将系统饿软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。
9 行列式键盘优点:节省I/O 资源,节省成本且更为灵活;缺点:需用软件处理消抖、重键等。
原理:行线与按键的一个引脚相连,列线与按键另一引脚相连,平时行线被置为低电平,没有按键按下时,列线保持高电平,有按键按下时,列线被拉成高电平,这时控制器知道有按键按下,但不能确定在哪一行,下面要进行按键扫描,确定具体是哪个按键按下。
按键扫描的过程是将行线逐行置为低电平,剩余行线置为高电平,然后读取列线的状态,直到列线中出现低电平,可知哪一行被按下;然后将行线和列线的状态装入键码寄存器,进行按键译码。
10 触摸屏原理:当手或笔触摸屏幕时,平常相互绝缘的两层就在触摸点位置接触,因顶层接通X 轴方向的5V 均匀电压场,使得检测层(底层)的电压由0变为非零,控制器侦测到这个接通后,进行A/D 转换,并将得到的电压值与5V 相比,可得接触点的X 轴坐标为Xi=Lx.Vi/V(分压原理),同理,可得Y 轴坐标。
11
任务状态分为 4 个状态:运行、就绪、挂起、等待。
(1 分)当运行任务在等待事件、任
务挂起、延时等情况下,任务从运行态进入等待或挂起状态;(1 分)当挂起或等待任务在等待的事件产生、延时结束或挂起时间超时的情况下,任务从等待状态进入就绪态;(1 分)当运行任务被更高优先级任务抢占式,任务由运行态进入就绪态;(1 分)当挂起任务被恢复、重新创建时,挂起任务由挂起进入就绪态;(1 分)当就绪任务被运行任务删除时,任务由就绪态进入挂起状态。
(1 分)
12 绘图并说明非抢占式调度的原理及执行过程。
中断服务可以使一个高优先级的任务由挂起状态变为就绪状态。
但中断服务以后控制权还是回到原来被中断了的那个任务,直到改任务主动放弃 CPU 的使用权时,那个高优先级的任务才能获得 CPU 的使用权。
可剥夺型内核与先占式调度:当一个运行着的任务使一个比他优先
级高的任务进入了就绪状态,当前任务的CPU 使用权就被剥夺,高优先级的任务立刻得到CPU 控制权开始运行。
如果中断服务程序使一个高优先级的任务进入就绪状态,中断完成后,被中断的任务挂起,转而执行高优先级的任务。
13、说明嵌入式操作系统进程调度的几种策略,并说明各自的优缺点。
(10 分) 答:嵌入式操作系统进程调度策略主要有如下几种:
(1)离线和在线调度:对于离线调度算法,运行过程中使用的调度信息在系统运行之前就确定了,离线调度算法具有确定性,但缺乏灵活性,适用于那些特性能够预先确定,且不容易发生变化的应用。
在线调度算法的调度信息则在系统运行过程中动态获取,在线调度算法在形成最佳调度决策上具有较大的灵活性。
(2)抢占和非抢占调度:在抢占式调度算法中,正在运行的任务可能被其它任务所打断,抢占式调度算法,使关键任务能够打断非关键任务的执行,确保关键任务的截止时间能够得到满足,抢占式调度算法较复杂,且需要更多的资源,并可能在使用不当时会造成优先级任务出现长时间得不到执行的状况。
非抢占式调度常用于那些任务需要按照预先确定的顺序进行执行,且只有当任务主动放弃 CPU 资源后,其它任务才能得到执行的情况。
(3)静态和动态调度: 在静态调度算法中,任务的优先级需要在系统运行前进行确定,且在运行过程中不会发生变化。
在动态调度算法中,任务的优先级可根据需要进行改变,也可能随着时间按照一定的策略自动发生变化。
14 绘制图形说明 ucos-II 的邮箱工作原理。
答:消息邮箱(简称邮箱)使用一个 1 个指针变量,把一则消息放到邮箱里面。
一个或
者多个任务可以接收这则消息。
发送消息的任务和接收消息的任务约定该指针的内容就是消息的内容。
(2 分)使用邮箱前,必需先创建一个邮箱。
需要接收消息的任务记录在邮箱的消息等待队列中。
当邮箱不为空时,内核调度将此消息送给消息等待队列优先级最高的任务,其它任务如果等待超时,转入就绪状态。
(3 分)
1串口 宏定义
#define rULCON0 (*(volatile unsigned *) 0x1d00000)
rUCON0(),rUFCON0(),rUMCON0(),rUTRSTA T0(),rUTXH0,rURXH0(),rUBRD IV0() 初始化
V oid Uart-Init(int mclk,int baud) {int i; if(mclk==0) {mclk=MCLK; rUFCON0=0x0; rUMCON0=0x0; rULCON0=0x3; rUCON0=0x245;
rUBRDIV0=((int)(mclk/16./baud+0.5)-1); for(i=0;i<100;i++) ;}} 接收
Unsigned char Uart-Getch(unsigned char *Revdata) {int i;
While(!(rUTRSTA T0&0x1)); *Revdata=rURXH0; Return TURE; } 发送
V oid Uart-SendByte(unsigned char data) {while(!(rUTRSTA T0&0x2)) Delay(1); rUTXH0=data; }
2 A/D 转换 宏定义
#define ADCCON-FLAG 0x40 #define ADCCON-SLEEP 0x20 #define ADCCON-READ-START 0x2 #define ADCCON-ENABLE-START 0x1
#define rADCCON(*(volatile unsigned char*)0x01D40000) rADCPSR(),rADCDA T() 初始化
V oid Init-ADdevice() {rADCPSR=20;
rADCCON=ADCCON-SLEEP ; } A/d 转换
Int Get-ADresult(unsigned char channel)
{rADCCON=(channel<<2)|ADCCON-ENABLE-START; Delay(10);
While(!(rADCCON&ADCCON-FLAG)); Return rADCDA T; } 3 键盘 初始化
#define rPCOND(*(volatile unsigned int *)0x01D2001C) #define rPDA TD(*(volatile unsigned char*)0x01D20020) #define rPUPD(*(volatile unsigned char*)0x01D20024) V oid KeyInit() {rPCOND=0x0055; rPUPD=0x00; rPDA TD=0xF0; } 键盘扫描 BYTE GetKey() {BYTE i,keytemp; Keytemp=rPDA TD&0xF0; For(i=1;i<=8;i<<=1) {rPDA TD=~i;
If((rPDA TD&0xF0)==keytemp ) {keytemp=(~keytemp&0xF0)|i; Break; }}
Return keytemp; } 键盘判断
BYTE IsKeyPressed() {if(rPDA TD&0xF0==0xF0) Return FALSE; Else
Return TRUE; } 去抖
Unsigned char KeyV alue[4][4]={1,2,3,4,5,6,7,8,9,0,+,-,*,/,=,#}; BYTE ScanKey() {BYTE key; Key=GetScanKey(); OSTimeDly(50); If(key!=GetScanKey()) Return 0;
Return key=KEYV ALUE[(key&0x0f)>>4][key&0xF0];}。