网站首页 | 论文指导 | 经济论文 | 理工论文 | 管理论文 | 法律论文 | 行政论文 | 英语论文
艺术论文 | 农学论文 | 医学论文 | 文史论文 | 教育教学论文 | 论文定制 | 论文发表
论文库分类>>> 点这里访问轻松论文网主站>>>
您当前的位置:轻松论文网 -> 论文中心 -> 理工论文 -> 电子通信网络论文 -> 文章内容 退出登录 用户管理
 子栏目导航
· 计算机与信息技术论文
· 电子通信网络论文
· 自动化论文
· 土建水利论文
· 交通运输论文
· 化学与化工论文
· 石油与能源动力论文
· 机械制造论文
· 矿业与冶金论文
· 工程论文
· 生命环境论文
· 材料科学与工程
· 综合论文
 最新推荐
· 世界地缘政治体系与印度...
· 维新与革命:政治选择的...
· 世界地缘政治体系与印度...
· 中国国家安全哲学-政治哲...
· 政治学视野中的公共政策...
· 方法引导下的政治理论[上...
· 格拉修斯原则:基督教二...
· 方法引导下的政治理论[下...
· 国体、国情与现代国家-政...
· 试论我国今后政治发展的...
· 东亚的政治权威与现代化...
· 跨国收养法的概念与渊源...
 热门文章
· 开题报告的格式(通用...
· 怎样写开题报告
· [图文] 开题报告范文1(银行...
· 开题报告范文2(网上...
· 毕业论文开题报告-A...
· 开题报告的撰写方法...
· 开题报告范文3(网络...
· 文献综述的写法
· 毕业论文例文评析
· 开题报告撰写的方法...
 相关文章
· [图文] SHARC阵列板的VMEBu...
 
[论文定制][论文发表][价格总览][支付方式][购买流程]点击这里给我发消息 点击这里给我发消息
Motorola微处理器的bootloader分析与应用
作者:佚名  来源:不详  发布时间:2007-3-2 16:21:25  发布人:admin

减小字体 增大字体

摘要:以Motorola 32位处理器ColdFire5307为例,分析、介绍Motorola公司用于嵌入式系统开发的dBUG通用bootloader软件的结构、运行原理及应用。

    关键词:嵌入式系统 ColdFire bootloader dBUG

引 言

bootloader是用来完成系统启动和系统软件加载工作的程序。它是底层硬件和上层应用软件之间的一个中间件软件,完成处理器和周边电路正常运行所要的初始化工作;可以屏蔽底层硬件的差异,使上层应用软件的编写和移植更加方便;不仅具有类似PC机上常用的BIOS(Basic Input Output System,基本输入、输出系统监控程序)功能,而且还可具有一定的调试功能。目前,在嵌入式系统开发中有多种bootloader可供选择,其中Motorola公司的名为dBUG的bootloader比较优秀。它可以移植在Motorola MC68000、ColdFire和PowerPC系列所有微处理器上面,有强大的调试功能,支持单步、下载、网络更新等;其良好的软件架构使用户能很方便地修改其代码,扩展新的功能。本文以作者用于网络数据存储的coldfire5307C3开发板为例,简析其上的dBUG bootloader的结构和运行机制,并给出实际修改范例。

1 bootloader源码结构

(1)bootloader的文件组织

  dBUG bootloader源代码可以从Motorola公司网站获得。它是一个范例程序,通过修改相应的配置文件和处理器相关文件,可以很方便地移植到不同的处理器系统上。其源码由两个部分组成,一部分是lib项目,另外一部分是每种Motorola微处理器单独的处理器项目。比如,ColdFire 5307就使用MCF5307C3项目和lib项目一起来生成最终的dBUG代码。其中lib项目中是与处理器无关的一些命令或者函数,而每个单独的处理器项目是和每种不同的处理器息息相关的。在编译的时候,首先需要将lib项目编译生成标准库函数(也就是将一些通用命令和函数先封装起来)。然后,编译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目录,下面主要是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的主要源代码。

  综上所述,用户只要打开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

设定板上各参数信息,如片外Flash和SDRAM大小、类型、数据宽度和地址范围、划分板上内存空间范围、系统时钟大小、系统总线速率以及一些其它要用到的系统常量。

⑤ 连接配置文件:Flash.lcf。

设定连接时各函数空间地址及内存分配。

⑥ 预包含头文件:mxxxx_mwerks.h和mwerks.h。

两函数被所有的C语言和汇编语言函数包含,它们设定CodeWarrior 预处理器所用到的常量和编译器编译选项。

2 bootloader运行流程简介

  bootloader启动流程如图2所示。

  系统上电复位后,跳到Boot ROM的最低地址处。Boot ROM的开始空间FFE00000~FFE00400为vector.s中的中断矢量表。将表中第一个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()。

  mcf5307_init()函数顺序调用各个功能的初始化子函数,初始化系统集成模块、并行通用输出输入口、串口、I2C控制器、DMA控制器、片选寄存器、SDRAM控制器。当运行完mcf5307_init()后,流程回到asm_startmeup中。此时,外围电路和内部模块已按用户要求进行了正确的配置,系统的初始化已基本完成。于是,将堆栈指针SP指向用户要求的堆栈空间,该堆栈为该板上的外部SDRAM空间。最后,跳转至main函数。

  在main中,首先将系统的矢量表从Flash空间拷贝到用户指定的外部SDRAM中。然后,将Flash中的data段初值拷贝到外部SDRAM指定的data空间中,根据配置将外部SDRAM中的bss段清0,之后进行一些系统全局数据结构、参数表等的初始化。最后,调用mainloop开始人机交互循环:不断接收用户的命令、根据命令查表调用相应的任务函数、在界面上打印出相应的执行信息。

3 bootloader用户应用

    (1)bootloader的系统移植

  由于Motorola的dBUG bootloader为一标准的范例程序,要将其移植到具体的嵌入式系统中,还需要根据系统的硬件配置,修改其部分配置文件和底层接口文件。本文以用于网络数据存储的ColdFire5307C3开发板为例,介绍在其上的dBUG移植过程。

①ColdFire5307C3开发板硬件情况:

ColdFire5307 32位处理器,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. 根据需要修改连接配置文件Flash.lcf,设定连接时目标代码的地址分配。

g. 编写相应的硬件驱动,如该板上用到的MBM29LV 160BE70 Flash芯片的驱动程序文件am29xxxx.c和am29 xxxx.h、该板上用到的网卡芯片的驱动程序文件Ns8390.c以及5307的串口驱动函数等。

(2)bootloader命令简介[2]

  dBUG提供了丰富的调试命令:

① 程序流程控制命令reset(系统重启)、go、exe(用户程序执行)、br(断点设置)、step(单步)、trace(单步跟入)、gt(运行到);

② 内存和寄存器操作命令md、mm(内存查看和修改)、rd、rm(寄存器查看和修改)、bm(内处块移动)、bf(内存块数据填充)、bc(内存块比较)、bs(内存块查找);

③ 指令和数据操作命令dc(数据转换)、dis(反汇编)、asm (汇编指令插入)、sym(符号表管理);

④ 程序下载命令dl(通过串口下载)、dn(通过网络下载)。

(3)bootloader用户功能扩展

  除了dBUG bootloader本身提供给用户的命令外,用户还希望根据不同的情况定制自己的命令。如Linux加载、μC/OS加载、kermit下载等。一般自己添加的命令都会放在一个单独的C文件里面。为了方便,用户也将自己添加的命令都放在board.c文件的最后。

  例如,用户想要给dBUG添加μC/OS操作系统加载的功能,除了在dBUG中加上自己的程序加载代码外,还应给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软件由于其良好的源代码组织结构使得用户在其上开发应用非常方便,用户稍加修改就可将其移植到不同的硬件平台上。它拥有良好的用户界面,不仅可以完成用户所需的程序下载、加载等功能,而且还可以方便地进行调试,使用户可以更好地监控自己的程序。除此之外,用户还可以很方便地添加自己所要的功能,其结构具有良好的可扩展性。所以,Motorola公司的dBUG bootloader的确是一个优秀的bootloader范例,给广大的嵌入式系统开发者提供了一个不错的选择。

论文指导 开题报告   论文格式   论文撰写   论文答辩   论文答谢   
经济论文 税收论文   证券投资论文   房地产论文   金融论文   投资论文   财政论文   西经论文   国际贸易论文   计量经济论文   国民经济论文   保险信托论文   地方经济   国际经济   新经济学   经济学理论   经济学其他   
理工论文 计算机与信息技术论文   电子通信网络论文   自动化论文   土建水利论文   交通运输论文   化学与化工论文   石油与能源动力论文   机械制造论文   矿业与冶金论文   工程论文   生命环境论文   材料科学与工程   综合论文   
管理论文 电子商务论文   会计论文   财务论文   人力资源论文   市场营销论文   企业管理论文   信息管理论文   旅游管理论文   工商管理论文   公共管理论文   物流管理论文   
法律论文 民法论文   刑法论文   诉讼法论文   行政法论文   国家法   宪法论文   土地资源环境法论文   国际法论文   劳动保障论文   商法论文   经济法论文   法史学论文   法理学论文   司法制度论文   
行政论文 中国政治论文   国际政治论文   管理科学论文   思想政治教育论文   国家行政管理论文   政治理论论文   哲学理论论文   三个代表论文   社工论文   
英语论文 学术英语论文   商务英语论文   科技英语论文   英语教学论文   
艺术论文 艺术理论论文   电视艺术论文   电影艺术论文   音乐论文   舞蹈论文   戏剧论文   美术论文   
农学论文 农艺学(园林,林学)论文   渔业论文   水产论文   植物保护论文   农业基础科学论文   综合论文   
医学论文 医学论文写作方法   基础医学论文   医药卫生论文   临床医学论文   药学论文   特种医学论文   护理学论文   
文史论文 中国史论文   世界史论文   考古论文   文字学论文   语法论文   中国文学论文   世界文学论文   文学理论论文   文艺美学论文   文学评论论文   经典名著赏析论文   新闻传媒学论文   社会学论文   
教育教学论文 语文论文   数学论文   英语论文   物理论文   美术论文   音乐论文   地理论文   化学论文   历史论文   体育论文   思想政治论文   生物自然论文   信息技术论文   德育管理论文   素质教育论文   教学管理论文   综合论文   
[ ] [返回上一页] [打 印] [收 藏]
上一篇文章:SoC系统的低功耗设计
下一篇文章:基于uCLinux和S3C4510B的网络通信设计
∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论…]
设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 |
服务电话:020-61131011;020-61131022 转82 投诉电话:020-61131011;020-61131022 转88 传真:020-61131022
电子邮件:paperease@vip.163.com paper@126.com 服务QQ:130008818 130009919
© 2002-2004 轻松论文网 赣ICP备05004673号 网络实名:轻松论文