嵌入式系统思考题概述

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

嵌入式系统思考题
第二章:
1.微机原理中,外设与微处理器之间数据传递的实现方式?
2.在此方面,微机原理与嵌入式系统的区别体现在哪里?目的?
3.位带操作与互斥、可重入函数、事务等概念的特性对比,以及它们之间的联系与具体应用范围。

可举例说明。

NVIC的功能配置与中断建立过程(主要寄存器介绍)
NVIC的功能配置
•目的:对中断进行有效管理;
•通过NVIC寄存器对NVIC功能进行配置;
•功能配置是静态的,功能的实现和中断管理是动态的;
NVIC寄存器
•NVIC 的寄存器以存储器映射的方式来访问。

•除了包含控制寄存器和中断处理的控制逻辑之外,NVIC 还包含了MPU的控制寄存器、SysTick定时器以及调试控制。

NVIC寄存器
•每个外部中断都在NVIC 的下列寄存器中“挂号”:
①使能与除能寄存器(32Bit*7+16Bit*1):
➢SETENA0-7/CLRENA 0-7 Registers
➢SETENAs: xE000_E100 –0xE000_E11C ;
➢CLRENAs:0xE000E180 -0xE000_E19C
②悬起与“解悬”寄存器(32Bit*7+16Bit*1):
➢SETPEND0-7/CLRPEND0-7 Registers
➢SETPENDs:0xE000_E200 –0xE000_E21C ;
➢CLRPENDs:0xE000E280 -0xE000_E29C
③优先级寄存器(8bit):
➢PRI_0-PRI_239;
➢0xE000_E400 –0xE000_E4EF
④活动状态寄存器ACTIVE Registers(32Bit*7+16Bit*1):
NVIC寄存器
•另外,下列寄存器也对中断处理有重大影响
⑤中断控制器类型寄存器ICTR 0xE000_E004:
➢ ♓♦♦☯用以判断正在使用的芯片使用了多少位来表达优先级
➢粒度为32的整数倍0x0表示32,0x1表示64,以此类推。

⑥异常掩蔽寄存器(PRIMASK, FAULTMASK 以及BASEPRI)
⑦应用程序中断及复位控制寄存器(AIRCR) 0xE000_ED0C:Bit[10:8]为优先级分组位段PRIGROUP
⑧向量表偏移量寄存器VTOR:0xE000_ED08
➢ ♓♦☯☜ 区
➢Bit[29]=1:RAM 区
⑨软件触发中断寄存器STIR(8Bit);0xE000_EF00;写入8,则悬起IRQ #8。

⑩中断控制及状态寄存器ICSR 0xE000_ED04
⑪系统控制寄存器0xE000_ED10:涉及电源管理
⑫配置与控制寄存器0xE000_ED14
⑬中断优先级寄存器阵列0xE000_E400 –0xE000_E4EF:用于外设中断
NVIC寄存器
•系统异常优先级寄存器0xE000_ED18 -0xE000_ED23
•系统Handler控制及状态寄存器SHCSR 0xE000_ED24
•存储器管理fault 状态寄存器(MFSR) 0xE000_ED28
•总线fault 状态寄存器(BFSR) 0xE000_ED29
•用法fault 状态寄存器(UFSR),地址:0xE000_ED2A
•硬fault 状态寄存器0xE000_ED2C
•调试fault 状态寄存器(DFSR) 0xE000_ED30等
中断建立全过程
①当系统启动后,先设置优先级组寄存器。

默认情况下使用组0(7位抢占优先级,1位亚优先级)。

②如果需要重定位向量表,先把硬fault和NMI服务例程的入口地址写到新表项所在的地址中。

③配置向量表偏移量寄存器VTOR ,使之指向新的向量表(如果有重定位的话)
④为该中断建立中断向量。

➢因为向量表可能已经重定位了,保险起见需要先读取向量表偏移量寄存器的值
➢再根据该中断在表中的位置,计算出服务例程入口地址应写入的表项,再填写之
➢如果一直使用ROM中的向量表,则无需此步骤。

⑤为该中断设置优先级。

⑥使能该中断。

中断建立全过程
•如果应用程序储存在Flash/ROM中,并且不需要改变异常服务程序,则我们可以把整个向量表编码到Flash/ROM的起始区域(从0地址开始的那段)。

在这种情况下,上例可以大大简化,只需3步:
①建立优先级组
②为该中断指定优先级
③使能该中断
•如果在I/O密集型系统中,软件需要控制大量的硬件设备,则可能必须要考虑如下因素:➢该芯片支持的中断数
➢该芯片中表达优先级的位数
如何了解微处理器中断优先级支持情况?
•在CORTEX-M3的NVIC中,有一个名为“中断控制器类型寄存器ICTR ”,它提供了该芯片中支持的中断数目,粒度是32的整数倍。

•通过对每个SETENA位进行先写后读的测试,来获取支持的中断的精确数目(往各SETENA中写1,不支持的中断将永远读回0,求出第1个0的位置即可),亦可使用SETPEND等其它位来做此测试。

