


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、ARM 体系的嵌入式系统 BSP 的程序设计ARM32RISCCPUV3V6.BSP(Board Support Package)板级支持包介于主板硬件和操作系统之间,其功能与PCBIOS硬件初始化并切换到相应的操作系BSPBSP, 例如VxWorks的BSPLinux的BSPCPUARMBSP 程序员对硬件、软件和操作系统都要有一定的了解.ARM体系的嵌入式BSPHMS320C7202初始化过程尽管各种嵌入式应用系统的结构及功能差别很大,但其系统初始化部分完成的操作有很大一部分是相似的.嵌入式系统的启动流程如图 1 所示。1。1 设置入口指针启动程序首先必须定义指针,而且整个应用程序只有一个
2、入口指针。一0入口点。入口点代码如下:ENTRY(_start) ;开始1。2 设置异常中断向量表ARM0841:0 x00 x40 x8 0 x0c异常中断类型复位未定义中断软件中断(SWI) 指令预取中止异常中断模式特权模式(SVC) (Undef)特权模式中止模式优先级(6低)16650 x100 x100 x140 x180 x1c数据访问中止中止模式保留未使用外部中断请(IRQ) 外部中断(IRQ)模式快速中断请(FIQ)快速中断(FIQ)模2未使用43表 1 各异常中断的中断向量地址以及中断的处理优先级中断向量地址 异常中断类型 异常中断模式 优先级(60 x0 复位 特权模式(S
3、VC) 10 x4 未定义中断 未定义指令中止模式(Undef) 60 x8 软件中断(SWI) 特权模式(SVC) 60 x0c 指令预取中止 中止模式 50 x10 数据访问中止 中止模式 20 x14 保留 未使用 未使用0 x18 外部中断请求(IRQ) 外部中断(IRQ)模式 40 x1c 快速中断请求(FIQ) 快速中断(FIQ)模式 3每当一个中断发生后,ARM处理器便强制把程序计数器(PC)指针置为1ARM指令的132MB,B32MB,LDR错误中断引起系统的混乱。初始化存储系统初始化存储多种存储器类型的接口,不同的存储系统的设计不尽相同。FlashSRAMDRAMSDRAMH
4、MS30C7202SDRAM4计对此分别加以正确配置。SDRAMSDRAM间可能不同延时使能自动刷新延时设置模式寄存器(位于 SDRAM 内部)。存储器地址分布重映射(remap)MMU000ROMFlashROMFlashROM FlashSDRAM 0,并把系统程序加载到SDRAM案:0ROMSDRAM拷贝完成后,进行重映射操作;RAMPCRAM得正确的指令.流程不能被这种变化所打断,注意保证程序流程在重映射前后的承接关系。I/OMMU在ARM,MMUMMU的设置.以下是实现 MMU 的部分代码:for=(i=1;0 x1000;i+pagetablei(20)|MMU_SECDESC/建
5、立页表,每页大小为 1MB,页表偏移序号是物理地址的高 12 位;for(addr=SDRAM_BASE;addr20=addr|MMU_SECDESE MMU_CACHEABLE|MMU_BUFFERABLE;/将 SDRAM_BASE 至(SDRAM_BASE+SDRAM_SIZE/2)空间的设置为不可CACHEBUFFERfor(addr=SDRAM_BASE+SDRAM_SIZE/2;addr20=(addr+0 x1000000)|MMU_SECDESC MMU_CACHEABLEMMU_BUFFERABLE;/将这段空间的地址映射关系设置为 VA(虚拟地址)=PA(物理地址)+0
6、x1000000pagetable0=(0 x42f00000)MMU_SECDESCMMU_CACHEABLE MMU_BUFFERABLE;/将 SDRAM 的虚拟地址 0 x42f00000 映射到 0 处初始化各模式下的堆栈指针ARM7都是独立的(SystemUserSP)SP方法是改变状态寄存器SPSP,I_BitIRQFIQ;Set up SVC stack to be 4K on top of zeroinit data LDR r1,=installStackADdsp,r1,2048;Set up IRQ and FIQ stacks MOV r0,(Mode_IRQ32I_
7、Bit) MSRcpsr,r0MOV r0,r0 ADdsp,r1,20482MOV r0,#(Mode_FIQ32I_Bit MSR cpsr,r0MOV r0,r0ADdsp,r1,2048*3一般堆栈的大小要根据需要而定,但是要尽可能给堆栈分配快速和高带宽的存储器。堆栈性能的提高对系统性能的影响是非常明显的.初始化有特殊要求的端口、设备有些关键的I/OIRQFIQIRQFIQHMS30C72021116C550UART9口 1 的初始化主要是对各寄存器的设置,其实现代码如下所示:_outb(ser_base+0 x30,1);_outw(0 x8002301c,0 xffff9f9f)
8、;GPIO PORT A Register_outw(0 x800230A4,0 x6060) ;GPIO PORT A elect-Registerserial_outb(SERIAL_LCR,0 x80); serial_outb(SERIAL_LCR,0 x80); serial_outb(SERIAL_DLL,baud_datacur_baud); serial_outb(SERIAL_DLM,0 x0); serial_outb(SERIAL_LCR,0 x03); seial_outb(SERIAL_FCR,0 x01); serial_outb(SERIAL_IER,0 x00)
9、; serial_outb(SERIAL_MCR,0 x03);1。7 切换处理器模式,开中断UserUserUserUser作 CPRS 回到别的模式了,可能会对接下去的程序执行造成影响。CPRS过早地开中断,在系统初始化之前就触发了有效中断,会导致系统的死机。18 呼叫主应用程序当所有的系统初始化工作完成后,就需要把程序流程转入主应用程序. 2 技术难点分析多种语言的混合编程ARM有两种汇编指令集:16THUMB32ARM16THUMBARM32ARMThumbATPCS.ATPCSARMCC+C/C+ BSPCPUCCCCP15C/C+ATPCSC 语言编写嵌入式ROM混合编程情况下的程序编译及链接后的输出代码与没有混合编程时是不同的.所以当
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025石家庄放射工作人员培训试题及答案
- 2025年广西专业技术人员公需科目试题及答案
- 激励策略在人事行政管理中的应用案例考核试卷
- 2025年驾照考试复习题库科目一模拟题及答案解析
- 医疗器械智能制造的智能包装与物流系统考核试卷
- 农产品仓储信息化与农产品冷链物流运输成本控制案例考核试卷
- 健身器材市场品牌合作策略考核试卷
- 供应链战略规划与品牌影响力构建考核试卷
- 人力资源战略与企业战略整合方法考核试卷
- 担保追偿管理办法
- 《陆上风电场工程概算定额》NBT 31010-2019
- YB-4001.1-2007钢格栅板及配套件-第1部分:钢格栅板(中文版)
- 初中数学教学的心得体会范文(19篇)
- 中国银行贷款合同中国银行贷款合同
- 广州民航职业技术学院花都赤坭校区机场场务技术与管理专
- 财经应用文写作PPT全套完整教学课件
- 最全学科带头人教学能手选拔理论试题及答案(教师基本素养试题)
- 山东建筑资料全套表格
- GB/T 13789-2022用单片测试仪测量电工钢带(片)磁性能的方法
- GB/T 34891-2017滚动轴承高碳铬轴承钢零件热处理技术条件
- GB/T 15057.2-1994化工用石灰石中氧化钙和氧化镁含量的测定
评论
0/150
提交评论