u-boot-1.3.2 run in flash for at91rm9200
来源:互联网 发布:大数据架构师卡考试 编辑:程序博客网 时间:2024/05/22 04:23
主要目的:移植u-boot-1.3.2到K9开发板,使其直接从FLASH启动,而不是通过boot.bin和u-boot压缩文件启动。实现u-boot的非压缩式的从FLASH的0x10000000地址处直接启动。
硬件资源:K9开发板
MCU : ATMEL AT91RM9200 QU
SDRAM : HY57V281620HCT-H 2片(4banks*2M*16bits=16MB,2片组成32M内存空间)
Nor Flash: JS28F128,类似于28F128J3A,不过速度快点。位宽是16bits,容量为16M。
PHY : DM9161E
u-boot版本:u-boot-1.3.2
FLASH驱动、SDRAM、FLASH大小等修改在此不再多说,主要是修改nor FLASH驱动(board/atmel/flash.c)、开发板配置文件(include/conifgs/at91rm9200dk.h)、加载地址等几个文件。本文的主要目的介如何使u-boot直接从FLASH的0x10000000处启动的办法。
之前成功的将u-boot-1.3.2移植到该硬件平台,不过u-boot是通过load.bin将u-boot解压到SDRAM中运行的!后来直接将u-boot.bin烧入FALSH后,重新上电后u-boot并没有启动,终端也没有任何反应。因为之前在SDRAM中能成功运行,并且测试过FLASH的读写都是正常的,所以可以排除FLASH读取错误的可能。后来经过几番查找,终于发现问题就出在cpu_init_crit中lowlevel_init:
#ifdefined(CONFIG_AT91RM9200DK)||defined(CONFIG_AT91RM9200EK)||defined(CONFIG_AT91RM9200DF)
#else
bl lowlevel_init
#endif
因为boot在初始化完成后,会把uboot.bin解压到sdram中。所以上述两种方式下,本质上uboot的生命周期都在sdram当中。
但是考虑,如果采用非压缩方式,直接把u-boot.bin放在0x10000000处,那么启动显然死掉。通过上面描述的情况已经证明了这一点。
#ifdefined(CONFIG_AT91RM9200DK)||defined(CONFIG_AT91RM9200EK)||defined(CONFIG_AT91RM9200DF)
adr r0,_start
ldr r1,_TEXT_BASE
cmp r0,r1
beq 1f
#endif
bl lowlevel_init
1:
movlr,ip
movpc,lr
重新编译后将u-boot.bin下载到FLASH中,重新上电后u-boot成功启动!
- u-boot-1.3.2 run in flash for at91rm9200
- 在AT91RM9200上跑U-Boot 1.3.2
- u-boot-2012.10移植到AT91RM9200(包括NAND FLASH)
- at91rm9200移植u-boot
- at91rm9200移植u-boot
- at91rm9200上u-boot移植
- at91rm9200上移植u-boot
- at91rm9200上u-boot移植
- at91rm9200上移植u-boot
- 移植u-boot-1.3.4到AT91RM9200板子
- 在AT91RM9200上移植u-boot
- AT91RM9200开发笔记(3):U-boot-1.3.0移植成功
- 在u-boot for bf561中使用nand flash
- U-boot(NOR Flash)
- U-boot在AT91RM9200上的全线移植分析
- U-boot在AT91RM9200上的全线移植分析
- at91rm9200 片内启动继续(u-boot 1.1.6)
- 在自己的AT91RM9200板子上使用U-Boot
- IE6实现PNG透明度问题整理
- 关于Heap/Stack
- 敏捷开发(Agile)在国内越来越火
- 古典vi操作
- 敏捷混搭 Scrum最流行
- u-boot-1.3.2 run in flash for at91rm9200
- 书签
- JavaScript基础知识3
- SQL 2000和2005 树形递归法小汇总 收藏
- ext
- 程序员应该修炼的十个习惯
- 计算机编程词汇
- 计算机编程词汇
- 计算机编程词汇