嵌入式复习

本文介绍了嵌入式系统的定义、特点和历史发展,强调了ARM微处理器在其中的角色,包括RISC架构的优势。同时,提到了主流的嵌入式操作系统如VxWorks、嵌入式Linux和Android。文章还讨论了STM32中的中断与异常、交叉编译、工作模式以及μC/OS–II实时操作系统的特点。
摘要由CSDN通过智能技术生成

HNUST嵌入式复习

选择  40分
简单  30分
代码  20分
论述  10分(嵌入式系统的发展趋势)
1.名词解释

嵌入式系统(IEEE):是“用于控制、监视或者辅助操作机器和设备的装置”
嵌入式系统(国内):嵌入式系统是以应用为中心、以计算机技术为基础、软硬件可裁减、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
嵌入式系统的
特点
:①以应用为中心,嵌入式系统不应该独立于应用②以计算机技术为基础;计算机系统由软件和硬件构成,嵌入式系统也一样
嵌入式系统
发展历程
:无操作系统阶段 --> 简单操作系统阶段 --> 实现操作系统阶段 --> 面向Internet阶段
嵌入式硬件:主要指嵌入式微处理器和外围设备。其中嵌入式处理器是嵌入式系统的核心,一般只保留与用户需求紧密相关的功能部件,因此具有体积小、重量轻、成本低、可靠性高等特点。外围设备根据功能一般分为三类:存储设备、通信设备和I/O设备。

嵌入式片上系统(Soc):将微处理器、模拟IP核、数字IP核、和存储器(或片外存储控制接口)集成在单一芯片是,进一步降级功耗,减少了开发成本。

2.主流的嵌入式操作系统:

①传统的经典RTOS:最主要的是VxWorks操作系统,以及Tornado开放平台。VxWorks具有可裁剪微内核结构;高效的任务管理;灵活的任务间通讯;微秒级的中断处理;支持POSIX 1003.1b实时扩展标准;支持多种物理介质及标准的、完整的TCP/IP网络协议等。
②嵌入式Linux操作系统:μClinux是一种优秀的嵌入式Linux版本,其全称为micro-control Linux,从字面意思看是指微控制Linux。同标准的Linux相比,μClinux的内核非常小,但是它仍然继承了Linux操作系统的主要特性,包括良好的稳定性和移植性、强大的网络功能、出色的文件系统支持、标准丰富的API,以及TCP/IP网络协议等。
③Android系统:
④WindowsCE嵌入式操作系统:其中WinCE3.0是一种针对小容量、移动式、智能化、32位、了解设备的模块化实时嵌人式操作系统。为建立针对掌上设备、无线设备的动态应用程序和服务提供了一种功能丰富的操作系统平台,它能在多种处理器体系结构上运行,并且通常适用于那些对内存占用空间具有一定限制的设备。它是从整体上为有限资源的平台设计的多线程、完整优先权、多任务的操作系统。

3.采用RISC(精简指令集)架构的ARM微处理器一般有如下特点:

①体积小,功耗低,低成本,高性能
②支持Thumb(16位)/ARM或Thumb-2(32位)指令集,能很好地兼容8位/16位器件
③大量使用寄存器,指令执行速度更快
④大多数数据操作都在寄存器中完成
⑤指令长度固定

4.辨析STM32中的异常和中断概念

中断:指正在执行的程序被某个事件打断、处理器转而去执行与事件有关的处理程序,这就要求系统能够提供中断机制来对中断进行处理。由外部事件导致的程序执行流程改变的情形也可称为中断。
异常:当正常的程序执行流程发生暂时的停止时,称之为异常(如处理一个外部的中断请求)。
异常概念包含中断,或者说中断是一种特殊的异常

辨析STM32中的异常和中断概念
在STM32中,正常的程序执行流程发生暂时停止的情形,统称为异常;而由外部事件导致的程序执行流程改变的情形也可以称为中断。因此,异常的概念包含了中断,或者说,中断是一种特殊的异常。

