>
首页 » 业界动态 » 书写Bootloader重要的经验心得

书写Bootloader重要的经验心得

作者:  时间:2007-12-02 22:29  来源:

实际上对于学习S3C44B0X的人来说,对于这个芯片的启动过程还有很多不解之处,我想谈谈我对启动过程的理解,实际上这将是书写Bootloader重要的一部分。

44B0启动时一定是从0地址开始执行指令,系统中0地址是片选引脚GCS0对应的Bank0空间。如果系统使用Flash作为程序储存设备且具有Bootloader这样的引导代码的话,则0地址一定是Flash区域,即从Flash中的第一条指令执行!但是很多44B0的系统中并不把Bootloader直接放在0址开始的Flash空间中,而是放置在以0x1f0000为起始地址的Flash空间中。这是为什么呢?显然将Bootloader放在0地址为起始地址的空间内是可以在系统加电时被执行来引导系统的。但是,每次烧写新的程序时,都会擦去0地址开始内容,会破坏Bootloader,从而使系统不能启动。所以,把Bootloader放在别的地方,而在0地址开始的位置放入中断向量表,而中断向量表的第一条指令一定是跳转到Bootloader的起始处。之所以把0地址填入中断向量表,这和芯片的体系结构有关,44B0没有重映射(Remap)的功能,在触发中断之后,还是要到Flash中的开头地址空间中执行指令,所以所谓的这段中断向量表完成的是跳转的功能,具体说来不应叫中断向量表,而应该叫做中断跳转表。如果不在Flash的起始地址处烧入中断跳转表的话就无法正确相应中断,从而所有需要中断的程序都不能正常运行。切忌这个中断跳转表一定必不可少!

如下是中断跳转表的源程序,将其编译烧入0地址之中:

AREA boot, CODE, READONLY

VECTORS EQU 0x0c000000

ENTRY

mov pc, #VECTORS
ldr pc, =VECTORS+4
ldr pc, =VECTORS+8
ldr pc, =VECTORS+0x0c
ldr pc, =VECTORS+0x10
ldr pc, =VECTORS+0x14
ldr pc, =VECTORS+0x18
ldr pc, =VECTORS+0x1c

END

还有很多人讨论,书写一个Bootloader最为基本的代码是什么?一般来说,像诸如跑马灯这样的程序可以测出最少代码,你可以想象一个系统只用到Flash,而不用RAM,中断,Cache等东西,这样在Bootloader中仅需要对看门狗、时钟频率、片内锁相环设置,而不用书写中断例程、中断向量表、RAM配置、堆栈指针初始化、DMA配置、电源管理等等,一个简约的Bootloader如下,足以启动系统转入main中执行。

;Watchdog timer
WTCON EQU 0x01d30000

;Clock Controller
PLLCON EQU 0x01d80000
CLKCON EQU 0x01d80004
LOCKTIME EQU 0x01d8000c

M_DIV EQU 0x48 ;Fin=10MHz Fout=40MHz
P_DIV EQU 0x3
S_DIV EQU 0x2

IMPORT Main ; The main entry of mon program

AREA Init,CODE,READONLY
ENTRY
b ResetHandler ;for debug

ResetHandler
ldr r0,=WTCON ;watch dog disable
ldr r1,=0x0
str r1,[r0]

ldr r0,=LOCKTIME
ldr r1,=0xfff
str r1,[r0]
ldr r0,=PLLCON ;temporary setting of PLL
ldr r1,=((M_DIV<<12)+(P_DIV<<4)+S_DIV) ;Fin=10MHz,Fout=40MHz
str r1,[r0]
ldr r0,=CLKCON
ldr r1,=0x7ff8 ;All unit block CLK enable
str r1,[r0]

BL Main
B .
END

相关推荐

HTC bootloader 解锁工程启动

HTC  bootloader  2011-08-17

嵌入式以太网控制器设计

嵌入式  以太网  S3C44B0X  2011-07-25

U-Boot在MPC8265平台上的移植与分析

Linux  Bootloader  移植  MPC8265  2010-08-05

大容量无线传输技术中高性能DSP的启动方法

无线传输  DSP  bootloader  2010-06-23

基于嵌入式微处理器S3C44B0X音频文件播放

S3C44B0X  IIS  功率放大器  2009-07-24

基于PxA255的U-Boot启动分析及移植

PxA255  U-Boot  Bootloader  移植  2009-06-24
在线研讨会
焦点