




免费预览已结束,剩余23页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章 无操作系统的应用软件开发,嵌入式软件系统:无操作系统和有操作系统; 无操作系统包含引导程序和应用程序。 有操作系统在引导程序结束后,要运行操作系统,并将应用程序作为任务添加到操作系统中。 嵌入式操作系统不管是否使用操作系统,都需要一段引导程序bootloader来初始化硬件,为操作系统或应用程序做准备。,1.无操作系统的软件运行模式,4510b开发板上的存储介质,一块4510b开发板上,一般有三种存储介质: flash,sdram和4510片内的sram。,flash一般是只读的(只在运行的时候),而且一般都作为 bootrom使用,因为flash 里存储的内容在掉电的时候也不会 丢失,所以flash很适合作为bootrom,用来保存bootloader。,sdram,是可读写的存储介质,速度比flash快的多,在 系统运行的时候,sdram是主要的存储介质。但sdram里 的数据在掉电后即消失,无法用来保存数据。所以每次启动 的时候都需要bootloader将内核装重新装载到sdram里去。,在4510的片内还集成了8k的sram,sram也是可读写的, 一般作为系统的cache使用。,应用程序,引导程序,sdram,flash,2mb,16mb,0x000 0000,0x100 0000,0x120 0000,import c_entry bl c_entry,无操作系统运行模式a,应用程序,引导程序,sdram,flash,2mb,16mb,0x000 0000,0x100 0000,0x120 0000,0x001 0000,ldr r1,=0x10000 mov pc,r1,无操作系统的软件运行模式b,bootloader的功能,(1)定义异常向量 (2)初始化系统配置寄存器 (3)进行第一次存储器映射 (4)从flash复制程序到sdram (5)进行第二次存储器映射 (6)初始化堆栈指针,使用mov,msr指令 (7)引导应用程序时,跳转到应用程序中的主函数中。,当异常发生时,处理器pc指针会强制性跳转到固定的地址处, 根据异常的类型不同,各地址也各部相同。,code32 area init,code,readonly entry b reset_handler;启动后跳转到标号 ;reset_handler处 nop ;未定义指令中断 nop ;软件中断 nop ;预取指令终止 nop ;数据终止 nop ;保留 nop ;irq中断 nop ;fiq中断,(1)定义异常向量,没有使用中断时,在中断向量表处可存放nop指令,需要使用 中断向量时,如irq中断时,在相应的中断向量地址处存放一 条跳转到中断服务程序的跳转指令即可。,nop ;未定义指令中断 nop ;软件中断 nop ;预取指令终止 nop ;数据终止 nop ;保留 b irqhandler ;irq中断 nop ;fiq中断,(2)初始化系统配置寄存器,系统配置寄存器syscfg决定了编址空间中特殊功能寄存器组 的起始地址,以及片内sram的使用方式和起始地址,应首先 对其初始化。(基址为0x3ff 0000),系统配置寄存器syscfg,该寄存器决定系统管理器中特殊功能寄存器组的起始地址, 以及片内sram的使用方式和起始地址。,【15:6】;该设置值左移16位即为片内sram组 的起始地址,【25:16】;该设置值左移16位即特殊功能寄存器的起 始物理地址,syscfg equ 0x3ff0000 ;系统配置寄存器地址,rsyscfg equ 0xe7ffff90 ;系统配置寄存器赋值,ldr r1,=syscfg ;初始化syscfg寄存器 ldr r0,=rsyscfg str r0,r1,rom/sram/flash控制寄存器,【19:10】;该设置值左移16位即为rom/sram/flash组 的起始地址,【29:20】;该设置值左移16位减1即为rom/sram/ flash组的结束地址,0x0200 0060,10位,19位,第一次映射设置为:00 0000 0000,起始地址为0x0,第一次映射设置为:00 0010 0000,组尾指针为0x20 0000,第二次映射设置为:01 0000 0000,起始地址为0x100 0000,第二次映射设置为:01 0010 0000,组尾指针为0x120 0000,因为试验板在硬件上只连接了一片flash芯片,bootloader 只需要对寄存器romcon0进行初始化,另外5个寄存器的 值设置为0.,romcon0 equ 0x3ff3014 ;flash配置寄存器地址,rfromcon0 equ 0x0200 0060,rromcon1 equ 0x0 rromcon2 equ 0x0 rromcon3 equ 0x0 rromcon4 equ 0x0 rromcon5 equ 0x0,dram/sdram控制寄存器dramconn,sdramcon0 equ 0x3ff302c ;sdram配置寄存器地址,rfsdramcon0 equ 0x14010380,rsdramcon1 equ 0x0 rsdramcon2 equ 0x0 rsdramcon3 equ 0x0,【19:10】;该设置值左移16位即为sdram组 的起始地址,【29:20】;该设置值左移16位减1即为sdram组的结束地址,数据总线宽度寄存器extdbwth,s3c4510b可以以8,16,32位的数据宽度访问外部rom,sram,flash存储器,通过设置数据宽度寄存器可以设定与特定外部存储器和外部i/o组相对应的数据宽度。,【1:0】;该设置rom/sram/flash组0的数据总线宽度 00 不允许 01 字节 (8) 10 半字 (16) 11 字 (32),【13:12】;该设置dram组0的数据总线宽度,说明: rom/sram/flash组0中连接了16位的flash芯片, dram组0中连接了32位的sdram 其余没有使用的组均设置为00,表示没有连接物理设备。,ldr r1,=extdbwth ldr r0,=rextdbwth str r0,r1,extdbwth equ 0x3ff3010 ;数据宽度寄存器地址,rextdbwth equ 0x00003002 ;数据宽度寄存器的赋值,dram刷新与外部i/o控制寄存器refextcon,refextcon equ 0x3ff303c,rrefextcon equ 0xce338360,(3)进行第一次存储器映射,板子刚上电后,只有flash是可用的(在这里我们不考虑片内sram)。sdram没有被初始化,是不可用的。,ldr r0, =romcon0 ;把flash映射到0x0-0x20,把sdram映射到0x40-0x140 ldr r1, =rfromcon0 ldr r2, =rromcon1 ldr r3, =rromcon2 ldr r4, =rromcon3 ldr r5, =rromcon4 ldr r6, =rromcon5 ldr r7, =rfsdramcon0 ldr r8, =rsdramcon1 ldr r9, =rsdramcon2 ldr r10,=rsdramcon3 ldr r11,=rrefextcon stmia r0, r1-r11,将各寄存器的赋值一次性写入相应的特殊功能寄存器。,(4)从flash复制程序到sdram,第一次映射中sdram 0x40 00000x140 0000处,由于 sdram具有更快的读、写速度,所以将程序从flash中复制 到sdram中执行。,ldr r0, =0x0 ;初始化复制数据的源地址 ldr r1, =0x200000 ;初始化循环次数 ldr r2, =0x400000 ;初始化复制数据的目的地址,flash_copy ;把程序从flash拷贝到sdram ldr r3, r0, #4 str r3, r2, #4 subs r1, r1, #4 bne flash_copy,(5)进行第二次存储器映射,将sdram存储器地址映射成0x00x100 0000,将flash 存储器地址映射到0x120 0000 0x140 0000.,由于flash存储器比sdram容量小,读写速度慢,而arm芯片的硬件构成决定了异常向量必须存放在0x0处, 如果将flash映射到0x0,将明显减少系统对异常的处理时间,在flash中不方便对异常向量表的修改通常将异常向量表存放到sdram中,因此要进行第二次映射。,实现第二次映射的程序:,ldr r0, =romcon0 ldr r1, =rsromcon0 ldr r2, =rromcon1 ldr r3, =rromcon2 ldr r4, =rromcon3 ldr r5, =rromcon4 ldr r6, =rromcon5 ldr r7, =rssdramcon0 ldr r8, =rsdramcon1 ldr r9, =rsdramcon2 ldr r10,=rsdramcon3 ldr r11,=rrefextcon stmia r0, r1-r11,sdram在016m的位置,而flash被映射到到了1618m的位置。由于在sdram有一份bootloader的拷贝,所以在重新后bootloader可以继续执行。,(6)初始化堆栈指针,使用mov,msr指令,mov r0, #0x12 msr cpsr_c, r0 mov sp,#0x700000;设置irq堆栈指针 mov r0,#0x11 msr cpsr_c, r0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025南平武夷有轨电车有限公司社会招聘(四)备考练习试题及答案解析
- 2025年护士心脏复苏考试题及答案
- 混凝土施工项目团队协作方案
- 2025内蒙古鄂尔多斯市衡水实验中学招聘备考练习题库及答案解析
- 辅导教师聘用合同书协议模板
- 2025宁波宁海县国有企业招聘52人考试参考试题及答案解析
- 英语试卷及答案
- 考驾驶证模拟试题及答案
- 2025年安徽医科大学附属安庆第一人民医院第二批公开招聘工作人员8人备考练习试题及答案解析
- 2025通辽市直事业单位第二批次人才引进77人备考练习试题及答案解析
- 教育与宗教分离课件
- 湘科版五年级科学上册全册教案教学设计
- 中职教材导游基础知识完整版-PPT课件全套教程
- 烹饪实用英语(第三版)全套课件完整版电子教案最新板
- 实用商务英语教程1509教学课件汇总完整版电子教案
- 市场营销基础第5版电子教案课件
- 外科学教学课件:食管癌与肺癌
- 一年级群文阅读学习教案
- 葫芦烙画教学校本课程
- 沙盘规则介绍(课堂PPT)
- 球队赞助策划书(共5页)
评论
0/150
提交评论