


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Motorola徹处理器的bootloader分析与应用摘要:以Motorola 32位处理器Coldl;ire5307为例,分析.介绍Motorola公司用于嵌入式系统开发的dBUG通用boot loader 软件的结构.运行原理及应用。关镀词:嵌入式系统ColdFire boot loader dBUG引言 boot loader是用来完成系统启动和系统软件加载工作的程序。它是底层玫件和上层应用软件之问的一个中问件软件, 完成处理器和周边电路正常运行所要的初始化工作;可以屛蔽底层玫件的差异,使上层应用软件的编写和移植更加方便:不仅 具有类似PC机上常用的BIOS(Basic Input O
2、utput System,基本输入.输出系统监控程序)功能,而且还可具有一定的调试功 能。目前,在嵌入式系统开发中有多种bootloader可供选择,其中Motorola公司的名为dBUG的boot loader比较优秀。它可 以移植在Motorola MC68000. ColdFire PowerPC系列所有徵处理器上面,有强大的调试功能.支持单步、下熱 网络更新等: 其良好的软件架构使用户能很方便地修改其代码,扩展新的功能。本文以作者用于网络数据存储的coldfire5307C3#发板为例, 简析其上的dBUG boot loader的结构和运行机制,并给出实际修改X例。1 boot lo
3、ader源码结构(l)boot loader的文件组织dBUG bootloader源代码可以从Motorola公司获得。它是一个X例程序,通过修改相应的巨置文件和处理器相关文件,可以很 方便地移植到不同的处理器系统上。其源码由两个部分组成,一部分是lib项目,另外一部分是毎种Motorola 处理器单独的 处理器项目。比如,ColdFire 5307就使用MCF5307C3项目和lib项目一起来生成最终的dBUG代码。其中lib项目中是与处理 器无关的一些命令或者函数,而每个单独的处理器项目是和每种不同的处理器息息相关的。在编译的时候,首先需要将lib项 目编译生成标准库函数(也就是将一些通
4、用命令和函数先封装起来)。然后,编译MCE5307C3项目,就会将刚才编译的1 ib项目 和MCF5307C3项目结合在一起生成最终代码。整个dBUG boot loader代码的架构比较复杂,其源码按功能可分为3个模块1 : User Interface ponent. CPI-specific ponente Board-specific ponento用户进入dBUG的目录以后,会看到三个子目录,如图1新示1, 2。02 bootloader启动就揑 第一个目录是bin目录,在该目录下面主要是一个简单的THTP Server软件。TFTP是简单的FTP(文件传输协议)。它是基于 UDP协
5、议的,主要用来下載程序目标代码。 第二个目录是prog目录,下面主要是lib项目和MCF-5307C3项目的项目组织文件和一部分源代码。在prog目录下面的1 ibdbug 目录下,有1 ib项目的项目管理文件1 ibdbug. mep,使用CodeWarrior可以打开该项目文件和编译等。prog目录下面的M5307C3 目录下是ColdFire 5307系统的项目文件,而该目录下的obj目录下是生成的dBUG目标代码。sre目录下是5307项目的项目 管理文件。用户可以使用CodeWarrior,打开M5307C3目录下的/src/dbug/mwerks/m5307c3. mep项目管浬文
6、件来编译代码。 第三个目录是SM目录,是dBCG的主要源代码。综上所述,用户只要打开m5307c3. mcp和libdbug. mcp两个项目文件,即可以看到dBUG所有的源代码。(2) 与处理器和外国硬件配置相关的文件 入口文件:vector. So存有处理器复位初始入口地址、跳转指令及中断矢量表。初始化汇编语言文件:mcfxxxxjo.so 功能为预初始化处理器、调用初始化函数及跳转到main主函数。其中xxxk表示某特定的处理器型号,如5307。初始化C语言文件:Sysinit.Co内含多个初始化函数,功能为初始化处理器及各底层哽件。系统配置文件:Config, h和Bo吐d.h oCo
7、nfig. h设定板上处理器类型和其它模块功能。Board, h设定板上各参数信息,如片外Flash和SDRAM大小、类型.数据宽度和地址X围、划分板上内存空问X国、系统时钟大小、系 统总线速率以及一些其它要用到的系统常量。连接配置文件:Flash, lcfo设定连接时各函数空问地址及内存分配。预包含头文件:mxxxx_mwcrks. h mwerks. h0 两函数被所有的C语言和汇编语言函数包含,它们设定CodeWarrior预处理器所用到的席量和編译器编译选项。2 boot loader运行流程简介boot loader启动流程如图2所示。系统上电复位后,跳到Boot ROM的最低地址处
8、。Boot ROM的开始空问FFE00()00"FFE00400vector, s中的中断矢量表。将表中第一个32位字传给5307的SP,将第二个32位字传给PC,即完成复位中断跳裝。该复位中断跳转到vector, s中的start处。此处仅初始化s然后跳转到mcf5307_lo. s中的asm_startmeup<>该段代码 首先进行部分初始化利真正初始化前的准备工作:禁止Cache.禁止中断和地址蚌换、初始化用户指定的内部模块(MBAR)和内 部SRAM(RAMBAR)起始地址。然后,将SP指向内部SRAM空问,即当调用真正的初始化程序时用内部SRAM的一段地址空问作
9、为 临时堆栈。接下来,调用sysinit.c文件中的外围电路和系统配置的初始化程序mcf5307Jnit()omcf5307_init ()函数顺序调用各个功能的初始化子函数,初始化系统集成模块、并行通用输出输入口.串口 . I2C控制器、DMA 控制器.片选寄存器.SDRAM控制器。当运行完mcf5307_init()后,流程回到asm_startmeup中。此时,外国电路和内部模块 巳按用户要求进行了正确的配置,系统的初始化巳基本完成。于是.将堆栈指针SP指向用户要求的堆栈空问,该堆栈为该板上 的外部SDRAM空问。最后,跳转至main函数。在main中,首先将系统的矢量表从Flash空问
10、拷贝到用户指定的外部SDRAM中。然后,Elash中的data段初值拷贝到 外部SDRAM指定的data空问中,根据配置将外部SDRAM中的bss段清0,之后进行一些系统全局数据结构.参数表等的初始化。 最后,调用mainloop#始人机交互循环:不断接收用户的命令.根据命令查表调用相应的任务函数、在界面上打印出相应的执 行信息。3 boot loader用户应用(1)boot loader的系统移植由于Motorola的dBUG boot loads为一标准的X例程序,要将其移植到具体的嵌入式系统中,还需要根据系统的硬件配置, 修改其部分配置文件和底层接口文件。本文以用于网络数据存借的Col
11、dFire5307C3开发板为例,介绍在其上的dBUG移植过程。 ColdFire5307C3开发板硬件情况:ColdFire5307 32 位处理器.16MB (32 位数据总线)SDRAM, 2MB (16 位数据总线)Flash ROM, 2 CART, 10Mbps (16 位数据总线) 以太网接口。 修改boot loader的处理器和配置相关文件:a. 根据5307处理器手卅及用户需要,修改vector, s中的中断矢量表。b. 根据5307处理器手卅编写mcf5307_lo.s文件。c. 根据板上的硬件配置修改sysinit.c文件,编写相应的硬件初始化函数。d. 根据系统配置修
12、改config, h和board, h文件。e. 报据需要修改mxxxx_nnvciksh和mwerks. h,设定某些编译选项。f. 根据需要修改连接配置文件Flash, lcf.设定连接时目标代码的地址分配。g. 编写相应的硬件驱动,如该板上用到的MBM29LV 160BE70 Flash芯片的驱动程序文件am29xxxx.c和am29 xxxx.h,该板上 用到的网卡芯片的驱动程序文件Ns8390. c以及5307的串口驱动函数等。(2)boot 1 oader 命令简介2dBUG提供了丰富的调试命令: 程序流程控制命令reset(系统重启).go. exe(用户程序执行)、b】(断点设
13、置)、step(单步)、trace(单步跟入)、gt(运行到); 内存和寄存器操作命令md.mni(内存查看和修改)、rd、寄存器查看和修改)、bm(内处块移动).bf (内存块数据填充)、be (内 存块比较)、bs(内存块查找” 指令和数据操作命令de(数据转换).dis(反汇编)、asm (汇編指令插入)、sym(符号表管理): 程序下栽命令dl(通过串口下载)、dn(通过网络下載几(3)boot loader用户功能扩展除了 dBUG boot loader本身提供给用户的命令外,用户还希望根据不同的惜况定制自己的命令。如Linux加栽、uC/OS加 载、kermit下载等。一般自己添
14、加的命令都会放在一个单独的C文件里面。为了方便,用户也将自己添加的伶今都放在board, c 文件的最后。例如,用户想要给dBUG添加PC/0S操作系统加裁的功能,除了在dBUG中加上自己的程序加載代码外,还应给dBUG添加 一个名为ucosii的用户命令。这样可以通过在界面上输入命令的形式实现相应的加栽功能。首先应该在board, c里面实现这个 函数:ucos_boot (int argct char argv)而后,应在emds. c文件里面声明这个函数,并在紧接着的UIF_CMD UIF_CMDTAB数组里面声明这个命令的特性和参数。."ucosii" 4.0,0.0,ucos_boot. “Boot uCOS-II from RAMM其中,第一个test字符串是伶令的名称,第二个4表明命令识别的时候要匹史4个字符才行,最后的字符串是help命令 时对test命令的解释。在描述中问的test表明指向的函数名称。这样就很方便地添加了这个用户命令。1结论 综上所述,Motorola公司的dBUG软件由
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 助理广告师考试内容剖析与讨论试题及答案
- 回顾2024年设计师证书考试试题及答案
- 河北机电二建试题及答案
- 各类面料检验方法试题及答案
- 准备2024纺织工程师考试的试题及答案
- 纺织品检验员证书考试概述试题及答案
- 扫雷专项测试题及答案
- 广告设计师核心技能测试试题及答案
- 护理导论试题及答案真题
- 广告设计中品牌识别的重要性试题及答案
- 内蒙古普通高等学校毕业生登记表
- 制图与CAD实训智慧树知到答案2024年宜宾学院
- 中国近代史纲要第七章
- 实训1:组建小型局域网
- 第15课 十月革命与苏联社会主义建设【课件】-中职高一下学期高教版(2023)世界历史全一册
- 2024年大学毕业生三方协议范本(二篇)
- HJ 733-2014 泄漏和敞开液面排放的挥发性有机物检测技术导则
- 2024精神分裂症维持治疗中国专家共识(全文)
- 健康养老产业行业营销策略方案
- 高中生物新人教版选择性必修1第2章第5节人脑的高级功能课件(20张)
- 医疗服务售后服务保证协议书
评论
0/150
提交评论