•读应用程序中断及复位控制寄存器(AIRCR) 的Bit[10:8](优先级分组位段PRIGROUP),了解分组情况。

总线矩阵有“循环优先调度”、“多层结构和总线挪用”两个主要特性,实现系统性能的最大化和减少延时。

➢❽循环优先调度”,用以确保DMA不长时间占用总线和CPU可以在任何一个时钟周期访问所有的从总线。

否则,会影响指令的单周期执行和执行过程中在周期级上“中断”正在运行的代码。

➢❽多层结构❾允许多个主设备同时执行数据传输,只要它们寻址不同的从模块,提高了数据并行性;
➢❽总线挪用❾,用于协调CPU和DMA的数据访问,提高二者并发工作的性能。

CMSIS 的软件层次
•CMSIS 分为以下3个软件层次:
①内核设备访问层Core Peripheral Access Layer (CPAL)
–内核寄存器设备名称定义、地址定义、助手函数;
–同时,为RTOS定义了独立于微控制器的接口,包括调试通道
②中间设备访问层Middleware Access Layer (MWAL)
–为软件提供访问外设的通用方法;
–芯片供应商可修改中间设备访问层,以适应具体的微控制器上外设硬件的设计③微控制器外设备访问层Device Peripheral Access Layer (DPAL)
–提供片上所有外设的定义;
–为外设提供额外的助手函数
CMSIS(Cortex-MTMSoftware Interface Standard)
➢✌公司与多家不同芯片和软件供应商紧密合作定义的
➢提供内核与外设、实时操作系统和中间设备之间的通用接口
AFIO工作原理及配置
使用默认复用功能前必须对端口位配置寄存器编程。

①对于复用的输入功能,端口可以配置成:
➢输入模式(浮空、上拉或下拉);
➢复用功能输出模式:输入驱动器被配置成浮空输入模式。

②对于复用输出功能,端口必须配置成复用功能输出模式(推挽或开漏)。

③对于双向复用功能,端口位必须配置复用功能输出模式(推挽或开漏)。

这时,输入驱动器被配置成浮空输入模式。

•如果把一端口配置成复用输出功能,将使引脚和输出寄存器断开,并和片上外设的输出信号连接。

•如果软件把一个GPIO脚配置成复用输出功能,但是外设没有被激活,它的输出将不确定。

通过I/O端口配置方式降低功耗
5.4GPIO锁定机制
•GPIO 锁定机制
锁定机制允许冻结IO配置。

当在一个端口位上执行了锁定(LOCK)程序,即通过程序锁住配置组合,直到下次芯片复位才能解锁,复位之前,将不能再更改端口位的配置。

6.2 定时器的工作原理(续)
•每个定时器有4个输入通道:TIMx_CH1-TIMx_CH4,其输入滤波参数在捕获/比较模式寄存器1(TIM1_CCMR1)和捕获/比较模式寄存器2(TIM1_CCMR2)的IC1F[3:0]、IC2F[3:0]、IC3F[3:0]、IC4F[3:0]中设置;
•每个定时器有1个外部事件输入触发通道: TIMx_ETR,其滤波参数在从模式控制寄存器TIMx_SMCR中的ETF[3:0]中设置;
•每个定时器有1个定时器刹车输入通道: TIMx_BKIN,可以将定时器输出信号置于复位状态或一个已知状态;见P221图
•这几个输入数字滤波器实际上是一个事件计数器,它记录N个事件后会产生一个输出的跳变。

例如:TIMxCLK=fCK_INT=72MHz,CKD[1:0]=01,选择fDTS=
fCK_INT/2=36MHz,而ETF[3:0]=0100,则采样频率fSAMPLING=fDTS/2=18MHz ,N=6。

此时,3MHz以上的干扰信号被有效屏蔽。

6.7 RTC时钟
•RTC(RealTimeClock)是一种能够提供日历、时钟及数据存储等功能的专用集成电路,精度高,功耗小。

•特别是适合用于无人值守环境进行自动化控制,以及记录事件发生的时间和采集带时标的相关信息,便于观察分析。

•RTC是一个独立的定时器,拥有一组具有连续计数功能的计数器,可以通过软件编程对其进行配置。

修改计数器的值,可以重设系统当前时间。

•可编程预分频系数2^20
•32 bit 可编程计数器,适于长程时间的测量
RTC时钟源
6.7 RTC时钟(续)
•两种独立的复位类型
➢✌接口由系统复位;
➢ ❆核(预分频器、闹钟、计数器和分频器)只能由备份域复位。

•3个专门的可屏蔽中断:
➢闹钟中断,用来产生一个软件可编程的闹钟中断,驱动闹钟响铃;
➢秒中断,用来产生一个软件可编程的周期性中断,时间1s;
➢溢出中断,检测内部可编程计数器溢出,并使计数器会转为0
•2个单独的时钟:用于APB1接口的PCLK1和RTC时钟(此时的RTC时钟必须小于
PCLK1时钟的四分之一以上)。

相关文档
最新文档