ARM Cortex-M3的所有中断机制都由NVIC实现。NVIC除了支持240个外部中断之外,还支持11个内部中断源。STM32处理器和嵌套向量中断控制器(NVIC)对所有异常按优先级进行排序并处理。所有异常都在处理模式中操作。

5.交叉编译

是指某个主机平台上用交叉编译器编译出可在其他平台上(如ARM上)运行的代码的过程。
常用的交叉开发软件:①ADS②RealView Developer Suite③IAR④Keil μVision IDE⑤WINARM⑥ARM GCC⑦CooCox

6.八种工作模式

①输出浮空②输入上拉③输入下拉④模拟输入⑤开漏输出⑥推挽输出⑦推挽式复用功能⑧开漏复用功能

7.串口异步通信要定那些参数?
8.中断屏蔽器可以屏蔽那些?

中断屏蔽器组包括PRIMASK、FAULTMASK、BASEPRI三个寄存器,用于控制异常的使能和禁止。STM32的中断寄存器组中各寄存器功能描述如下:
①PRIMASK:屏蔽NMI(不可屏蔽中断)外的所有中断。
②BASEPRI:屏蔽所有优先级不高于某个具体数值的中断。
③FAULTMASK:屏蔽所有的错误,但NMI依然不受影响。FAULTMASK可以被操作系统用于暂时关闭错误处理机能,在某个任务崩溃时可能需要这种处理。因为在任务处理崩溃时,常伴随着一大堆错误。在系统忙于处理崩溃的任务时,通常不再需要响应这些错误。FAULTMASK是专门留给操作系统用的。
对于关键任务而言,适当使用PRIMASK、BASEPRI来暂时关闭一些中断是非常重要的。此外,只有在特权级下,才允许访问这3个寄存器。

9.寄存器组织

ARM Cortex-M3拥有通用寄存器R0R15以及一些特殊功能寄存器。其中R0R12是32位的通用寄存器,它们都可以被32位指令访问,但绝大多数的16位指令只能访问R0~R7,而32位的Thumb-2指令则可以访问所有通用寄存器。特殊功能寄存器有预定义的功能,而且必须通过专用指令来访问。特殊寄存器包括1个程序状态寄存器(xPSR),3个中断屏蔽寄存器(PRIMASK、BASEPRI、FAULTMASK)以及1个控制寄存器(CONTROL)
1.通用寄存器:
①低寄存器:寄存器R0~R7可以被指定通用寄存器所有指令访问,复位后的初始值不可预知。
②高寄存器:寄存器R8~R12可以被指定通用寄存器的所有32位指令访问,但不能被16位指令访问,复位后的初始值是不可预知的。
③堆栈指针:寄存器R13用做堆栈指针(SP)
④链接寄存器:寄存器R14是子程序的链接寄存器(LR)。在执行分支和链接(BL)指令或带有交换的分支和链接指令(BLX)时,LR用于接收来自PC的返回地址。LR也用于异常返回。其他时候都可以将R14看作一个通用寄存器。
⑤程序计数器:寄存器R15为程序计数器PC,指向当前的程序地址。该寄存器的位置始终为0,因此,始终与字或半字边界对齐。如果修改它的值,就能达到改变程序执行流程的目的。

ARM Cortex-3的通用寄存器有哪些?各有何作用?
ARM Cortex-3拥有16个32位通用寄存器,名称R0-R15,分为
①低寄存器:R0-R7,可被指定的所有指令访问,复位初始值不可知;
②高寄存器:R8-R12,能被指定的所有32位指令访问,复位初始值不可知;
③堆栈指针SP:R13,作为SP自动与字对齐([1:0]位忽略)。对应两个不会被同时访问的物理寄存器SP_main和SP_process;
④链接寄存器LR:R14,执行分支指令时存储一个返回地址;
⑤程序计数器PC:R15,指向当前的程序地址。

