实时操作系统的基本概念_第1页
实时操作系统的基本概念_第2页
实时操作系统的基本概念_第3页
实时操作系统的基本概念_第4页
实时操作系统的基本概念_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课前回顾

实时操作系统的基本概念学习目标

创建自己的RedBoot了解RedBoot的功能和结构分析一种目标板的RedBoot程序学习指南作业二的要求参照书上先完成交叉编译环境的安装最起码要二种:arm-elf-gcc和i386-elf-gcc到网上参考基本的编译参数,或去学院课程FTP上下载相关文档,学会进行交叉编译编译自己的RedBoot,并在目标机上跑起来可用虚拟机难重点

编译生成自己的程序RedBoot并调试BootROMBank的划分面对不同速度、总线宽度的外设,通常,嵌入式处理器都把外部总线分成不同的Bank空间,对应不同的地址。不同的Bank可以有不同的配置,或者对应的功能也不一样,支持的外设也不同。S3C44B0的Bank0-5支持,ROM、SRAM等那些线性寻址的存储器或者外设;Bank6-7,还可以支持SDRAM、DRAM等。而且,每一个Bank都可以配置成8-32bit的总线,大端(bigendian)或者小端(littleendian)等嵌入式处理器的启动过程(1)通常系统上电(或者复位)以后,程序从地址空间的0x0开始即PC(程序计数器)指针,指向0x0。从这个地址开始读取指令并运行。通常这个地址对应的是Bank0嵌入式处理器的启动过程(2)因为系统是从bank0上引导的,所以,在Bank0上连接保存有启动代码的FlashROM,这就是我们常说的BootROMBootROM要实现的主要工作1硬件系统自检配置其他Bank或者端口、外设等工作模式处理中系统的中断在不支持remap的处理器中,中断必然要经过BootROM的空间,这时,BootROM需要处理的任务就是把固定的中断向量映射到一个可编程的中断处理子程序的地址BootROM要实现的主要工作2引导操作系统系统配置完成以后,BootROM需要把操作系统(或者其他程序)装载到SDRAM(就是系统的RAM区),然后,把PC指针指向程序的RAM空间,使操作系统启动,这就是引导。因此,BootROM中的代码有常称之为BootloaderBootROM要实现的主要工作3Flash(BootROM)编程对引导Flash(或者其他的非易失性存储器)编程,通过串口或者以太网口下载编译成功的操作系统或者应用程序,甚至BootROM本身。要想实现BootROM的自编程,必须让Boot程序是在RAM中运行BootROM的制作BootROM使用来配置系统启动的。没有BootROM,系统就不能配置,更不能启动。BootROM可以自编程,但是,第一次系统启动用的BootROM是如何烧录的呢?使用插座连接Flash配合编程器通过ARM的JTAG接口BootloaderBootloader的概念BootLoader就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。通常,BootLoader是严重地依赖于硬件而实现的,特别是在嵌入式世界。因此,在嵌入式世界里建立一个通用的BootLoader几乎是不可能的。尽管如此,我们仍然可以对BootLoader归纳出一些通用的概念来,以指导用户特定的BootLoader设计与实现。嵌入式系统离不开Bootloader每种CPU体系结构都有不同的BootLoader。有些BootLoader也支持多种体系结构的CPU,比如U-Boot就同时支持ARM体系结构和MIPS体系结构。除了依赖于CPU的体系结构外,BootLoader实际上也依赖于具体的嵌入式板级设备的配置。这也就是说,对于两块不同的嵌入式板而言,即使它们是基于同一种CPU而构建的,要想让运行在一块板子上的BootLoader程序也能运行在另一块板子上,通常也都需要修改BootLoader的源程序。BootLoader的安装媒介系统加电或复位后,所有的CPU通常都从某个由CPU制造商预先安排的地址上取指令。比如,基于ARM7TDMIcore的CPU在复位时通常都从地址0x00000000取它的第一条指令。基于CPU构建的嵌入式系统通常都有某种类型的固态存储设备(比如:ROM、EEPROM或FLASH等)被映射到这个预先安排的地址上。因此在系统加电后,CPU将首先执行BootLoader程序。典型存储空间分配结构bootloader启动参数内核根文件系统Bootloader空间结构划分控制BootLoader的设备或机制主机和目标机之间一般通过串口建立连接,BootLoader软件在执行时通常会通过串口来进行I/O,比如:输出打印信息到串口,从串口读取用户控制字符等BootLoader的操作模式大多数BootLoader都包含两种不同的操作模式:“启动加载”模式和“下载”模式,这种区别仅对于开发人员才有意义。最终用户的角度看,BootLoader的作用就是用来加载操作系统,而并不存在所谓的启动加载模式与下载工作模式的区别。启动加载模式也称为“自主”(Autonomous)模式。也即BootLoader从目标机上的某个固态存储设备上将操作系统加载到RAM中运行,整个过程并没有用户的介入。这种模式是BootLoader的正常工作模式,因此在嵌入式产品发布的时侯,BootLoader显然必须工作在这种模式下。下载模式在这种模式下,目标机上的BootLoader将通过串口连接或网络连接等通信手段从主机下载文件,比如:下载内核映像和根文件系统映像等。从主机下载的文件通常首先被BootLoader保存到目标机的RAM中,然后再被BootLoader写到目标机上的FLASH类固态存储设备中。BootLoader的这种模式通常在第一次安装内核与根文件系统时被使用;此外,以后的系统更新也会使用BootLoader的这种工作模式。工作于这种模式下的BootLoader通常都会向它的终端用户提供一个简单的命令行接口。BootLoader与主机如何通信?最常见的情况就是,目标机上的BootLoader通过串口与主机之间进行文件传输,传输协议通常是xmodem/ymodem/zmodem协议中的一种。但是,串口传输的速度比较慢,因此通过以太网连接并借助TFTP协议来下载文件是个更好的选择。BootLoader划分大多数BootLoader都分为stage1和stage2两大部分。依赖于CPU体系结构的代码,比如设备初始化代码等,通常都放在stage1中,而且通常都用汇编语言来实现,以达到短小精悍的目的。而stage2则通常用C语言来实现,这样可以实现给复杂的功能,而且代码会具有更好的可读性和可移植性。Stage1通常包括以下步骤(以执行的先后顺序):硬件设备初始化。为加载BootLoader的stage2准备RAM空间。拷贝BootLoader的stage2到RAM空间中。设置好堆栈。跳转到stage2的C入口点。Stage2通常包括以下步骤(以执行的先后顺序):初始化本阶段要使用到的硬件设备。检测系统内存映射(memorymap)。将kernel映像和根文件系统映像从flash上读到RAM空间中。为内核设置启动参数。调用内核。Blob的存储器区域分配FLASHSDRAM大小Blob0-60KB0x0c10000060KB参数60-64KB0x0c1100004KB内核64-768KB0x0c300000704KB根文件系统768-2048KB0x0c4000001280KB其他硬件RAM:随机访问内存非易失性存储器可以随时读写嵌入式系统中最为常用存储器RAM静态(SRAM)断电仍然保留数据速度很快¥¥动态(DRAM)断电数据丢失Holdsdataforlessthanasecond比SRAM慢¥需要DRAM控制器进行数据读写ROM:只读存储器非易失存储器只读,不能写入用途存储程序代码存储固定数据ROMMaskedROM可以长久保留数据,除非损坏数据内容在生产时就已经确定下来价格低廉OTPPROM可以被编程,仅此一次需要特殊编程设备(ROM编程器)价格昂贵用于终端设备ROMEPROM可编程,可被擦写几千次寿命约10年,但对光线和电磁波敏感可以使用紫外线擦除数据非常昂贵用于设计开发环境EEPROM可编程,可部分被擦写,可擦写上万次寿命约10年可以使用高过正常电压的方式擦除数据读速度快,写速度慢非常昂贵用于设计开发环境FlashEEPROM快速擦除可以一次擦除多个Flash块,而不是一次擦除一个字节一个Flash块的大小一般为几千字节如果一次写入单个字节,则速度会下降很多的可以一次读出整个Flash块,修改需要修改的内容,然后整块回写,这样可以提高效率用于嵌入式系统中存放大量数据的非易失性存储器AFSFlash功能Libraryfunctions:支持应用程序访问ARMFlashUtility(AFU):将应用加载到flash或RAM中ARMBootFlashUtility(BootFU):支持对flash启动区和FPGA区域的编程Bootswitcher:选择并运行一个程序镜像(image).Flash里可以存放多个程序镜像,可以通过本功能选择启动某个程序镜像。Bootmonitor:从串口加载一个镜像,并在开发版上运行。本功能提供一个命令行接口,用来提供系统调试和自检

