- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Uboot移植5--支持从nand flash启动
同时支持norflash和nandflash启动
方法一:在时钟修改方法一条件下:修改cpu/arm920t/start.S
/*#ifndef CONFIG_SKIP_RELOCATE_UBOOT
relocate: */ /* relocate U-Boot to RAM */
adr r0, _start /* r0 - current position of code */
ldr r1, _TEXT_BASE /* test if we run from flash or RAM */
cmp r0, r1 /* dont reloc during debug */
beq stack_setup
/*check code position*/
ldr r0, ldr r0,[r0]
ands r0,r0,#6
bne nor_boot
#define LENGTH_UBOOT 0x60000
#define NAND_CTL_BASE 0x4e000000
/*offset*/
#define oNFCONF 0x00
#define oNFCONT 0x04
#define oNFCMD 0x08
#define oNFSTAT 0x20
nand_boot:
mov r1,#NAND_CTL_BASE
ldr r2,=((712)|(78)|(74))
str r2,[r1,#oNFCONF]
ldr r2,[r1,#oNFCONF]
ldr r2,=((14)|(01)|(10))
str r2,[r1,#oNFCONT]
ldr r2,[r1,#oNFCONT]
ldr r2,=(0x6)
str r2,[r1,#oNFSTAT]
ldr r2,[r1,#oNFSTAT]
mov r2,#0xff
str r2,[r1,#oNFCMD]
mov r3,#0
nand1:
add r3,r3,#0x1
cmp r3,#0xa
blt nand1
nand2:
ldr r2,[r1,#oNFSTAT]
tst r2,#0x4
beq nand2
ldr r2,[r1,#oNFCONT]
orr r2,r2,#0x2
str r2,[r1,#oNFCONT]
ldr sp, DW_STACK_START
mov fp, #0
ldr r0, =TEXT_BASE
mov r1, #0x0
mov r2, #LENGTH_UBOOT
bl nand_read_ll
tst r0, #0x0
beq ok_nand_read
bad_nand_read:
loop2:
b loop2
ok_nand_read:
mov r0, #0
ldr r1, =TEXT_BASE
mov r2, #0x400
go_next:
ldr r3, [r0], #4
ldr r4, [r1], #4
teq r3, r4
bne notmatch
subs r2, r2, #4
beq stack_setup
bne go_next
notmatch:
loop3:
b loop3
nor_boot:
adr r0, _start /* r0 - current position of code */
ldr r1, _TEXT_BASE /* test if we run from flash or RAM */
ldr r2, _armboot_start
ldr r3, _bss_start
sub r2, r3, r2 /* r2 - size of armboot */
add r2, r0, r2 /* r2 - source end address */
copy_loop:
ldmia r0!, {r3-r10} /* copy from source address [r0] */
stmia r1!, {r3-r10} /* copy to target address [r1] */
cmp r0, r2 /* until source end addreee [r2] */
ble copy_loop
/* Set up the stack */
接着在board/mao2440下新建文件nan
文档评论(0)