Motorola微处理器bootloader分析与应用

晓东zp

晓东zp

2016-01-29 17:39

Motorola微处理器bootloader分析与应用,Motorola微处理器bootloader分析与应用

  引言

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

  一、bootloader源码结构

  1、bootloader的文件组织

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/linux/)

  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]。


图1  dBUG源码树

  ①  第一个目录是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大小、类型、数据宽度和地址范围、划分板上内存空间范围、系统时钟大小、系统总线速率以及一些其它要用到的系统常量。

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/linux/)

  ⑤  连接配置文件:Flash.lcf。
  设定连接时各函数空间地址及内存分配。

  ⑥  预包含头文件:mxxxx_mwerks.h和mwerks.h。
  两函数被所有的C语言和汇编语言函数包含,它们设定CodeWarrior 预处理器所用到的常量和编译器编译选项。

[1] [2]   

展开更多 50%)
分享

猜你喜欢

Motorola微处理器bootloader分析与应用

Linux Linux命令 Linux安装 Linux编程 Linux桌面 Linux软件 Linux内核 Linux管理
Motorola微处理器bootloader分析与应用

处理器主频

电脑入门
处理器主频

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

酷睿处理器

电脑入门
酷睿处理器

双核处理器

电脑入门
双核处理器

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

优化大师的处理器与主板

电脑入门
优化大师的处理器与主板

SQL Server查询处理器机制与结构(上)

SQLServer
SQL Server查询处理器机制与结构(上)

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

怎样做自己的二级域名(之三)

怎样做自己的二级域名(之三)

实用技巧:DOS文件转换成UNIX文件格式

实用技巧:DOS文件转换成UNIX文件格式
下拉加载更多内容 ↓