。Flash存储Flash内存是嵌入式系统中的一种非常重要的非易失性存储媒介

。分为两种:NORflash–

传统

flash,可以直接访问NANDflash–

便宜,地址总线和数据总线共用一个8位总线。没用用过的flash中,仅仅包括一个逻辑“1”位Flash存储对某个Bit的修改,从1到0或从0到1,不能单独修改某个Bit,只能修改一个flash块每一个flash块都可以支持100,000次擦写Flash设备上拥有一个buffer,用来提高写效率以及减少擦写的损耗Flash文件系统Flash设备可以模拟支持512字节扇区的块设备,例如一个硬盘。Flash设备和文件系统上的逻辑位并不能直接一一对应。效率低下,可靠性差由于擦写可能带来损耗,Flash文件系统必须保证擦写机会均匀分布为了提供平均损耗以及高可靠性操作,模拟块设备的扇区将数据存放在变化的物理位置上,因此需要flash文件系统来实现逻辑位置和物理位置的转换。FlashImages开发版上的flash内存逻辑上分为两个部分:ApplicationFlash:存放用户的应用程序和数据。BootFlash:存放bootmonitor和

bootswitcher功能,用来加载和调试应用程序FlashImage结构Flash里存放的

image被分为三个到五个部分:Codeanddata:theactualcodeanddatafortheimageHeader:notallimageshaveaheader.Imageinformationblock:holdsadditionalinformationabouttheimagesuchasimagenameandstartaddressEmpty:iftheimagedoesnotcompletel

温馨提示

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

评论

0/150

提交评论