嵌入式系统复习资料解读.docx
- 文档编号:26865839
- 上传时间:2023-06-23
- 格式:DOCX
- 页数:27
- 大小:517.55KB
嵌入式系统复习资料解读.docx
《嵌入式系统复习资料解读.docx》由会员分享,可在线阅读,更多相关《嵌入式系统复习资料解读.docx(27页珍藏版)》请在冰豆网上搜索。
嵌入式系统复习资料解读
第1章嵌入式系统导论
1.嵌入式系统的概念:
是以现代计算机技术为基础,以应用为中心,可以根据系统或用户需求(功能、可靠性、成本、体积、功耗、环境等),灵活裁剪软硬件模块的专用计算机系统。
2.嵌入式系统的分类及分类依据:
嵌入式系统由硬件和软件两大部分组成,用于实现对其他设备的控制、监视或管理等功能。
前者是整个系统的物理基础,它提供软件运行平台和通信接口;后者实际控制系统的运行。
硬件:
嵌入式微处理器、外围电路、外围硬件设备。
软件:
BootLoader、嵌入式操作系统、用户的应用程序等。
3.几种典型嵌入式操作系统:
(1)uC/OSII
(2)uCLinux
(3)WindowsCE
(4)嵌入式Linux等
4.任务调度:
任务的调度有三种方式:
可抢占式、不可抢占式和时间片轮转。
【不可抢占式调度是指一个任务一旦获得CPU就独占其运行,除非由于某种原因使它决定放弃CPU的使用权;
可抢占式调度是基于任务优先级的,当前正在运行的任务可以随时让位给优先级更高的处于就绪态的其他任务;
当两个或两个以上任务有同样的优先级时,不同任务轮转使用CPU,直到系统分配的CPU时间片用完,这就是时间片轮转调度。
】
目前,大多数嵌入式操作系统对不同优先级的任务采用基于优先级的可抢占式调度法,对相同优先级的任务则采用时间片轮转调度法。
5.针对有内存管理单元(MMU,MemoryManagementUnit)的处理器而设计的一些桌面操作系统,如Windows、Linux,使用了虚拟存储器的概念。
6.计算机的发展:
冯诺依曼架构:
将指令和数据存放在同一存储空间中,统一编址,指令和数据通过同一总线访问。
哈佛结构(冯诺依曼架构的扩展):
主要特点是程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个相互独立的存储器,每个存储器独立编制、独立访问。
CortexM3
7.Cortex系列
按嵌入式系统的典型应用分类:
①Cortex-A:
高性能(HighPerformance),【针对日益增长的运行Linux、WinCE、Symbian等操作系统在内的消费者娱乐和无线产品设计与实现。
】
②Cortex-M:
微控制器类(Microcontroller),【针对应用系统对功耗、成本敏感,同时对微处理器性能要求较高的工业领域(汽车、家电、医疗器械等)。
】
③Cortex-R:
【实时类(RealTime),针对实时性要求较高的领域,可以运行RTOS。
】
④Cortex-W:
【Wireless】
Cortex指令完全采用Thumb-2体系架构。
第2章Cortex-M3内核原理
1.Cortex-M3是ARM公司推出的新一代32位低成本、高性能通用微控制器内核。
2.Cortex-M3体系结构:
Cortex-M3处理器主要由两大部分组成:
①Cortex-M3内核:
中央处理器核心(Cortex-M3Core
嵌套向量中断控制器(NVIC)
系统时钟(SYSTICK)
存储器保护单元(MPU)
总线
②调试系统
3.AMBA总线:
(l)AHB:
AdvancedHighPerformanceBus,用于高性能系
统模块的连接,支持突发模式数据传输和事务(ACID:
原子性、一致性、隔离性和持久性)分割;
(2)ASB:
AdvancedSystemBus,也用于高性能系统模块的
连接,支持突发模式数据传输,这是较老的系统总线格式,后来由AHB总线替代;
(3)APB:
AdvancedPeriPheralBus,用于较低性能外设的简单连接,一般是接在AHB或ASB系统总线上的第二级总线。
(4)
4.Cortex-M3内核是典型的32位处理器内核:
①内部数据路径宽度为32位,
②寄存器宽度为32位,
③存储器接口宽度也是32位,
•Cortex-M3内核拥有独立的指令总线和数据总线,其寻址能力均为4G,且共享同一个存储器空间,取指与数据访问可同时进行。
5.Cortex-M3寄存器:
(1).低组寄存器(R0~R7)【所有指令均能访问,字长为32位,复位后的初始值是随机的。
绝大多数16位Thumb指令只能访问R0~R7。
】
(2).高组寄存器(R8~R12)【只有很少的16位Thumb指令能访问,32位指令则不受限制,复位后的初始值是随机的。
】
(3).堆栈寄存器(R13)又称“堆栈指针SP”【Cortex-M3处理器内核有两个堆栈,但这两个寄存器不会同时生效,根据系统运行状态进行堆栈切换,以保证程序运行的快速性、安全性等要求。
】
①主堆栈指针(MSP),或写作SP_main。
【缺省堆栈指针,它由OS内核、异常服务例程以及所有需要特权访问的应用程序代码来使用。
】
②进程堆栈指针(PSP),或写作SP_process。
【用于常规的应用程序代码(不处于异常服务例程中时)。
】
6.在系统连接结构中,通常借助AHB-APB桥实现内核内部高速总线到外部低速总线的数据缓冲和转换。
7.Cortex-M3是一个32位处理器,支持4GB存储空间,与ARM架构相比,有很多优点:
(1)预定义存储器映射和总线配置;
(2)支持“位带(bit‐band)”操作;
(3)支持非对齐访问和互斥访问;
(4)支持小端和大端两种存储格
8.位带操作:
(1)概念:
位带操作,只适用于数据访问,不适用于取指。
通过位带的功能,可以把多个布尔型数据打包在单一的字中,却依然可以从位带别名区中,像访问普通内存一样地使用它们。
位带别名区中的访问操作是原子的,消灭了传统的“读-改-写”三步曲以及由此产生的被中断的可能。
(2)为什么采用位带操作?
可以显著提高位操作的效率和安全性,对许多底层软件开发特别是操作系统和驱动程序具有重要意义。
(3)片内外设区(Peripheral,0x40000000~0x5FFFFFFF,512MB)
外部RAM区(ExternalRam,0x60000000~0x9FFFFFFF,256KB)
外部设备区(ExternalDevice,0xA0000000~0xDFFFFFFF,768KB)
(4)映射公式:
bit_word_addr=bit_band_alias_base+(byte_offset×32)+(bit_number×4)
–bit_word_addr是别名存储器区中字的地址,它映射到某个目标位。
–bit_band_alias_base是别名区的基址,即起始地址。
–byte_offset是包含目标位的字节在位带区里的序号。
–bit_number是位带区目标位所在字节中的位置(0-7)。
(5)例题:
例1:
位带区SRAM地址为0x20000300的字节中的位2,其位带别名区的映射地?
【答案】?
=0x22000000+(0x300*32)+(2*4).
0x22006008=0x22000000+(0x300*32)+(2*4).
•对0x22006008地址的写操作和对SRAM中地址0x20000300字节的位2执行“读--改--写”操作有着相同的效果。
例2:
(1)地址?
的别名字映射为0x200FFFFF的bit-band字节的位0:
(2)地址?
的别名字映射为0x200FFFFF的bit-band字节的位7:
(3)地址?
的别名字映射为0x20000000的bit-band字节的位0:
(4)地址?
的别名字映射为0x20000000的bit-band字节的位7:
【答案】
(1)地址0x23FFFFE0的别名字映射为0x200FFFFF的bit-band字节的位0:
0x23FFFFE0=0x22000000+(0xFFFFF*32)+0*4
(2)地址0x23FFFFEC的别名字映射为0x200FFFFF的bit-band字节的位7:
0x23FFFFEC=0x22000000+(0xFFFFF*32)+7*4
(3)地址0x22000000的别名字映射为0x20000000的bit-band字节的位0:
0x22000000=0x22000000+(0*32)+0*4
(4)地址0x220001C的别名字映射为0x20000000的bit-band字节的位7:
0x2200001C=0x22000000+(0*32)+7*4
例2图示:
•怎样利用“位带操作”进行位带区的“读—改—写”呢?
例3:
欲设置地址0x20000000中的比特2。
【答案】
WithoutBit-BandWithBit-Band
LDRR0,=0x20000000;SetupaddressLDRR0,=0x22000008;Setupaddress
LDRR1,[R0];ReadMOVR1,#1;Setupdata
ORR.WR1,#0x4;ModifybitSTRR1,[R0];Write
STRR1,[R0];Writebackresult
例4:
假如在(位带区)地址0x20000000处的字为0x3355AACC,要求对bit2清零。
【答案】
•无位带
LDRR0,=0x20000000;建立地址
LDRR1,[R0];Read
AND.WR1,#0xFFFFFFFB;bit2清零
STRR1,[R0];writebackresult
•有位带
LDRR0,=0x22000008;建立地址
MoveR1,0;SetupData
STRR1,[R0];writebackresult
【解答】①读取地址0x22000008。
本次读访问将读取0x20000000,并提取比特2,值为1。
②往地址0x22000008处写0。
本次操作将被映射成对地址0x20000000的“读-改-写”操作(原子操作),把比特2清0。
③现在再读取0x20000000,将返回0x3355AAC8(bit[2]已清零)。
9.工作模式
•Cortex-M3支持两种模式和两个特权等级。
异常handler代码
特权级用户级
处理模式(handlermode)
用法错误
主应用程序代码
线程模式(threadmode)
线程模式(threadmode)
RESET
Cortex-M3处理器的工作模式和特权等级共有三种配合。
①线程模式+用户级
②线程模式+特权级
③Handler模式+特权级
10.中断:
(1)中断的概念:
所谓中断,是指CPU对系统内、外发生的某个事件的一种响应过程,或者说“一种机制”,即CPU暂时停止现行程序的执行,自动转去执行预先安排好的处理该事件的服务子程序;当处理结束后,再返回到被暂停的程序的断点处,继续执行原来的程序。
(2)什么是中断向量表?
Cortex-M3拥有一张向量表,用于在发生中断并作出响应时,从表中查询与中断对应的处理例程的入口地址向量。
(3)Cortex‐M3内核集成了中断控制器——嵌套向量中断控制器NVIC(NestedVectoredInterruptController)。
(4)中断优先级:
Cortex-M3除配置优先级外,还通过把256级优先级分为抢占优先级和亚优先级支持最多128个抢占级。
优先级分组规定:
亚优先级至少是1位,因此抢占优先级最多是7位,128级抢占优先级。
第3章STM32固件库介绍
1.CMSIS-外设访问层的文件
(1)独立于编译器的文件:
•Cortex-M3内核及其设备文件(core_cm3.h+core_cm3.c)
-访问Cortex-M3内核及其设备:
NVIC,SysTick等
-访问Cortex-M3的CPU寄存器和内核外设的函数
•微控制器专用头文件(device.h)
-指定中断号码(与启动文件一致)
-外设寄存器定义(寄存器的基地址和布局)
-控制微控制器其他特有的功能的函数(可选)
•微控制器专用系统文件(system_device.c)
-函数SystemInit,用来初始化微控制器
-函数Sysem_ExtMemCtl,用来配置外部存储器控制器。
它位于文件startup_stm32f10x_xx.s/.c,在跳转到main前调用
-SystemFrequncy,该值代表系统时钟频率
-微控制器的其他功能(可选)
(2)编译器供应商+微控制器专用启动文件
-编译器启动代码(汇编或者C)(startup_device.s)
-微控制器专用的中断处理程序列表(与头文件一致)
-弱定义(Weak)的中断处理程序默认函数(可以被用户代码覆盖)
2.CMSIS文件名的定义标准
–core_cm3.h
Cortex-M3globaldeclarationsanddefinitions,staticfunctiondefinitions
–core_cm3.c
Cortex-M3globaldefinitions
–
Top-levelheaderfile(devicespecific).
Tobeincludedbyapplicationcode.
Includescore_cm3.handsystem_
–system_
Devicespecificdeclarations
–system_
Devicespecificdefinitions,e.g.SystemInit()
【我也不知道上面到底哪个是要考的-_-|||】
第4章基于Cortex-M3的STM32F10x“最小系统”
1.最小系统:
(1)“最小系统”的概念:
在尽可能减少上层应用的情况下,能够使系统运行的最小化模块配置。
对于当前的大多数微控制器而言,“最小系统”称为“嵌入式核心控制模块”似乎更贴切一些。
(2)最小系统的组成:
①电源、②时钟、③复位电路、④存储系统、⑤调试系统
•时钟模块——通常经ARM内部锁相环进行相应的倍频,以提供系统各模块运行所需的时钟频率输入
•Flash存储模块——存放启动代码、操作系统和用户应用程序代码
•SDRAM模块——为系统运行提供动态存储空间,是系统代码运行的主要区域
•JTAG模块——实现对程序代码的下载和调试
•UART模块——实现对调试信息的终端显示
•复位模块——实现对系统的复位
(3)嵌入式最小系统的核心部分:
Cortex-M3微处理器、FLASH和SDRAM模块
2.STM32F103处理器系统频率为72MHz,处理器性能可达到90DMIPS,此时Cortex-M3功耗约14W左右。
3.系统复位:
系统复位将清除时钟控制器CSR中的复位标志和备用域寄存器之外的所有寄存器。
STM32内含复位电路支持,当任意一个下列事件发生时都将引起系统自动复位:
①NRST引脚出现低电平(外部复位);
②看门狗计时器计时终止(WWDG复位);
③独立看门狗计数终止(IWDG复位);
④软件复位(SW复位);
⑤低功耗管理复位。
可通过查询控制/状态寄存器RCC_CSR中的复位标志来识别复位源。
4.电压调压器
电压调压器的三种操作模式:
①主模式(MR):
又称“运行模式(RunMode)”或“调节模式”,用于CPU正常的运行操作,以正常功耗模式,向内核、内存、外设供给1.8V电源。
②低功耗模式(LPR):
又称“停止(机)模式(StopMode)?
”,当CPU无任务需要处理时,以低功耗模式供1.8V电源,以保持SRAM、寄存器等的内容。
一般可以根据最低电源消耗、最快速启动时间和可用的唤醒源等条件,选定最佳低功耗模式。
③掉电(关断)模式:
用于CPU“待机模式(StandbyMode)”,调压器的输出为高阻状态,停止内核电路供电,调压器处于零消耗状态,除待机电路和备份域外,寄存器和SRAM的内容将丢失。
有时,该模式被归为“低功耗模式”的一种。
5.GPIO模块
(1)GPIO(GeneralPurposeInputOutput,通用I/O)接口模块,可以为CPU提供数字输入输出功能。
(2)可以对通过软件对GPIO接口进行灵活配置和操纵,包括:
①输入输出的方向配置②引脚功能复用
③引脚的重新映射④是否可以申请中断
⑤PWM输出等
(3)STM32F10x系列产品的GPIO模块,可以进行输入输出等功能的配置。
共8种模式:
①入浮空输入:
In_Floating②上拉入输入:
IPU(InPush_Up)
③下拉入输入:
IPD(InPush_Down)④入模拟输入:
AIN(AnalogIn)
⑤开漏出输出:
OUT_OD(OD:
Open-Drain)
⑥推挽出输出:
OUT_PP(PP:
Push-Pull)
⑦复用功能推挽出输出:
AF_PP⑧复用功能开漏出输出:
AF_OD
(4)通过I/O端口配置方式降低功耗
(5)GPIO复用功能
为了使不同器件封装的外设I/O功能的数量达到最优,可以把一些复用功能重新映射到其他一些引脚上。
这可以通过软件配置相应的寄存器来完成(参考AFIO寄存器描述)。
这时,复用功能就不再映射到它们的原始引脚上了。
6.GPIO的配置
•先看GPIO.h文件
typedefenum
{
GPIO_Speed_10MHz=1,
GPIO_Speed_2MHz,
GPIO_Speed_50MHz
}GPIOSpeed_TypeDef;
#defineIS_GPIO_SPEED(SPEED)(((SPEED)==
GPIO_Speed_10MHz)||((SPEED)==GPIO_Speed_2MHz)||\
((SPEED)==GPIO_Speed_50MHz))
typedefenum
{GPIO_Mode_AIN=0x0,
GPIO_Mode_IN_FLOATING=0x04,
GPIO_Mode_IPD=0x28,
GPIO_Mode_IPU=0x48,
GPIO_Mode_Out_OD=0x14,
GPIO_Mode_Out_PP=0x10,
GPIO_Mode_AF_OD=0x1C,
GPIO_Mode_AF_PP=0x18
}GPIOMode_TypeDef;
#defineIS_GPIO_MODE(MODE)(((MODE)==GPIO_Mode_AIN)||((MODE)==
GPIO_Mode_IN_FLOATING)||\
((MODE)==GPIO_Mode_IPD)||((MODE)==GPIO_Mode_IPU)||\
((MODE)==GPIO_Mode_Out_OD)||((MODE)==GPIO_Mode_Out_PP)||\
((MODE)==GPIO_Mode_AF_OD)||((MODE)==GPIO_Mode_AF_PP))
typedefstruct
{
uint16_tGPIO_Pin;
/*!
Thisparametercanbeanyvalueof@refGPIO_pins_define*/ GPIOSpeed_TypeDefGPIO_Speed; /*! Thisparametercanbeavalueof@refGPIOSpeed_TypeDef*/ GPIOMode_TypeDefGPIO_Mode; /*! }GPIO_InitTypeDef; typedefenum {Bit_RESET=0, Bit_SET }BitAction; voidGPIO_DeInit(GPIO_TypeDef*GPIOx); voidGPIO_AFIODeInit(void); voidGPIO_Init(GPIO_TypeDef*GPIOx,GPIO_InitTypeDef*GPIO_InitStruct); voidGPIO_StructInit(GPIO_InitTypeDef*GPIO_InitStruct); uint8_tGPIO_ReadInputDataBit(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin); uint16_tGPIO_ReadInputData(GPIO_TypeDef*GPIOx); uint8_tGPIO_ReadOutputDataBit(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin); uint16_tGPIO_ReadOutputData(GPIO_TypeDef*GPIOx); voidGPIO_SetBits(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin); voidGPIO_ResetBits(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin); voidGPIO_WriteBit(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin,BitActionBitVal); voidGPIO_Write(GPIO_TypeDef*GPIOx,uint16_tPortVal); voidGPIO_PinLockConfig(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin); voidGPIO_EventOutputConfig(uint8_tGPIO_PortSource,uint8_tGPIO_PinSource); voidGPIO_EventOutputCmd(FunctionalStateNewState); voidGPIO_PinRemapConfig(uint32_tGPIO_Remap,FunctionalStateNewState);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 系统 复习资料 解读