微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 移植最新uboot的总结

移植最新uboot的总结

时间:11-21 来源:互联网 点击:

C0 root=/dev/mtdblock3 rootfstype=jffs2

二:
烧写YAFFS
tftp 30000000 fs_mini_mdev.yaffs2
nand erase.part rootfs
nand write.yaffs 30000000 260000 889bc0

更新UBOOT:
tftp 30000000 u-boot.bin; protect off all; erase 0 3ffff; cp.b 30000000 0 40000

colin 查看数据:
SMDK2410 # nand dump 260000

制作补丁:
book@book-desktop:/work/system/u-boot-2012.04.01$make distclean
book@book-desktop:/work/system/u-boot-2012.04.01$rm u-boot.dis
book@book-desktop:/work/system/u-boot-2012.04.01$cd ..
book@book-desktop:/work/system$mv u-boot-2012.04.01 u-boot-2012.04.01_100ask
book@book-desktop:/work/system$tar xjf u-boot-2012.04.01.tar.bz2
book@book-desktop:/work/system$diff --help
book@book-desktop:/work/system$diff -urN u-boot-2012.04.01 u-boot-2012.04.01_100ask > u-boot-2012.04.01_100ask_colin.patch
diff -urN u-boot-2012.04.01 u-boot-2012.04.01_100ask > u-boot-2012.04.01_100ask.patch

怎么用这个补丁:
book@book-desktop:/work/system$cd u-boot-2012.04.01
book@book-desktop:/work/system/u-boot-2012.04.01$patch -p1 < ../u-boot-2012.04.01_100ask_colin.patch
book@book-desktop:/work/system/u-boot-2012.04.01$make smdk2440_config
book@book-desktop:/work/system/u-boot-2012.04.01$make

最重要的一点:
修改NFS.C里面的#define NFS_TIMEOUT (10*2000UL)
这样可以解决
SMDK2410 # nfs 32000000 192.168.1.51:/work/nfs_root/uImage_new
dm9000 i/o: 0x20000000, id: 0x90000a46
DM9000: running in 16 bit mode
MAC: 08:00:3e:26:0a:5b
could not establish link
Using dm9000 device
File transfer via NFS from server 192.168.1.51; our IP address is 192.168.1.17
Filename /work/nfs_root/uImage_new.
Load address: 0x32000000
Loading: #################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
##############T T *** ERROR: Cannot umount

分析"重定位之修改代码为新地址":
#ifndef CONFIG_SPL_BUILD

ldrr0, _TEXT_BASE
// r0=0, 代码基地址

subr9, r6, r0
// r9 = r6-r0 = 0x33f41000 - 0 = 0x33f41000

ldrr10, _dynsym_start_ofs
// r10 = 00073608

addr10, r10, r0
// r10 = 00073608 + 0 = 00073608

ldrr2, _rel_dyn_start_ofs
// r2=0006b568

addr2, r2, r0
// r2=r2+r0=0006b568

ldrr3, _rel_dyn_end_ofs
// r3=00073608

addr3, r3, r0
// r3=r3+r0=00073608

fixloop:
ldrr0, [r2]
1. r0=[0006b568]=00000020

addr0, r0, r9
1. r0=r0+r9=00000020 + 0x33f41000 = 0x33f41020

ldrr1, [r2, #4]
1. r1=[0006b568+4]=00000017

andr7, r1, #0xff
1. r7=r1&0xff=00000017

cmpr7, #23
1. r7 == 23(0x17)

beqfixrel
cmpr7, #2

beqfixabs

bfixnext
fixabs:

movr1, r1, LSR #4

addr1, r10, r1

ldrr1, [r1, #4]

addr1, r1, r9

bfixnext
fixrel:

ldrr1, [r0]
1. r1=[00000020]=000001e0

addr1, r1, r9
1. r1=r1+r9=000001e0 + 0x33f41000 = 33F411E0

fixnext:
strr1, [r0]
1. [0x33f41020] = 33F411E0

addr2, r2, #8
1. r2=r2+8=0006b568+8=6B570

cmpr2, r3
1.

blofixloop
#endif

=====================================================================================

1、下载、建立source insight工程、编译、烧写、如果无运行分析原因

tar xjf u-boot-2012.04.01.tar.bz2

cd u-boot-2012.04.01

make smdk2410_config

make

由于arm-linux-gcc版本太低,编译出错

arm-linux-gcc -v

下面来更换arm-linux-gcc到最新版本,以arm-linux-gcc-4.3.2.tar.bz2为例:

a、到服务器上安装工具链:

先创建临时目录查看有什么内容:

mkdir tmp

tar xjf arm-linux-gcc-4.3.2.tar.bz2 -C tmp/

再到bin/目录下可以看到各种工具链,到此时说明该文件(arm-linux-gcc-4.3.2.tar.bz2)可以使用

再回到根目录下,即和tmp文件夹在同一个目录下用以下命令解压到根目录下:

sudu tar xjf arm-linux-gcc-4.3.2.tar.bz2 -C /

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top