嵌入式笔记(共13页)

上传人:txadgkn****dgknqu... 文档编号:48388205 上传时间:2022-01-04 格式:DOC 页数:13 大小:56.50KB
收藏 版权申诉 举报 下载
嵌入式笔记(共13页)_第1页
第1页 / 共13页
嵌入式笔记(共13页)_第2页
第2页 / 共13页
嵌入式笔记(共13页)_第3页
第3页 / 共13页
资源描述:

《嵌入式笔记(共13页)》由会员分享,可在线阅读,更多相关《嵌入式笔记(共13页)(13页珍藏版)》请在装配图网上搜索。

1、精选优质文档-倾情为你奉上嵌入式系统软件体系结构:1、 无操作做系统(1) 循环结构(主体是循环)做很多任务时不好(有延迟),加中断和定时器较好;(2) 前后台结构中断2、 有操作系统开发软件难度降低;多个任务并行执行,任务多少与内存(RAM)大小有关;嵌入式操作系统的分类:1、 商用系统、专用系统、开源系统2、 按响应时间分类实时操作系统、非实时操作系统第三章ARM:内核、32位、占市场比例75%;也是公司名,制作内核;与PC相比功耗小、价格低、集成度低,但集成了一些外设;MIPS/W衡量处理器的标准;工作模式、代码密度存储密度。3、2 ARM微处理器体系结构偏上外设的空间属于I/O空间;A

2、RM的架构1个32bitsALU,31个32bits通用寄存器及6个状态寄存器。3、2、3 ARM的寄存器组织(注:内核寄存器):未分组寄存器 R0R7;分组寄存器 R8R14; 程序计数器 PC(R15);R13堆栈指针SP;R14PC的备份,也常写作LR,操作系统切换用;程序状态寄存器 CPSR3、2、4 ARM处理器模式(7种)(1) 用户模式(USR);(2)快速中断模式(FIQ);(3)外部中断模式(IRQ);(4) 管理模式(SVC);(5)数据访问终止模式(ABT);(6)系统模式(SYS);(7) 未定义指令中止模式(UND);大部分为用户模式下运行3、2、5 异常种类;异常向

3、量表P85; 异常优先级;对异常的响应:(1) 保存下一条指令地址LR(R14);(2) CPSRSPSR;(3) 根据异常类型设置CPSR的M4:0;(4) PC跳转至异常向量地址(异常向量表内的);再跳转至异常处理程序;(5) 从异常返回。ARM指令集32位;Thumb指令集16位,是ARM指令集的子集;常用指令:B目标地址;BL目标地址;R14PC-4BLX目标地址;ARMThumbMOVR1,R0;R0-R1MOVR0,#0;#表示常数?CMPR1,R0;比较;影响CPSR标志位LDRR0,R1;MOV不能从存储器读取数据LDRR0,R1,R2;相加为内存单元地址?LDRR0,R1,#

4、8;LDRR0,R1,R2,LSL #2!;?地址R1+R2*4的数据R1,LSL表示左移,LSR表示右移ADDR0,R2,R3,LSL #1;R0=R2+R31?SUBR0,R1,R2;R0=R1-R2ADC、SBC 考虑CBSR中C位进、借位标志SWI 软中断指令伪指令不会生成机器码,起辅助作用AREAInit ,CODE ,READONLYENTER;入口地址ENDThumb指令集:区别没有协处理器指令;无访问CPSR、SPSR指令;无64位乘法指令;访问寄存器受限3、4 ARM处理器编程简介文件格式:*.S,*.ASM;*.C,*.CC(C+程序);一般初始化文件用汇编,主要任务用C语

5、言汇编语言结构P102一个代码段(或多个),链接器确定在存储器中的位置混合编程:主要是C语言内嵌套汇编语言关心:传递、返回用什么寄存器(特定)3、5 ARM处理器初始化分析Bootloader:硬件、软件初始化1、 PC初始化过程BIOS完成计算机硬件自检运行MBR中的代码读取运行活动分区引导扇区代码从分区中读取内核映像并启动。2、 嵌入式系统初始化无BIOS,硬件自检由Bootloader完成。一般Bootloader存放于0x处,即处理器开始执行程序处。但不同处理器不同,具体可查datasheet。Bootloader是一段小程序,通过这段小程序初始化最基本的硬件设备,并建立内存空间映射图

6、。常用Bootloader有:Uboot和ViVi,其中Uboot开源第5章 嵌入式系统硬件平台与接口设计5、11、 S3C2410简介ARM920T内核、0.18um;CMOS工艺、外围模块(片上外设);MMU(内存管理单元)PWM控制直流电机中的转速,开关电源,产生方波S3C2310A微处理器的启动方式NandflashSDRAM大容量存储器NorflashSRAMXIP功能:在片内运行程序,成本高,容量小,掉电不消失DRAM:动态随机存储器,存储密度大,需刷新电路;SRAM:静态随机存储器,使用方便,容量小,无需刷新电路;SDRAM:同步动态随机存储器,存储容量大,需内部刷新电路,需要同

