新闻中心

EEPW首页>嵌入式系统>设计应用> 基于ARM的嵌入式Bootloader实现自动升级

基于ARM的嵌入式Bootloader实现自动升级

作者: 时间:2012-03-23 来源:网络 收藏

Stage1的主要任务如下:初始化计时器,初始化网络,初始化Flash,装载内核映像和文件系统映像,初始化命令控制台等。进入stage1的汇编代码如下:

adr r0 , load_addr //@get stage1 entry point

ldr r9 , [r0 , #0x0c]

3 本实验基本原理

(图 2)


本实验对的功能进行了扩充,加入的功能。即:用户需要对目标板的内核或文件系统进行升级,只需要将新的映像文件拷贝到CF存储卡或移动硬盘中,然后将CF卡或移动硬盘插入目标板相应的插槽,每次重启目标板时,先启动,初始化硬件环境后,在应用程序运行前,判断是否存在要升级的文件,如果存在则先把Flash指定的位置的内容擦除掉,然后再把要升级的内核或文件系统的映像文件写进相应的位置,写完后立即删除CF存储卡或移动硬盘上的升级文件,即完成升级。如图2

项目开发板上有一块8M Byte的Flash和二块32M Bit的DDR SDRAM。Flash的起始地址映射到0x00000000,其布局如下[7]:

(Flash布局图)

如图所示,在虚拟地址位置0x00030000(实际物理地址为0x46030000)擦除和重写内核与文件系统映像文件。要对CF卡或移动硬盘进行文件存取,必须将CF卡或移动硬盘格式化成某种文件系统。本实验所编写的主要支持3种文件系统:FAT16,FAT32,EXT2。系统启动时,Bootloader首先检测CF卡或移动硬盘的文件系统类型,然后按照相应的文件系统格式查询CF 卡或移动硬盘的所有文件。若发现有更新的映像文件,则读CF卡的操作,CF卡的驱动见文献[3],将映像文件读到SDRAM中,再从SDRAM烧写到嵌入式开发版的Flash中,实现升级。

生成内核和文件系统步骤如下:

1)进入linux的armutils_2.5.127.0目录下执行make linux-config,裁剪的配置;

2)make linux 生成kernel-2.4.22-dtv-EM8624L-romfs.bin ,这是的内核;

3)make rootfs 生成rootfs-dtv-EM8624L-romfs.ext2,这是root文件系统;

4)make romfs 生成romfs-dtv-EM8624L-romfs.bin.gz,这是rom文件系统。



评论


相关推荐

技术专区

关闭