ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:133.60KB ,
资源ID:10182155      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10182155.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(最新嵌入式笔记.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

最新嵌入式笔记.docx

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

2、sALU,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 异常种类; 异常向量表P85; 异常优

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

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

5、汇编,主要任务用C语言汇编语言结构P102一个代码段(或多个),链接器确定在存储器中的位置混合编程:主要是C语言内嵌套汇编语言关心:传递、返回用什么寄存器(特定)3、5 ARM处理器初始化分析Bootloader:硬件、软件初始化1、PC初始化过程BIOS完成计算机硬件自检运行MBR中的代码读取运行活动分区引导扇区代码从分区中读取内核映像并启动。2、嵌入式系统初始化无BIOS,硬件自检由Bootloader完成。一般Bootloader存放于0x00000000处,即处理器开始执行程序处。但不同处理器不同,具体可查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:通用异步收发器。异步通信:

9、(1)接收、发送时钟不同,使用波特率,存在误码;(2)有纠错机制(奇偶校验简单、有效、成本低)(3)传输速率:波特率使用UART,晶振选择上注意11.0592M,或用PLL与UART有关的寄存器P160串行接口设计#define rUTRSTAT0 (*(volatile unsigned *) 0x50000010)#define rUTRSTAT1 (*(volatile unsigned *) 0x50004010)#define wrUTXH0(ch) (*(volatile unsigned char *) 0x50000020)=(unsigned char)(ch)#define

10、 RdURXH0() (*(volatile unsigned char *) 0x50000024)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为满; hude

11、lay(10); wrUTXH0(data); char Uart_Getch(char *Revdata,int Uartnum,int timeout) if(Uartnum=0) while(!(rUTRSTAT0&0x1) *Revdata=RdURXH0(); return TRUE; 5、4 I/O接口设计GPIO例:#define GPCCON (*(volatile unsigned *)0X56000020)#define GPCDAT (*(volatile unsigned *)0X56000024)#define GPCUP (*(volatile unsigned *

12、)0X56000028)Main()GPCCON=0X55555555;GPCUP=0XFFFF;GPCDAT=0XA0;While(1);I/O接口独立编址;统一编址与存储系统。5、4、2 A/D转换器基本概念: S3C2410时钟:2.5MHz;8路10位AD;转换速率:500Ksps参考电压:3.3V; 精度:3.3V/2103.3mV例:A/DC#define ADC_CON_FLAG(0x115)#define ADCCON_ENABLE_START_BYRED(0x11)#define PRSCVL(496)#define ADCCON_ENABLE_START(0x1)#defi

13、ne STDBM(0x02)#define PRSCEN(0x114)#define rADCCON(*(volatile unsigned *)0x58000000)#define rADCDAT0(*(volatile unsigned *)0x5800000C)void init_ADdevice() rADCCON = PRSCVL|ADCCON_ENABLE_START|STDBM|PRSCEN;int GetADresult(int channel) rADCCON=ADCCON_ENABLE_START_BYREAD|(channel3)|PRSCEN|PRSCVL; hudel

14、ay(10); while(!(rADCCON & ADCCON_FLAG); return(0x3FF & rADCDAT0);int main() float d; int i; while(1) for(i=0;i=2;i+) d=GetADresult(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/

15、10);rGPCDAT =0XFF;Hudelay(k/10+1);寄存器赋值:读修改写PWM控制直流电机(小功率)寄存器(PWM)TCNTBn:决定频率; TCMPBn:决定占空比; TCNTBn、TCMPBn等;TCON:控制寄存器开始、停止、倒相、更新寄存器TCFG0:预分频,死区单元(时间); TCFG1:MUX分频程序:Init_Motoport()rGPBCON =rGPBCON&0X3FFFF0 | 0XA; /B1、B0对应TOUT1,TOUT0rTCFG0=(0任务级调度器或OSIntExt()-中断级调度器; 注:非用户函数;这里主要介绍任务级调度器如何:(1)查找任务就绪

16、表;(2)进行任务切换。与普通中断不同,SP被改变,导致中断进入、返回是PC不同。任务就绪表由INT8U 变量 OSRdyGrp与INT8U 数组 OSRdyTbl实现优先级不会超过63:111111,分成前3位和后3位;前3位置位OSRdyGrp的某一位,后3位置位OSRdyTbln的某一位;因此,可将优先级看成6位2进制数,D5D4D3表示OSRdyGrp的具体数据位,低3位D2D1D0表示该数组元素具体数据位。任务的调度(切换)两步:(1)获得待运行任务的TCB指针;(2)进行断点任务切换;任务级调度:(1)OSSched()确认未被上锁,且不是中断服务程序调度器,首先查找最高优先级就绪

17、任务的优先级别,找到它的TCB指针,并且赋值给OSTCBHighRdy;(2)任务切换宏OS_TASK_SW(),函数OSCtxsw()实现。能否正确地在CPU各寄存器中恢复断点数据,即CPU的堆栈指针SP是否有正确指向,用OSTCBStkPtr保存SP;先出了SP之后,中断返回时,PC出栈,此时PC非中断发生时PC具体实现:由于不具备对PC出栈、入栈指令,所以引发一次中断,中断服务程序OSCtxSw()一般用汇编语言写。任务的创建实质就是创建一个任务控制块,并通过任务控制块把任务代码和任务堆栈关联起来。由函数OSTaskCreate()和OSTaskCreateExt()完成。INT8U O

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

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

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

21、数据结构。4、事件控制块(ECB)作为功能完善的事件,应对等待的任务有管理功能:一是要对等待事件的所有任务进行记录并排序;二是应该允许任务有一定的等待时限。UC/OS-使用事件控制块(ECB)的数据结构来描述如信号量、消息邮箱、消息队列这些事件。(1)ECB数据机构Typedef struct公司成功地创造了这样一种气氛:商店和顾客不再是单纯的买卖关系,营业员只是起着参谋的作用,顾客成为商品或者说是作品的作参与者,营业员和顾客互相交流切磋,成为一个共同的创作体INT8U OSEventType; /事件类型INT16U OSEventCnt; /信号量计数器Void *OSEventPtr;

22、/消息或消息队列指针INT8U OSEventGrp; /等待事件的任务组INT8U OSEventTbl OS_EVENT_TBC_SIZE;而手工艺制品是一种价格适中,不仅能锻炼同学们的动手能力,同时在制作过程中也能体会一下我国传统工艺的文化。无论是送给朋友还是亲人都能让人体会到一份浓厚的情谊。它的价值是不用金钱去估价而是用你一颗真诚而又温暖的心去体会的。更能让学生家长所接受。OS_EVENT; 二、资料网址:关于DIY手工艺制品的消费调查OSEventType可取值OS_EVENT_TYPE_SEM 信号量月生活费 人数(频率) 百分比OS_EVENT_TYPE_MUTEX 互诉型信号量可见“体验化消费” 广受大学生的欢迎、喜欢,这是我们创业项目是否成功的关键,必须引起足够的注意。OS_EVENT_TYPE_MBOX 消息邮箱OS_EVEN

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1