7、步时钟;启动方式(Nandflash启动)手机、嵌入式系统两级引导:第一级:系统复位时,若OM1:0为00,则将Nandflash的前4K字节复制到内部SRAM中(CPU自动完成,不需干预);第二级:Nandflash 前4K一般存放Bootloader,Bootloader初始化SDRAM(外扩内存)及Nandflash控制器,及其他初始化,随后将Bootloader的其它部分复制到SDRAM中,运行SDRAM中的代码(即执行Bootloader),引导操作系统及其他应用程序。5、2 存储器系统设计(很重要)内存一定是挂在系统总线上的;高速缓存:位置CPU与主存储器(内存之间);作用:提高内

8、存系统性能;原理:cache与主存有相同块号,CPU访问主存时,受限访问cache,有则取,无则访问主存,且主存数据cache内存管理单元(MMU)作用:(1) 虚拟存储空间到物理存储空间的映射,查表过程;解释?程序所需内存大于物理内存时的情况;(2) 存储器访问权限控制;(3) 设置虚拟存储空间的缓冲特性5、3 串行接口设计(UART)通过串口观察程序运行状态;可以接收输入,可以输出好多信息;用来运行时交流。1、 串行通信的基本概念(UART)SPI、I2C、CAN单工、半双工、全双工USART:通用同步和异步收发器(有时钟信号);UART:通用异步收发器。异步通信:(1) 接收、发送时钟不

9、同,使用波特率,存在误码;(2) 有纠错机制(奇偶校验简单、有效、成本低)(3) 传输速率:波特率使用UART,晶振选择上注意11.0592M,或用PLL与UART有关的寄存器P160串行接口设计#definerUTRSTAT0 (*(volatile unsigned *) 0x)#definerUTRSTAT1 (*(volatile unsigned *) 0x)#definewrUTXH0(ch) (*(volatile unsigned char *) 0x)=(unsigned char)(ch)#define RdURXH0() (*(volatile unsigned char

