promote vediotype
一、移植uboot为 uboot_hi3520d.bin
1、拷贝海思SDK到linux ubuntu,按照海思SDK的说明文档txt,生成uboot_hi3520d
二、生成内核kernel
1、依然在海思SDK包内,有 osdrv/kernel/linux3.0.y,到此目录下,make menuconfig ARCH=arm,按文档进行相关配置,至少有一个重点的地方是:CROSS COMPILE,必须手动指定
为(前缀) arm-hisiv100nptl-linux-,配置完毕后,在linux3.0.y目录下执行 make uImage ARCH=arm CROSS_COMPILE= arm-hisiv100nptl-linux- ,正确执行完毕后,会在这个目录
下的 arch/arm/boot目录下生成 zImage 、 uImage等
三、生成根文件系统
1、到busybox目录下,同样设置 make menuconfig,同样指定目标芯片为 hisiv3520d,指定交叉编译为 arm-hisiv100nptl-linux-,全配置好了之后,对busybox进行编译安装,
make 然后 make install,就会在 _install目录下生成 usr 、bin 、 sbin 、linuxrc几个关键文件
2、在当前PC linux的根目录下, mkdir rootbox,然后将 usr bin sbin linuxrc四个文件拷贝到rootbox中,注意此处拷贝,有些是链接,所以拷贝时要用 cp -R -a, 然后手动
mkdir etc dev lib lib32 proc media mnt sys cfg,其中, etc dev lib三个目录需要从别处或当前PC linux拷贝相应的文件到此目录下
3、制作根文件(注意该硬件flash的块大小block size:0x40即64k): mkfs.jffs2 -s 0x1000 -e 0x40 -p 0x500000 -d rootbox/ -o root.jffs2
四、烧录
1、windows8下,打开fastboot_bvt,将海思板子用串口线和PC连接起来(不需通电),选择 'burn fastboot',下拉选择 “spi flash”,选中当前目录下的 uboot_hi3520d.bin,
先不通电点击“burn" 按钮,显示 downloading时,再给板子通电,则界面显示下载uboot_hi3520d.bin的进度(#号表示),完成则显示OK(在我的windows8和另一台win7上烧录不
正常,但dbb的win10烧录正常) (这个步骤还不需要用到网线)
2、关闭fastboot,用putty 串口登录uboot,输入pri显示相关信息,根据海思SDK里的文档,在WINDOWS端打开 tftp.exe即可(相当于 tftp server),然后在 uboot里按文档烧录
内核
mw.b 0x82000000 0xff 0x1e00000;tftp 0x82000000 uImage;sf probe 0;sf erase 0x100000 0x1e00000;sf write 0x82000000 0x100000 0x1e00000
3、同样界面,烧录根文件系统到相应地址(注意烧录的地址,拷贝root.jffs2文件到windows8当前文件夹):
mw.b 82000000 ff b00000; tftp 0x82000000 root.jffs2; sf probe 0; sf erase 500000 b00000; sf write 82000000 500000 b00000
4、设置 uboot的参数:
setenv bootargs 'mem=64M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 mtdparts=hi_sfc:1M(boot),4M(kernel),11M(rootfs)'
setenv bootcmd 'sf probe 0;sf read 0x82000000 0x100000 0x400000;bootm 0x82000000'
saveenv
5、然后 uboot里,输入命令 reset,即可启动内核和根文件系统
===============================================================
五、考虑将uImage和root.jfss2两个文件合并为一个映像文件,在上述 二、生成内核kernel 的 1步骤中,make menuconfig ARCH=arm,其中 General setup -- Initial RAM
filesystem and RAM disk (initramfs / initrd) support要选中,紧接着下面一行:Initramfs source file(s)要指定目录 /rootbox
编译内核出错
/home/xyp/Hi3520D_SDK_V1.0.4.0/osdrv/kernel/linux-3.0.y/usr/Makefile:58: *** multiple target patterns. Stop.
make: *** [usr] Error 2
经查 http://blog.csdn.net/andoubi/article/details/52052186,执行以下语句
root@ubuntu:/home/xyp/Hi3520D_SDK_V1.0.4.0/osdrv/kernel/linux-3.0.y# rm -rf usr/.initramfs_data.cpio.d
再重新编译
root@ubuntu:/home/xyp/Hi3520D_SDK_V1.0.4.0/osdrv/kernel/linux-3.0.y# make uImage ARCH=arm CROSS_COMPILE=arm-hisiv100nptl-linux-
成功!