44b0 bootloader编译全过程
代码直接用的BOLB-FOR3000。这里只讲编译
我的板子是博创的UPTECH-44B0:
2M的NOR FLASH(AM29lv160b)(BANK0),
16M的NAND FLASH(K9F2808v)(BANK2),
8M的 SDRAM(HY57v641620)(BANK6)
一. 下载BLOB-FOR3000
http://www.image2003.com/code/down/192168291092007629173471475878.rar
解压到根目录
mv 192168291092007629173471475878.rar /
cd /
unrar x 192168291092007629173471475878.rar
里面已经有编译好的BLOB了,先要清理一下
make distclean
二. 下载交叉编译工具链
http://ftp.arm.linux.org.uk/pub/armlinux/toolchain/cross-2.95.3.tar.bz2
(我只用这个编译成功了,其他的都会报错)
照样可以解压到根目录
tar -jxvf cross-2.95.3.tar.bz2
修改~/.bashrc文件
在最后添加
export PATH="$PATH:/2.95.3/bin/"
运行
sourcr ~/.bashrc
现在可以使用arm-linux-*一套工具了(比如打arm-li,然后table补全,可以补全就行了)
arm-linux-gcc -v
出现2.95.3字样就行了,2,95.2的好像编译时也会报错的。
三.下载uclinux源代码
(据说去官方下载会很慢),这个我用的是博创光盘上面的uClinux-2.4.x,应该是要移植哪个内核就应该有那个内核的源代码
同样解压到根目录(图方便)
四.编译
#cd /blob-for3000
#export CC=arm-linux-gcc
#export OBJCOPY=arm-linux-objcopy
#export RANLIB=arm-linux-ranlib
#export AR=arm-linux-ar
#autoconf
#autoheader
#./configure --with-board=mba-44b0 --with-linux-prefix=/uClinux-2.4.x --host=i686 --target=arm
#make
如果没有出现错误的话就可以在src/blob下面找到几个编译好的文件
# ls src/blob*
src/blob/blob src/blob/blob-rest src/blob/blob-start-chain
src/blob/blob-chain src/blob/blob-rest-elf32 src/blob/blob-start-chain-elf32
src/blob/blob.map src/blob/blob-start src/blob/blob-start-elf32
刚开始学习嵌入式是郁闷的,郁闷的是找不到直接了当的资料,郁闷的是要找不到人帮忙,郁闷的是刚开始看代码就象是踩在海绵上了,完全使不上力。
但是当我的AXD连上板子的时候,当把BLOB编译成功并烧写到板子出现了我修改后的签名的时候,当我把一个一个文件分析得一清二楚的时候,我才知道努力总会有收获的。
虽然还没完全把BLOB分析完,不过整体的思路已经很清晰了,编译成功是第一步,然后是参考手册试着看懂每一个程序,然后就是移植内核,文件系统,编写驱动程序,路还长着呢。
代码直接用的BOLB-FOR3000。这里只讲编译
我的板子是博创的UPTECH-44B0:
2M的NOR FLASH(AM29lv160b)(BANK0),
16M的NAND FLASH(K9F2808v)(BANK2),
8M的 SDRAM(HY57v641620)(BANK6)
一. 下载BLOB-FOR3000
http://www.image2003.com/code/down/192168291092007629173471475878.rar
解压到根目录
mv 192168291092007629173471475878.rar /
cd /
unrar x 192168291092007629173471475878.rar
里面已经有编译好的BLOB了,先要清理一下
make distclean
二. 下载交叉编译工具链
http://ftp.arm.linux.org.uk/pub/armlinux/toolchain/cross-2.95.3.tar.bz2
(我只用这个编译成功了,其他的都会报错)
照样可以解压到根目录
tar -jxvf cross-2.95.3.tar.bz2
修改~/.bashrc文件
在最后添加
export PATH="$PATH:/2.95.3/bin/"
运行
sourcr ~/.bashrc
现在可以使用arm-linux-*一套工具了(比如打arm-li,然后table补全,可以补全就行了)
arm-linux-gcc -v
出现2.95.3字样就行了,2,95.2的好像编译时也会报错的。
三.下载uclinux源代码
(据说去官方下载会很慢),这个我用的是博创光盘上面的uClinux-2.4.x,应该是要移植哪个内核就应该有那个内核的源代码
同样解压到根目录(图方便)
四.编译
#cd /blob-for3000
#export CC=arm-linux-gcc
#export OBJCOPY=arm-linux-objcopy
#export RANLIB=arm-linux-ranlib
#export AR=arm-linux-ar
#autoconf
#autoheader
#./configure --with-board=mba-44b0 --with-linux-prefix=/uClinux-2.4.x --host=i686 --target=arm
#make
如果没有出现错误的话就可以在src/blob下面找到几个编译好的文件
# ls src/blob*
src/blob/blob src/blob/blob-rest src/blob/blob-start-chain
src/blob/blob-chain src/blob/blob-rest-elf32 src/blob/blob-start-chain-elf32
src/blob/blob.map src/blob/blob-start src/blob/blob-start-elf32
刚开始学习嵌入式是郁闷的,郁闷的是找不到直接了当的资料,郁闷的是要找不到人帮忙,郁闷的是刚开始看代码就象是踩在海绵上了,完全使不上力。
但是当我的AXD连上板子的时候,当把BLOB编译成功并烧写到板子出现了我修改后的签名的时候,当我把一个一个文件分析得一清二楚的时候,我才知道努力总会有收获的。
虽然还没完全把BLOB分析完,不过整体的思路已经很清晰了,编译成功是第一步,然后是参考手册试着看懂每一个程序,然后就是移植内核,文件系统,编写驱动程序,路还长着呢。