2.程序状态寄存器
应用程序PSR(APSR),中断号PSR(IPSR),执行PSR(EPSR)。
1)应用PSR(APSR)包括条件代码标志。在进入异常前,STM32将条件代码标志保存在堆栈内。
2)中断PSR(IPSR)包含当前激活的异常的ISR标号。
3)执行PSR(EPSR)包含两个重叠的区域和状态位。
①可中断——可继续指令(ICI)区。是用于被打断的多寄存器加载和存储指令。
②用于If-Then(IT)指令的执行状态区。ESPR的IT区包含If-Then指令的执行状态位。
③T位(Thumb状态位)

10.ARM体系结构支持用两种方法存储字数据,称之为大端格式和小端格式。

对于字数据,大端格式和小端格式的具体存储规则如下:
(1)大端格式
大端格式中,字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。
在这里插入图片描述

(2)小端格式
与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。
在这里插入图片描述

11.STM32平台中提供那些时钟源,其各种频率范围是多少?
简称名称频率
HSE高速外部时钟4~16MHz
LSE低俗外部时钟32.768kHz
HSI高速内部时钟8MHz
LSI低速内部时钟约40kHz
PLL锁相环时钟<=72Mhz
12.写出至少4种目前流行的入式微处理器及其特点

①ARM:体积小、功耗低、成本低且性能高
②MIPS:包含大量寄存器、指令数和字符,可视的管道延时时隙
③PowerPC:可伸缩性好、方便灵活。它是一个64位规范(也包含32位子集)
④x86:兼容性强

13.NVIC 中的末尾连锁技术的作用是什么?

作用是在连续两次中断时,将上一次的返回指令和下一次的调用指令执行所花费的时间,由42个Cycles降低到6个Cycles

14.中断服务函数
//数字钟的时、分、秒
u8 hour = 0, minute = 0, second = 0;
//通用定时器中断初始化
//这里时钟选择位APB1的2倍,而APB1为36M
//arr: 自动重装值
//psc: 时钟预分频数
//这里使用的是定时器3
void TimerxInit(u16 arr,u16 psc)
{
	PCC->ARB1ENR | =1<< V1; //TIM3时钟使能
	TIM3->ARR=arr;          //设定计数器自动填装值,10为1ms
	TIM3->PSC=PSC;          //预分频器7200,得到10KHZ的计数时钟
	TIM3->DIER | =1<<0;     //允许更新中断
	TIM3->CR1 | =0X01;      //使能定时器3
	MY_NVIC_Init(1,3,TIM3_IRQChannel,2);  //抢占1,子优先级3,组2
}
//定时器3的中断函数
//每次中断,second加1
void TIM3_IROHandler(void)
{
	if(TIM3->SR & 0x0001)           //溢出中断
	{
		second++;
		if(second>59)
		{
			second=0;
			minute++;
			if(minute>59)
			{
				minute=0;
				hour++;
				if(hour>23) hour=0;
			}
		}
	}
	TIM3->SR &=~(1<<0);          //清除中断标志位
}
15.STM32F103VBT6的各个部分的含义是什么,有多少个IO?分成多少组?

①有80个IO,分为5组,每组16个IO
②STM32F103VBT6微控制器属于STM32F103xx 增强系列。这个名字中的字母V表示有100脚封装、字母B表示带有128KB的闪存存储器,T表示控制器采取QFP封装,6表示工业级温度范围(-40℃-85℃)

16.什么是看门狗,看门狗的作用是什么?

①为了检测和解决由软件错误引起的故障,嵌入式处理器通常具有一种叫做看门狗的模块
②这种模块一般是倒计数器,其作用是以一定的周期产生复位信号使系统复位,产生复位信号的时刻一般是倒计数到某个值(例如0)的时刻
③在设计嵌入式系统软件时,通过在看门狗产生复位信号前执行喂狗操作(即让看门狗的倒计数值重新从某个设定的倒计数值开始)来避免看门狗倒计数到产生复位信号的值

