下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.:.;Motorola微处置器的bootloader分析与运用摘要:以Motorola 32位处置器ColdFire5307为例,分析、引见Motorola公司用于嵌入式系统开发的dBUG通用bootloader软件的构造、运转原理及运用。关键词:嵌入式系统 ColdFire bootloader dBUG引 言bootloader是用来完成系统启动和系统软件加载任务的程序。它是底层硬件和上层运用软件之间的一个中间件软件,完成处置器和周边电路正常运转所要的初始化任务;可以屏蔽底层硬件的差别,使上层运用软件的编写和移植更加方便;不仅具有类似PC机上常用的BIOS(Basic Input Out
2、put System,根本输入、输出系统监控程序)功能,而且还可具有一定的调试功能。目前,在嵌入式系统开发中有多种bootloader可供选择,其中Motorola公司的名为dBUG的bootloader比较优秀。它可以移植在Motorola MC68000、ColdFire和PowerPC系列一切微处置器上面,有强大的调试功能,支持单步、下载、网络更新等;其良好的软件架构运用户能很方便地修正其代码,扩展新的功能。本文以作者用于网络数据存储的coldfire5307C3开发板为例,简析其上的dBUG bootloader的构造和运转机制,并给出实践修正范例。1 bootloader源码构造(1
3、)bootloader的文件组织dBUG bootloader源代码可以从Motorola公司网站获得。它是一个范例程序,经过修正相应的配置文件和处置器相关文件,可以很方便地移植到不同的处置器系统上。其源码由两个部分组成,一部分是lib工程,另外一部分是每种Motorola微处置器单独的处置器工程。比如,ColdFire 5307就运用MCF5307C3工程和lib工程一同来生成最终的dBUG代码。其中lib工程中是与处置器无关的一些命令或者函数,而每个单独的处置器工程是和每种不同的处置器息息相关的。在编译的时候,首先需求将lib工程编译生成规范库函数(也就是将一些通用命令和函数先封装起来)。
4、然后,编译MCF5307C3工程,就会将刚刚编译的lib工程和MCF5307C3工程结合在一同生成最终代码。整个dBUG bootloader代码的架构比较复杂,其源码按功能可分为3个模块1:User Interface Component、CPU-specific Component、Board-specific Component。用户进入dBUG的目录以后,会看到三个子目录,如图1所示1,2。 第一个目录是bin目录,在该目录下面主要是一个简单的TFTP Server软件。TFTP是简单的FTP(文件传输协议)。它是基于UDP协议的,主要用来下载程序目的代码。 第二个目录是prog目录,
5、下面主要是lib工程和MCF5307C3工程的工程组织文件和一部分源代码。在prog目录下面的libdbug目录下,有lib工程的工程管理文件libdbug.mcp,运用CodeWarrior可以翻开该工程文件和编译等。prog目录下面的M5307C3目录下是ColdFire 5307系统的工程文件,而该目录下的obj目录下是生成的dBUG目的代码。src目录下是5307工程的工程管理文件。用户可以运用CodeWarrior,翻开M5307C3目录下的/src/dbug/mwerks/m5307c3.mcp工程管理文件来编译代码。 第三个目录是src目录,是dBUG的主要源代码。综上所述,用户
6、只需翻开m5307c3.mcp和libdbug.mcp两个工程文件,即可以看到dBUG一切的源代码。(2)与处置器和外围硬件配置相关的文件 入口文件:vector.s。 存有处置器复位初始入口地址、跳转指令及中断矢量表。 初始化汇编言语文件:mcfxxxx_lo.s。功能为预初始化处置器、调用初始化函数及跳转到main主函数。其中xxxx表示某特定的处置器型号,如5307。 初始化C言语文件:Sysinit.c。内含多个初始化函数,功能为初始化处置器及各底层硬件。 系统配置文件:Config.h和Board.h 。Config.h 设定板上处置器类型和其它模块功能。Board.h 设定板上各参
7、数信息,如片外Flash和SDRAM大小、类型、数据宽度和地址范围、划分板上内存空间范围、系统时钟大小、系统总线速率以及一些其它要用到的系统常量。 衔接配置文件:Flash.lcf。设定衔接时各函数空间地址及内存分配。 预包含头文件:mxxxx_mwerks.h和mwerks.h。两函数被一切的C言语和汇编言语函数包含,它们设定CodeWarrior 预处置器所用到的常量和编译器编译选项。2 bootloader运转流程简介bootloader启动流程如图2所示。系统上电复位后,跳到Boot ROM的最低地址处。Boot ROM的开场空间FFE00000FFE00400为vector.s中的中
8、断矢量表。将表中第一个32位字传给5307的SP,将第二个32位字传给PC,即完成复位中断跳转。该复位中断跳转到vector.s中的start处。此处仅初始化sr,然后跳转到mcf5307_lo.s中的asm_startmeup。该段代码首先进展部分初始化和真正初始化前的预备任务:制止Cache、制止中断和地址转换、初始化用户指定的内部模块(MBAR)和内部SRAM(RAMBAR)起始地址。然后,将SP指向内部SRAM空间,即当调用真正的初始化程序时用内部SRAM的一段地址空间作为暂时堆栈。接下来,调用sysinit.c文件中的外围电路和系统配置的初始化程序mcf5307_init()。mcf
9、5307_init()函数顺序调用各个功能的初始化子函数,初始化系统集成模块、并行通用输出输入口、串口、I2C控制器、DMA控制器、片选存放器、SDRAM控制器。当运转完mcf5307_init()后,流程回到asm_startmeup中。此时,外围电路和内部模块已按用户要求进展了正确的配置,系统的初始化已根本完成。于是,将堆栈指针SP指向用户要求的堆栈空间,该堆栈为该板上的外部SDRAM空间。最后,跳转至main函数。在main中,首先将系统的矢量表从Flash空间拷贝到用户指定的外部SDRAM中。然后,将Flash中的data段初值拷贝到外部SDRAM指定的data空间中,根据配置将外部S
10、DRAM中的bss段清0,之后进展一些系统全局数据构造、参数表等的初始化。最后,调用mainloop开场人机交互循环:不断接纳用户的命令、根据命令查表调用相应的义务函数、在界面上打印出相应的执行信息。3 bootloader用户运用 (1)bootloader的系统移植由于Motorola的dBUG bootloader为一规范的范例程序,要将其移植到详细的嵌入式系统中,还需求根据系统的硬件配置,修正其部分配置文件和底层接口文件。本文以用于网络数据存储的ColdFire5307C3开发板为例,引见在其上的dBUG移植过程。ColdFire5307C3开发板硬件情况:ColdFire5307 3
11、2位处置器,16MB (32位数据总线)SDRAM,2MB (16位数据总线)Flash ROM,2 UART,10Mbps (16位数据总线)以太网接口。修正bootloader的处置器和配置相关文件:a. 根据5307处置器手册及用户需求,修正vector.s中的中断矢量表。b. 根据5307处置器手册编写mcf5307_lo.s文件。c. 根据板上的硬件配置修正sysinit.c文件,编写相应的硬件初始化函数。d. 根据系统配置修正config.h和board.h文件。e. 根据需求修正mxxxx_mwerks.h和mwerks.h,设定某些编译选项。f. 根据需求修正衔接配置文件Fla
12、sh.lcf,设定衔接时目的代码的地址分配。g. 编写相应的硬件驱动,如该板上用到的MBM29LV 160BE70 Flash芯片的驱动程序文件am29xxxx.c和am29 xxxx.h、该板上用到的网卡芯片的驱动程序文件Ns8390.c以及5307的串口驱动函数等。(2)bootloader命令简介2dBUG提供了丰富的调试命令: 程序流程控制命令reset(系统重启)、go、exe(用户程序执行)、br(断点设置)、step(单步)、trace(单步跟入)、gt(运转到); 内存和存放器操作命令md、mm(内存查看和修正)、rd、rm(存放器查看和修正)、bm(内处块挪动)、bf(内存块
13、数据填充)、bc(内存块比较)、bs(内存块查找); 指令和数据操作命令dc(数据转换)、dis(反汇编)、asm (汇编指令插入)、sym(符号表管理); 程序下载命令dl(经过串口下载)、dn(经过网络下载)。(3)bootloader用户功能扩展除了dBUG bootloader本身提供应用户的命令外,用户还希望根据不同的情况定制本人的命令。如Linux加载、C/OS加载、kermit下载等。普通本人添加的命令都会放在一个单独的C文件里面。为了方便,用户也将本人添加的命令都放在board.c文件的最后。例如,用户想要给dBUG添加C/OS操作系统加载的功能,除了在dBUG中加上本人的程序
14、加载代码外,还应给dBUG添加一个名为ucosii的用户命令。这样可以经过在界面上输入命令的方式实现相应的加载功能。首先应该在board.c里面实现这个函数:ucos_boot (int argc, char *argv)而后,应在cmds.c文件里面声明这个函数,并在紧接着的UIF_CMD UIF_CMDTAB数组里面声明这个命令的特性和参数。“ucosii, 4,0,0,0,ucos_boot, “Boot uCOS-II from RAM,其中,第一个test字符串是命令的称号,第二个4阐明命令识别的时候要匹配4个字符才行,最后的字符串是help命令时对test命令的解释。在描画中间的test阐明指向的函数称号。这样就很方便地添加了这个用户命令。4 结 论综上所述,Motorola公司的dBUG软
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024个人借款保证合同范本
- 2024大数据服务居间合同
- 2024个人场地租赁合同范文
- 2024商业货物运送协议典范一
- 2024展厅展示合同范本正规范本
- 湖南省2023-2024学年高二地理上学期11月第二次联考试题含解析
- 2024年外墙装饰施工合作合同样本版
- 小学数学小教研活动总结400字范文
- 2024年广告发布合同规定条款
- 2024年会员专享充值卡销售合同版B版
- 机关建筑能源托管服务项目可研方案
- 湖南移动环保公厕施工方案
- PPT稻草人读书分享
- 可填充颜色的地图(世界、中国、各省份)
- 营养学第十一章公共营养
- 旅游心理学-ppt-全
- 臀位助产分娩术课件
- 剑桥国际英语3-Unit2-Home-sweet-home-课件
- 国家发改委2007年第55号令-附表
- 2023-2023年高考小说真题汇编
- 做阳光少年主题班会课件
评论
0/150
提交评论