10、 *) 0x)int main(void)char c11;while(1)Uart_SendByten(0,0xa);/换行Uart_SendByten(0,0xd);/回车er=Uart_Getch(c1,0,0);Uart_SendByten(0,c10);void Uart_SendByten(int Uartnum,U8 data)if(Uartnum=0)while(!(rUTRSTAT0&0x4);/查看倒数三位的状态;判断发送缓冲区是否为空,为1为空,为0为满;hudelay(10);wrUTXH0(data);char Uart_Getch(char *Revdata,int

11、 Uartnum,int timeout)if(Uartnum=0)while(!(rUTRSTAT0&0x1)*Revdata=RdURXH0();return TRUE;5、4 I/O接口设计GPIO例:#define GPCCON (*(volatile unsigned *)0X)#define GPCDAT (*(volatile unsigned *)0X)#define GPCUP (*(volatile unsigned *)0X)Main()GPCCON=0X;GPCUP=0XFFFF;GPCDAT=0XA0;While(1);I/O接口独立编址;统一编址与存储系统。5、4、

12、2 A/D转换器基本概念: S3C2410时钟:2.5MHz;8路10位AD;转换速率:500Ksps参考电压:3.3V; 精度:3.3V/2103.3mV例:A/DC#defineADC_CON_FLAG(0x115)#defineADCCON_ENABLE_START_BYRED(0x11)#definePRSCVL(496)#defineADCCON_ENABLE_START(0x1)#defineSTDBM(0x02)#definePRSCEN(0x114)#definerADCCON(*(volatile unsigned *)0x)#definerADCDAT0(*(volatil

13、e unsigned *)0xC)void init_ADdevice()rADCCON = PRSCVL|ADCCON_ENABLE_START|STDBM|PRSCEN;int GetADresult(int channel)rADCCON=ADCCON_ENABLE_START_BYREAD|(channel3)|PRSCEN|PRSCVL;hudelay(10);while(!(rADCCON & ADCCON_FLAG);return(0x3FF & rADCDAT0);int main()float d;int i;while(1)for(i=0;i=2;i+)d=GetADres

14、ult(i)*3.3/1023;Uart_Print(a%d=%ft,i,d);hudelay(1000);软件以工程为整体实验箱自带很多源码,用“模板”文件,看说明;Startup.c起始文件,入口程序,只读即可。AD控制LED亮度While(1)K=GetADresult(0);rGPCDAT =0x00;Hudelay(110-k/10);rGPCDAT =0XFF;Hudelay(k/10+1);寄存器赋值:读修改写PWM控制直流电机(小功率)寄存器(PWM)TCNTBn:决定频率;TCMPBn:决定占空比;TCNTBn、TCMPBn等;TCON:控制寄存器开始、停止、倒相、更新寄存器

15、TCFG0:预分频,死区单元(时间);TCFG1:MUX分频程序:Init_Motoport()rGPBCON =rGPBCON&0X3FFFF0 | 0XA;/B1、B0对应TOUT1,TOUT0rTCFG0=(0任务级调度器或OSIntExt()-中断级调度器;注:非用户函数;这里主要介绍任务级调度器如何:(1) 查找任务就绪表;(2)进行任务切换。与普通中断不同,SP被改变,导致中断进入、返回是PC不同。任务就绪表由INT8U 变量 OSRdyGrp与INT8U 数组 OSRdyTbl实现OSRdyTbl0 OSRdyGrpOSRdyTbl7Dn=0,说明OSRdyTbln组有就绪任务。

16、D7 D0D7 D0D7 D0优先级不会超过63:,分成前3位和后3位;前3位置位OSRdyGrp的某一位,后3位置位OSRdyTbln的某一位;因此,可将优先级看成6位2进制数,D5D4D3表示OSRdyGrp的具体数据位,低3位D2D1D0表示该数组元素具体数据位。任务的调度(切换)两步:(1)获得待运行任务的TCB指针;(2)进行断点任务切换;任务级调度:(1)OSSched()确认未被上锁,且不是中断服务程序调度器,首先查找最高优先级就绪任务的优先级别,找到它的TCB指针,并且赋值给OSTCBHighRdy;(2)任务切换宏OS_TASK_SW(),函数OSCtxsw()实现。能否正确

17、地在CPU各寄存器中恢复断点数据,即CPU的堆栈指针SP是否有正确指向,用OSTCBStkPtr保存SP;先出了SP之后,中断返回时,PC出栈,此时PC非中断发生时PC具体实现:由于不具备对PC出栈、入栈指令,所以引发一次中断,中断服务程序OSCtxSw()一般用汇编语言写。任务的创建实质就是创建一个任务控制块,并通过任务控制块把任务代码和任务堆栈关联起来。由函数OSTaskCreate()和OSTaskCreateExt()完成。INT8UOSTaskCreate(void (*task)(void *pd),void *pdata,OS_STK *pts,INT8U Prio)检测任务优先

18、级是否合法;确认优先级未被占用;初始化任务堆栈;获得并初始化任务控制块;任务计数器+1;任务调度;(UC/OS-II处于运行状态)创建任务的一般方法要求在OSStart()之前至少创建一个任务,习惯上创建一个启动任务,并赋予最高优先级,在调用OSStart()之前,再由它创建其他任务。任务的挂起和恢复OS_TASK_SW()任务被剥夺CPU使用权就绪状态等待状态运行状态OSTaskResume()OSTaskSuspend()挂起:停止任务的运行,使处于等待状态OSTaskSuspend()挂起自身或空闲任务之外的其他任务;OSTaskSuspend()刮起的任务只能在其他任务中调用OSTas

19、kResume()使其恢复为就绪状态。UC/OS-II的初始化和任务的启动OSInit()对UC/OS-II的所有全局变量和数据结构初始化;同时创建任务OSTaskIdle()(空闲任务);如果还要使用统计任务,同时创建完成;数据结构主要是创建包括任务控制块在内的5个空数据缓冲区;OSStart()启动任务,前提是至少创建了一个用户任务。用系统自带延时函数OSTimeDly(),可使性能优化,提高CPU利用率。OS_task.cOS_core.cOS_sem.cOS_time.cVoid Task1(void *Id)INT16UK=0;For(;)K=GetADresult(0);rGPCD

20、AT =rGPCDAT &(15);OSTimeDly(22-K/50);rGPCDAT =rGPCDAT |(15);OSTimeDly(1+K/50);任务的同步与通信一个好的操作系统必须具有完备的同步和通信机制。事件:UC/OS-II中使用信号量、消息邮箱和消息队列这些被称作事件的中间环节来实现任务间的通信。1、 信号量(变量)作用:“标志位”的作用1信号量共享资源任务2(5)(7)(2)(4)(6)任务1(1)(3)(1):先申请;(2):10;(3)、(7):使用;(4):后申请,申请不到;(5) :任务1使用完毕,01;(6):在申请,可用;2、 消息邮箱作用:任务间传递数据3、

21、消息队列消息邮箱中的指针换成指针数组;可传递多个消息的数据结构。4、 事件控制块(ECB)作为功能完善的事件,应对等待的任务有管理功能:一是要对等待事件的所有任务进行记录并排序;二是应该允许任务有一定的等待时限。UC/OS-II使用事件控制块(ECB)的数据结构来描述如信号量、消息邮箱、消息队列这些事件。(1) ECB数据机构TypedefstructINT8UOSEventType;/事件类型INT16UOSEventCnt;/信号量计数器Void *OSEventPtr;/消息或消息队列指针INT8UOSEventGrp;/等待事件的任务组INT8UOSEventTbl OS_EVENT_TBC_SIZE;OS_EVENT;OS_EVENTOSEventTypeOSEventCntOSEventPtrOSEventGrpOSEventTbl8*8任务等代表OSEventType可取值OS_EVENT_TYPE_SEM信号量OS_EVENT_TYPE_MUTEX互诉型信号量OS_EVENT_TYPE_MBOX消息邮箱OS_EVENT_TYPE_Q消息队列OS_EVENT_TYPE_UNUSED空事件控制块专心-专注-专业

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!