UBoot移植Word文档下载推荐.docx
- 文档编号:15043271
- 上传时间:2022-10-27
- 格式:DOCX
- 页数:17
- 大小:23.42KB
UBoot移植Word文档下载推荐.docx
《UBoot移植Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《UBoot移植Word文档下载推荐.docx(17页珍藏版)》请在冰豆网上搜索。
[root@vm-devu-boot-1.3.2]#cdboard/
[root@vm-devboard]#mkdirup2410
[root@vm-devboard]#cpsmdk2410/*up2410
[root@vm-devboard]#cd../
上面的步骤中,我们把smdk2410目录下的所有文件都拷贝到了我们的up2410目录下,因为我们的开发板和smdk2410开发板的配置差不多。
每个开发板都有一个自己的配置文件,如smdk2410开发板的配置文件为include/configs/smdk2410.h,我们也需要为我们的开发板建立自己的配置文件。
可以直接从smdk2410开发板的配置文件中修改而来。
因此我们先把smdk2410的配置文件复制到我们开发板的配置文件当中:
[root@vm-devu-boot-1.3.2]#cpinclude/configs/smdk2410.hinclude/configs/up2410.h
然后,修改Makefile,使得可以配置我们的开发板:
[root@vm-devu-boot-1.3.2]#viMakefile
在Makefile中找到下面两行:
smdk2400_config:
unconfig
@$(MKCONFIG)$(@:
_config=)armarm920tsmdk2400NULLs3c24x0
紧接这这两行添加如下两行:
up2410_config:
_config=)armarm920tup2410NULLs3c24x0
注意第二行开始部分的空白是按TAB键获得的!
红色的部分显示了不同处!
这样,我们自己的板级支持包就建好了。
三、添加代码,支持从NandFlash启动
由于我们的开发板上没有NorFlash,只能从NandFlash启动。
而U-Boot默认不支持从NandFlash启动,所以需要我们自己添加代码来实现从NandFlash启动。
1、修改start.S文件
位于cpu/arm920t/目录下的start.S文件是开发板上电后运行的第一段代码,需要在这个文件中添加内容,以支持从NandFlash启动。
[root@vm-devu-boot-1.3.2]#vicpu/arm920t/start.S
首先,删掉start.S中的第181行和201行的下面内容:
#ifdefCONFIG_AT91RM9200
...............................................................
#endif
如果有这两句,这两句之间的内容将不会被编译。
而我们的开发板需要执行这些内容。
然后,找到这一行:
#ifndefCONFIG_SKIP_RELOCATE_UBOOT
在紧接这这行的下面添加下面几行:
#ifdefCONFIG_S3C2410_NAND_BOOT
blcopy_myself
#else
再找到
blecopy_loop
在它的下面添加一行:
#endif
做这些工作就是要完成一个简单的功能:
如果我们定义了CONFIG_S3C2410_NAND_BOOT这个宏,那么就执行copy_myself这个子程序,否则就执行#else下面的程序。
copy_myself这个子程序的功能就是把U-Boot自身的代码从NandFlash拷贝到SDRAM中,需要我们自己实现,U-Boot自身并没有为我们实现。
我们把copy_myself也添加在start.S文件中。
找到下面的一行:
_start_armboot:
.wordstart_armboot
在这一行的下面添加如下的内容:
/*
*************************************************************************
*
*copyu-boottoram
*/
copy_myself:
movr10,lr@savereturnaddresstor10
ldrsp,DW_STACK_START@安装栈的起始地址
movfp,#0@初始化帧指针寄存器
blNF_Init@跳到复位C函数去执行
@readUBOOTfromNandFlashtoRAM
ldrr0,=UBOOT_RAM_BASE@设置第1个参数:
UBOOT在RAM中的起始地址
movr1,#0x0@设置第2个参数:
NandFlash的起始地址
movr2,#0x30000@设置第3个参数:
UBOOT的长度(192KB)
blnand_read_whole@调用nand_read_whole(),该函数在board/up2410/nand.c中
tstr0,#0x0@如果函数的返回值为0,表示执行成功.
beqok_nand_read@执行内存比较
1:
b1b
ok_nand_read:
movr0,#0x00000000@内部RAM的起始地址
ldrr1,=UBOOT_RAM_BASE@UBOOT在RAM中的起始地址
movr2,#0x400@比较1024次,每次4字节,4bytes*1024=4Kbytes
go_next:
ldrr3,[r0],#4
ldrr4,[r1],#4
teqr3,r4
bnenotmatch
subsr2,r2,#4
beqdone_nand_read
bnego_next
notmatch:
done_nand_read:
movpc,r10
DW_STACK_START:
.wordSTACK_BASE+STACK_SIZE-4
上面是copy_myself的实现代码,添加完成以后,U-Boot启动时就会执行我们的这段代码,将U-Boot的内容从Flash中拷贝到SDRAM中。
这样,start.S这个文件就修改完成了,保存刚才的修改。
2、添加nand.c文件
在copy_mysel这段程序中,我们调用了nand_read_whole子程序。
这个程序是用C程序实现的,我们新建一个文件,board/up2410/nand.c,在这个文件中实现它:
#include<
common.h>
s3c2410.h>
config.h>
#defineTACLS0
#defineTWRPH03
#defineTWRPH10
#defineU32unsignedint
externunsignedlongnand_probe(unsignedlongphysadr);
staticvoidNF_Reset(void)
{
inti;
NF_nFCE_L();
/*使能NandFlash*/
NF_CMD(0xFF);
for(i=0;
i<
10;
i++);
NF_WAITRB();
NF_nFCE_H();
}
voidNF_Init(void)
rNFCONF=(1<
<
15)|(1<
14)|(1<
13)|(1<
12)|(1<
11)|(TACLS<
8)|(TWRPH0<
4)|(TWRPH1<
0);
NF_Reset();
intnand_read_whole(unsignedchar*buf,unsignedlongstart_addr,intsize)
inti,j;
if((start_addr&
NAND_BLOCK_MASK)||(size&
NAND_BLOCK_MASK))
return1;
i<
i++);
i=start_addr;
while(i<
start_addr+size){
rNFCMD=0;
/*建立每次读写的地址,NANDFLASH按照扇区来进行读写*/
rNFADDR=i&
0xff;
rNFADDR=(i>
>
9)&
17)&
25)&
for(j=0;
j<
NAND_SECTOR_SIZE;
j++,i++){/*读取每个扇区的所有指令*/
*buf=(rNFDATA&
0xff);
buf++;
/*关闭NANDFLASH使能*/
return0;
上面就是nand.c文件的全部内容。
为了使编译的时候能把这个文件编译进去,需要修改相应的Makefile:
[root@vm-devu-boot-1.3.2]#viboard/up2410/Makefile
找到这一行:
COBJS:
=smdk2410.oflash.o
把这行的内容改为下面这行:
=smdk2410.oflash.onand.o
即在行尾加上了nand.o,这样,编译的时候就会把nand.c编译进去,并进行链接。
3、修改up2410.h
前面提到,up2410.h是开发板的配置文件。
关于nand.c中用到的一些宏或者其他需要定义的,我们都放在up2410.h中。
注意,这里只介绍和从Nand启动相关的配置,因为up2410.h中还有很多其他配置,将在后面介绍!
[root@vm-devu-boot-1.3.2]#viinclude/configs/up2410.h
光标移动到文件的末尾,在文件的最后一个#endif的前面添加如下内容:
#defineCONFIG_S3C2410_NAND_BOOT1
#defineSTACK_BASE0x33f00000
#defin
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- UBoot 移植