17.请介绍一下μC/OS –II操作系统,并简述一下μC/OS –II操作系统的特点,并列出μC/OS –II的内核和内核结构?

①μC/OS –II是一个实时操作系统内核,它包含任务调度,任务管理,时间管理,内存管理和任务间的通信与同步等基本功能,而没有输入输出管理,文件系统,网络之类的服务。
②μC/OS –II特点:
1.公开源代码:μC/OS –II的全部源代码全部公布出来,能够在网上查询。
2.可移植性:绝大部分的μC/OS –II的源码使用移植性很强的ANSI C写的,只有与微处理器硬件相关用汇编语言写的。使用汇编写的已经缩减到最小,使得μC/OS –II便于移植
3.可固化:μC/OS –II是为嵌入式应用而设计的,因此,只要读者有固化手段就能嵌入到读者的产品中
4.可裁剪性:μC/OS –II可以只使用应用程序需要的那些服务
5.占先式:μC/OS –II占先式的实时内核,这表示μC/OS –II总是运行就绪状态下优先级最高的任务
6.多任务:μC/OS –II可管理64个任务,其中8个任务留给系统,应用程序最多有56个任务,但每个任务的优先级必须不同
7.可确定性:全部μC/OS –II的函数调用和服务的执行时间具有可确定性,也就是:全部μC/OS –II的函数调用和服务的执行时间可预知的
8.任务栈:μC/OS –II允许每个任务有不同的栈空间,每个任务有自己单独的栈,以便压低应用程序对RAM的需求
9.系统服务:μC/OS –II提供了很多系统服务,例如邮箱,消息队列,信号量,块大小固定的内存的申请与释放等
10.中断管理:中断可以使正在执行的任务暂时挂起,允许中断嵌套,中断嵌套层数可达255层
11.稳定性和可靠性:μC/OS –II是基于μC/OS 的,μC/OS 自使用以来已经被好几百个商业应用
③μC/OS –II的内核:
1.任务管理 2.时间管理 3.任务之间的通信与同步 4.内存管理 5.μC/OS的中断处理 6.μC/OS –II的初始化 7.μC/OS –II的启动
④μC/OS –II的内核结构:1.临界段 2.任务 3.任务状态 4.任务控制块 5.任务调度 6.空闲任务

μC/OS –II的任务共有休眠、就绪、运行、中断服务以及挂起等待等五个状态。

**异步:**当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。
**串行:**串行是指一个时间段内,执行一个任务的同时不能执行其他任务,只能等到第一个任务弯沉过后才能进行第二个。比如排队上厕所,你只有等前一个人上完了,才可以进去。
**并行:**并行指一个时间段内同时执行多个任务。
**并发:**并发指一个时间段内多个任务都处于开启状态,由于系统资源不够,采用多个任务交替执行。
**奇偶校验位:**校验数据传送的正确性

NVIC中断设置
①MY_NVIC_PriorityGroupConfig
②MY_NVIC_Init
四个参数:
NVIC_PreemptionPriority:中断抢占优先级数值
NVIC_SubPriority:中断响应优先级(子优先级)数值
NVIC_Channel:中断的编号(范围0~59)
NVIC_Group:中断分组设置

学号:

u8 st_id1[] = {16,16,16,16,16,9,8,7,6,5,4,3,2,1,16,16,16,16,16,16}
void display(u8 lx,u8 dgt)
{
	SEL2 = lx / 4 ;
	SEL1 = lx % 4 / 2;
	SEL0 = lx % 2;
	GPIOE->ODR &=~(0Xff);
	GPIOE->ODR |= seg1[dgt];
}

//走马灯显示一次学号,共需15趟
void RoundLantern(u8 st,u16 ms)
{
	for(u = 0;u <= 14;u++)
    {
        for(v = 1;v <= 6;v++)
			display(v,st_id1[u+v-1]);
		delay_ms(ms);
    }
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值