欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    ARM汇编语言程序设计基础第10章Bootloader设计基础.ppt

    • 资源ID:80465276       资源大小:210.49KB        全文页数:33页
    • 资源格式: PPT        下载积分:11.9金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要11.9金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    ARM汇编语言程序设计基础第10章Bootloader设计基础.ppt

    第第10章章 Bootloader 设计基础设计基础10.1 Bootloader 概述 nBootloader,启动引导程序,又叫引导加载程序,功能强大的Bootloader也就直接叫做板级支持包(BSP,Board Support Packet)或者固件(Firmware)。近年来,为了方便嵌入式产品的推广,也有些直接将Bootloader叫做BIOS。BIOS是PC机的“基本输入输出系统”,烧录在电脑主板上一块专门的芯片中。一般BIOS由主板厂商或者专门的BIOS生产商提供,不是开源的,用户不能修改其中的代码进行定制。而嵌入式系统的开发则离不开Bootloader的开发,它也是整个系统开发中的难点之一。10.1.1 Bootloader 的作用 nBootloader是在嵌入式操作系统内核运行之前运行的一段小程序,也是系统开机后执行的第一段程序。通过这段小程序,可以初始化硬件设备、建立内存空间,从而将系统的软硬件环境设置成一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。Bootloader是依赖于底层硬件而实现的,因此建立一个通用的嵌入式系统Bootloader几乎是不可能的。n在PC机中,主板的BIOS和位于硬盘0磁道上的主引导记录(Master Boot Record,MBR)中的引导程序(如LILO或GRUB等),两者一起的作用就相当于Bootloader在嵌入式系统中的作用,即实现整个系统的启动引导,并最终能引导操作系统的运行。10.1.1 Bootloader 的作用n在嵌入式系统中,Bootloader对嵌入式设备中的主要部件如CPU、SDRAM、FLASH、串口等进行了初始化,这样可以使用Bootloader通过串口下载各种文件到设备的SDRAM中或者烧录Flash,然后将操作系统内核读入到内存中来或者直接跳转到内核的入口点,从而实现操作系统的引导。现在有些Bootloader也把对以太网的支持等功能也加进去了,这样一个功能比较强大的Bootloader实际上就已经相当于一个微型的操作系统了。10.1.1 Bootloader 的作用nBootloader从第一条指令跳转后,就开始初始化各种最重要的硬件,比如CPU的工作频率、定时器、中断、看门狗、检测RAM大小和Flash等。一般,硬件初始化的这段程序是用汇编语言编写的,其后就用C语言编写。总体上Bootloader主要完成以下工作:10.1.1 Bootloader 的作用n初始化CPU速度;n初始化内存,包括启用内存库,初始化内存配置寄存器等;n初始化中断控制器,在系统启动时,关闭中断,关闭看门狗;n初始化串行端口(如果在目标上有的话);n启用指令/数据高速缓存;n设置堆栈指针;n设置参数区域并构造参数结构和标记,即引导参数;n执行POST(上电自检)来标识存在的设备并报告有何问题;n为电源管理提供挂起/恢复支持;n传输操作系统内核镜像文件到目标机。也可以将操作系统内核镜像文件事先存放在Flash中,这样就不需要Bootloader和主机传输操作系统内核镜像文件,这通常是在做成产品的情况下使用。而一般在开发过程中,为了调试内核的方便,不将操作系统内核镜像文件固化在Flash中,这就需要主机和目标机进行文件传输;n跳转到内核的开始,在此又分为ROM启动和RAM启动。所谓ROM启动就是用XIP技术直接在Flash中执行操作系统镜像文件;所谓RAM启动就是指把内核镜像从Flash复制到RAM中,然后再将PC指针跳转到RAM中的操作系统启动地址。10.1.1 Bootloader 的作用n在嵌入式Linux软件系统的开发中,一般将软件分为启动引导程序(Bootloader)、操作系统内核(OS Kernel)、根文件系统(File System)、图形窗口系统(GUI)和应用程序(AP)等几个部分,其中前三部分是一个可运行的嵌入式系统必不可少的,它们在开发的过程中,被分别独立地编译链接或打包为一个二进制目标文件,然后下载(烧录)到嵌入式系统的ROM(一般是Flash)中。后两部分如果有的话,n通常也是和根文件系统一n起打包后烧录到Flash中。n因此,在Bootloader阶段,n也提供了对Flash设备的分n区格式化的支持,其空间n分配通常如图所示。10.1.2 Bootloader 的工作模式的工作模式n对于嵌入式系统的开发人员而言,Bootloader通常包含“启动加载”和“下载”这两种不同的工作模式。当然,这两种工作模式的区别一般仅仅对于开发人员才有意义,而对最终用户来说,Bootloader 的作用就是用来加载操作系统,从而启动整个嵌入式系统。10.1.2 Bootloader 的工作模式的工作模式n启动加载(Boot loading)模式 正常启动模式 n下载(Downloading)模式提供给开发人员或者技术支持人员使用 10.1.3 Bootloader 的启动流程的启动流程 n分为stage1和stage2两个阶段 一般依赖于 CPU 体系结构的代码,比如设备初始化代码等,都放在stage1中,而且通常都用汇编语言来实现,以达到短小精悍且启动快的目的;而 stage2 则通常用C语言来实现,这样可以实现各种复杂的功能(比如串口、以太网接口的支持等)Bootloader的第一阶段 1.硬件设备初始化2.为加载 Bootloader 的 stage2 准备 RAM 空间 3.拷贝 Bootloader的 stage2 到 RAM 空间中4.设置好堆栈 5.跳转到 stage2 的 C 入口点main()函数处Bootloader的第二阶段 1.初始化本阶段要使用到的硬件设备2.检测系统内存映射(memory map)3.将 kernel 映像和根文件系统映像从 flash 上读到 RAM 空间中4.为内核设置启动参数5.调用内核10.2 S3C2410 平台下平台下Linux的的BootloadernVivinU-BOOT10.2 S3C2410 平台下平台下Linux的的Bootloadern1.vivi简介简介nvivi是由韩国mizi公司为ARM处理器系列设计的一个bootloader。它同样支持启动加载模式和下载工作模式。n在下载模式下,vivi为用户提供一个命令行人机接口,通过这个人机接口可以使用vivi提供的一些命令。如果嵌入式系统没有键盘和显示,那么可以利用vivi中的串口,将其和宿主机连接起来,利用宿主机中的串口软件(如windows中的超级终端或者Linux中的minicom)来控制。10.2.1 vivinvivi常用的命令 Load,Part,bon,Param,Boot,Flashnvivi文件结构文件结构代码包括代码包括arch,init,lib,drivers和和include等等几个目录,共几个目录,共200多条文件多条文件nvivi的配置和编译的配置和编译#make distclean。清除一些早先生成的无用。清除一些早先生成的无用的目标文件。的目标文件。#make menuconfig。然后可以根据菜单中的。然后可以根据菜单中的信息进行配置。信息进行配置。make”命令开始编译命令开始编译 10.2.1 vivi10.2.1 vivin3.vivi的配置和编译的配置和编译nvivi的配置和嵌入式Linux内核一样,可以采用菜单化的形式进行。其步骤主要如下:n#make distclean。清除一些早先生成的无用的目标文件。n#make menuconfig。然后可以根据菜单中的信息进行配置。n编译。菜单配置完毕后,保存退出。然后执行“make”命令开始编译。10.2.1 vivinvivi的第一阶段主要完成了依赖于CPU的体系结构硬件初始化,包括禁止中断、初始化串口、复制第二阶段到RAM中等。由于这些代码是和硬件紧密相关的,因此要求读者在阅读时对照S3C2410处理器的数据手册,查阅相关的寄存器的描述,以便更好地理解。这些汇编代码全部就集中在viviarchs3c2410目录下的head.S这一个汇编文件中,当然还有相关的头文件。10.2.1 vivinvivi第二阶段的分析第二阶段的分析nvivi的第二阶段的入口就是init/main.c,按照源代码的组织流程,根据模块化划分的原则,共分为8个功能模块即八个步骤,在源代码的注释中以step非常清晰的给出了区分。10.2.1 vivin第一步:vivi从main()函数开始执行,函数开始通过 putstr(vivi_bannner)打印出vivi的版本。n第二步:主要是初始化GPIO,本的思路和方法就是在把握好整个系统硬件资源的前提下,根据芯片的数据手册把所有的初始值设定,在这里利用set_gpios这个函数就可以完成初始化了。10.2.1 vivin第三步:进行内存映射初始化和内存管理单元(MMU)的初始化工作 n第四步:初始化堆,然后内存会发生变化。在这里,实际上就是实现动态内存分配策略。10.2.1 vivin第五步:初始化mtd设备 n第六步:配置参数,主要是init_priv_data函数。n第七步:提供vivi人机接口的各种命令。n第八步:进入Bootloader的两种模式之一.10.2.2 U-bootnU-Boot,全称Universal Bootloader,是遵循GPL条款的开放源码项目 n它还支持NetBSD,VxWorks,QNX,RTEMS,ARTOS,LynxOS等嵌入式操作系统。其目前主要支持的目标操作系统有OpenBSD,NetBSD,FreeBSD,4.4BSD,Linux,SVR4,Esix,Solaris,Irix,SCO,Dell,NCR,VxWorks,LynxOS,pSOS,QNX,RTEMS,ARTOS等,因此功能比较强大,这也是U-Boot中Universal的一层含义。10.2.2 U-bootnU-Boot的主要特点有:n 开放源码;支持多种嵌入式操作系统内核,如Linux、NetBSD,VxWorks,QNX,RTEMS,ARTOS,n LynxOS;支持多个处理器系列,如PowerPC、ARM、x86、MIPS、XScale;较高的可靠性和稳定性;较高的可靠性和稳定性;高度灵活的功能设置,适合U-Boot调试、操作系统不同引导要求、产品发布等;丰富的设备驱动源码,如串口、以太网、SDRAM、FLASH、LCD、NVRAM、EEPROM、RTC、键盘等;较为丰富的开发调试文档与强大的网络技术支持;10.2.2 U-bootn常用命令:Help/?Bdinfo setenv printenv saveenv mw md mm flin foerase起始地址 结束地址.cp源地址 目标地址大小 imi起始地址 bootm起始地址 tftboot起始地址 镜像名 reset10.2.2 U-bootnU-boot文件结构文件结构nU-boot代码采用了一种高度模块化的编程方式,与移植树有关的有以下几个目录.nboard:这个目录存放了所有U-boot支持的目标板的子目录,如board/smdk2410/*就是我们说关心的.要将U-boot移植到自己的s3c2410 x目标板上,必须参考这个目录下的内容,比如对比Flash以及Flash宽度和大小的定制邓就要修改其中的flash.c。ncommon:独立于处理器体系结构的通用代码,如内存大小探测与故障检测;cpu:与处理器相关的文件。如mpc8xx子 目录下含串口、网口、LCD驱动及中断初始化等文件;10.2.2 U-bootndriver:通用设备驱动,如CFI FLASH 驱动(目前对INTEL FLASH支持较好)nfs:这个目录中存放了U-boot支持的文件系统.examples:可在U-Boot下运行的示例程序;如hello_world.c,timer.c;nInclude:U-Boot头文件;这个目录存放头文件的公共目录,其中include/configs/smdk2410.h定义了所有和 S3C2410X相关的资源的配置参数,我们往往只需修改这个文件就可以配置目标板的参数,如波特率、引导参数、物理内存映射等。10.2.2 U-bootn lib_xxx:处理器体系相关的文件,如lib_ppc,nlib_arm:目录分别包含与PowerPC、ARM体系结构相关的文件;nnet:与网络功能相关的文件目录,如bootp,nfs,tftp;npost:上电自检文件目录。尚有待于进一步完善;nrtc rtc:驱动程序;ntools:用于创建U-Boot S-RECORD和BIN镜像文件的工具;10.3 其他常见的Bootloader n 1.WinCE的Bootloader Nboot和Eboot是WinCE的Bootloader。Nboot是nand flash bootloader的简写,CPU可以直接从nand flash 启动,但是其代码大小不能超过4k,功能有限;Eboot则支持ethernet network(以太网),功能强大,用于 Ehternet在线调试和下载。Eboot提供的命令命令说明Help列出所有支持的命令并加以说明Eboot从宿主机上通过网线下载CE映像并加载Write向某一内存地址写入数据Read显示某一内存地址的数据Jump跳转到某一地址执行程序Xmodem从计算机的超级终端接收以Xmodem协议传送的文件Toy测试平台CPU的计数器是否运转Flash擦除或者更新Flash中的数据Tlbread显示CPU的所有TLB表Tlbwrit设置CPU的TLBMacaddr设置CPU的MAC地址Seti设置平台的IP地址n2.BlobBlob是Bootloader Object的缩写,是一款功能强大的Bootloader,目前常用于Intel推出的Xscale架构的CPU的引导,譬如SA1110、PXA255/270等。nBlob的代码也可以分为两个阶段。第一阶段从start.s文件开始,这也是开机执行的第段代码,这部分代码是在Flash中运行,主要功能包括对S3C2410的一些寄存器的初始化和将Blob第二阶段代码从Flash拷贝到SDRAM中。这一阶段的代码被编译后最大不能超过1kB。第二阶段的起始文件为trampoline.s,被复制到SDRAM后,就从第一阶段跳到这个文件开始执行,先进行一些变量设置、堆栈的初始化等工作后,跳转到main.c进入C函数。第二阶段最大为63KB

    注意事项

    本文(ARM汇编语言程序设计基础第10章Bootloader设计基础.ppt)为本站会员(wuy****n92)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开