




已阅读5页,还剩41页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章 无操作系统的应用软件开发,嵌入式软件系统:无操作系统和有操作系统; 无操作系统包含引导程序和应用程序。 有操作系统在引导程序结束后,要运行操作系统,并将应用程序作为任务添加到操作系统中。 嵌入式操作系统不管是否使用操作系统,都需要一段引导程序bootloader来初始化硬件,为操作系统或应用程序做准备。,引导程序是驻留在磁盘的第一个扇区的程序,例如硬盘的MBR(主引导记录)。在启动过程中,在检测过系统之后,如果系统被设置成为从MBR引导的话,BIOS(基本输入/输出系统)将控制权交给MBR,而驻留在MBR中的程序就是引导程序,它负责将控制权传递给操作系统,以完成启动过程 。 GRUB是功能强大的引导程序,可以引导多种不同类型的操作系统,例如Windows,DOS,Linux,GNU Hurd,*BSD等。 LILO是最流行的引导程序,用来引导多种不同的操作系统。,1.无操作系统的软件运行模式,应用程序,引导程序,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,目前应用在手机上的操作系统主要 有PalmOS、Symbian、Windows CE和Linux四种。,Palm OS操作系统 Palm OS操作系统由Palm公司自行开发的,并授权给Handspring、索尼和高通等设备厂家,这种操作系统更倾向于PDA的操作系统。 Palm OS在PDA市场占有主导地位。Palm的产品线本身就包括智能手机,又宣布与最早的智能手机开发者Handspring购并,同时将软件部门独立。,Symbian是一个实时性、多任务的纯32位操作系统,具有功耗低、内存占用少等特点,非常适合手机等移动设备使用,经过不断完善,可以支持GPRS、蓝芽、SyncML、以及3G技术。最重要的是它是一个标准化的开放式平台,任何人都可以为支持Symbian的设备开发软件。,Symbian系统,第一款基于Symabian系统的手机是2000年上市的某款爱立信手机。而真正较为成熟的同时引起人们注意的则是2001年上市的诺基亚9210,它采用了Crystal分支的系统。而2002年推出的诺基亚7650与3650则是Symbian Pearl分系的机型,其中7650是第一款基于2.5G网的智能手机产品,他们都属于Symbian的6.0版本。,Windows CE系统,Windows CE系统包括 Pocket PC和Smartphone,前者针对无线PDA,后者专为手机,已有多个来自IT业的新手机厂商使用,增长率较快。 Pocket PC 2002 推出了应用在手机上的Phone Edition(电话版本),国内贴牌机多普达686就使用了这个系统。不过它在移动通讯方面的功能并不是很全面。针对这种情况,微软于2002年底发布了专门为手机开发的操作系统SmartPhone2002,像symbian Pearl一样,是专为移动通讯设备开发的系统。 虽然从众多手机厂商的反应来看,全球手机五大厂商中只有三星购买了微软的软件许可,所以其在手机市场上占有率还很低。,Linux系统 Linux系统件是一个源代码开放的操作系统,目前已经有很多版本流行。但尚未得到较广泛的支持。,操作系统:Symbian S40,诺基亚 6600S,诺基亚5230XM,Symbian OS 9.3 版,S60 第三版,诺基亚 6700s,Palm Web OS,palm Pixi Plus,夏新WinCE手机E8,Windows CE操作系统,摩托罗拉 V8,系统:Linux,摩托罗拉 A1600黄金版,软件系统开发概述,嵌入式系统的Bootloader,类似于PC上的 BIOS, 系统上电复位后,首先执行的一段程序,用以完成 整个系统的启动加载任务。,1.Bootloader的基本任务,Bootloader一般是被烧录或者下载到bootrom的0x0地址处,作为上电后执行的第一部分指令,bootloader需要完成两个任务:(1). memory remap, (2). 把kernel装载到SDRAM里合适的位置上去。在完成这两个任务后,bootloader就“功成身退”了。,2 4510B开发板上的存储介质,一块4510B开发板上,一般有三种存储介质: FLASH,SDRAM和4510片内的SRAM。,FLASH一般是只读的(只在运行的时候),而且一般都作为 bootrom使用,因为FLASH 里存储的内容在掉电的时候也不会 丢失,所以flash很适合作为bootrom,用来保存bootloader。,SDRAM,是可读写的存储介质,速度比FLASH快的多,在 系统运行的时候,SDRAM是主要的存储介质。但SDRAM里 的数据在掉电后即消失,无法用来保存数据。所以每次启动 的时候都需要bootloader将内核装重新装载到SDRAM里去。,在4510的片内还集成了8k的SRAM,SRAM也是可读写的, 一般作为系统的cache使用。,3一般程序结构,一般的可执行程序都包括代码段、数据段和BSS段。也可以简单的看作由两部分组成:RO段和RW段。 RO段一般包括代码段和一些常量,在运行的时候是只读的。 RW段包括一些全局变量和静态变量,在运行的时候是可以改变的(读写)。如果有部分全局变量被初始化为零,则RW段里还包括了ZI段。,RO: Read Only RW: Read Write ZI: Zero Init,RO段是只读的,在运行的时候不可以改变,所以,在运行的时候,RO段可以驻留在Flash里(当然也可以在SDRAM或者SRAM里了)。而RW段是可以读写的,所以,在运行的时候必须被装载到SDRAM或者SRAM里。,在ADS里,有一些预先定义了的变量可以用(linker defined symbol)。在下面的实现里,用到了几个预定义的变量: Image$RO$Base 该变量指定了RO段的 BASE Image$RO$Limit 该变量指定了RO段的 Limit Image$RW$Base 该变量指定了RW段的 BASE Image$RW$Limit 该变量指定了RW段的 Limit Image$ZI$Base 该变量指定了ZI段的 BASE Image$ZI$Limit 该变量指定了ZI段的 Limit,Image$RO$Limit 减 Image$RO$Base 等于RO段的大小 Image$RW$Limit 减 Image$RW$Base 等于RW段的大小 Image$ZI$Limit 减 Image$ZI$Base 等于ZI段的大小,4.程序的实现与分析:,(1)进入SVC32工作模式,并且禁止所有的中断,异常向量表,当异常发生时,处理器PC指针会强制性跳转到固定的地址处, 根据异常的类型不同,各地址也各部相同。,CODE32 AREA Init,CODE,READONLY ENTRY B Reset_Handler;启动后跳转到标号 ;Reset_Handler处 NOP ;未定义指令中断 NOP ;软件中断 NOP ;预取指令终止 NOP ;数据终止 NOP ;保留 NOP ;IRQ中断 NOP ;FIQ中断,没有使用中断时,在中断向量表处可存放NOP指令,需要使用 中断向量时,如IRQ中断时,在相应的中断向量地址处存放一 条跳转到中断服务程序的跳转指令即可。,NOP ;未定义指令中断 NOP ;软件中断 NOP ;预取指令终止 NOP ;数据终止 NOP ;保留 B IRQHandler ;IRQ中断 NOP ;FIQ中断,(2)初始化系统配置寄存器,系统配置寄存器SYSCFG决定了编址空间中特殊功能寄存器组 的起始地址,以及片内SRAM的使用方式和起始地址,应首先 对其初始化。(基址为0x3FF 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,【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,DRAM/SDRAM控制寄存器DRAMCONn,试验板在硬件上只连接了一组3位SDRAM存储器,Bootloader 只需要对寄存器DRAMCON0进行初始化,另外3个寄存器的 值设置为0.,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组的结束地址,系统配置寄存器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,数据总线宽度寄存器EXTDBWTH,S3C4510B可以以8,16,32位的数据宽度访问外部ROM,SRAM,Flash存储器,通过设置数据宽度寄存器可以设定与特定外部存储器和外部I/O组相对应的数据宽度。,【1:0】;该设置ROM/SRAM/Flash组0的数据总线宽度 00 不允许 01 字节 (8) 10 半字 (16) 11 字 (32),EXTDBWTH EQU 0x3FF3010 ;数据宽度寄存器地址,rEXTDBWTH EQU 0x00003002 ;数据宽度寄存器的赋值,【13:12】;该设置DRAM组0的数据总线宽度,rEXTDBWTH EQU 0x00003002 ;数据宽度寄存器的赋值,说明: ROM/SRAM/Flash组0中连接了16位的Flash芯片, DRAM组0中连接了32位的SDRAM 其余没有使用的组均设置为00,表示没有连接物理设备。,LDR R1,=EXTDBWTH ;初始化 EXTDBWTH寄存器 LDR R0,=rEXTDBWTH STR R0,R1,EXTDBWTH EQU 0x3FF3010 ;数据宽度寄存器地址,rEXTDBWTH EQU 0x00003002 ;数据宽度寄存器的赋值,DRAM刷新与外部I/O控制寄存器REFEXTCON,REFEXTCON EQU 0x3FF303C,rREFEXTCON EQU 0xCE338360,初始化系统配置寄存器,数据宽度寄存器的程序为:,Reset_Handler LDR R1,=SYSCFG ;初始化syscfg寄存器 LDR R0,=rSYSCFG STR R0,R1 LDR R1,=EXTDBWTH ;初始化EXTDBWTH寄存器 LDR R0,=rEXTDBWTH STR R0,R1,(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,将地址从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 ;把flash映射到0x0-0x20, ; 把sdram映射到0x40-0x140 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 mov sp,#0x7f0000 ;设置FIQ堆栈指针 mov r0,#0x13 MSR cpsr_c, r0 mov sp,#0x800000 ;设置SVC堆栈指针,运行模式为M【4:0】的具体含义,mov r0, #0x12 MSR cpsr_c, r0 mov sp
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 行政管理核心考点试题及答案
- 高考数学考核趋势题目及答案2023
- 敏捷项目管理2025年考试试题及答案
- 科学探索活动实施方案计划
- 课程整合幼儿园班级的有效探索计划
- 法学概论复习季度计划与分配试题及答案
- 2025届吉林省长春市数学七下期末检测模拟试题含解析
- 2025届湖北省十堰市郧西县八年级数学第二学期期末达标检测模拟试题含解析
- 企业战略与政策风险试题及答案
- 城市交通信号控制策略重点基础知识点
- 2023年文印服务实施方案
- 2023年医学高级职称-眼科(医学高级)考试冲刺-历年真题演练带答案
- 财务岗位笔试试题附有答案
- 二次供水水箱清洗合同
- 医务科依法执业自查表
- (完整word版)企业对账函模板
- DB42-T 1107-2023 保温装饰板外墙外保温系统工程技术规程
- 领导干部任前谈话记录表
- 普外科常见问答题
- 医疗卫生事业单位面试题型及答题技巧
- 空间信息技术基础与前沿-河南理工大学中国大学mooc课后章节答案期末考试题库2023年
评论
0/150
提交评论