Bootloader移植上-作业

1. 实现移植编译u-boot并烧写到板子上

判断通关:
上传效果截图完成作业

1.1 编译u-boot





编译完成

1.2 制作SD卡启动盘

a) 将sd_fusing文件夹拷贝到Linux下,将u-boot-fs4412.bin也拷贝到该文件夹下。
b) 将SD卡插入电脑并识别到ubuntu18.04 x64下(如不能识别先将该卡识别到windows下进行格式化操作)。
c) 进入sdfuse_d执行如下操作

    $ sudo ./mkuboot.sh /dev/sdb

1.3 u-boot的烧写

a) 把SD卡插到开发板,调整拨码开关调至到 1000(SD卡启动),开机。发现正常启动。进入裸机交互模式。

b) 烧写uboot到EMMC
在终端上执行下面的代码:

emmc open 0                         //打开EMMC 0#
tftp 41000000 u-boot-fs4412.bin     //TFTP协议传输.bin文件到内存的0x41000000地址
mmc write 41000000 0 0x420          //将0x41000000内存处的内容写入 emmc的0地址处,
                                    //写入大小为0x420*512 byte = 528k 
                                    //实际u-boot-fs4412.bin大小为517.2k 大于此值即可
emmc close 0                        //关闭EMMC 0#


c) 拔掉SD卡,重新上电开机,分别尝试交互模式和自启动模式,结果均正常。

1.4 内核和文件系统的烧写

a) 拷贝 ramdisk.img 到虚拟机/tftpboot目录下
b) 烧写内核镜像到EMMC上

# tftp   41000000  uImage
# movi  write  kernel  41000000

c) 烧写设备树文件到EMMC上

# tftp  41000000 exynos4412-fs4412.dtb
# movi  write  dtb  41000000

d) 烧写文件系统镜像到EMMC上

# tftp   41000000  ramdisk.img
# movi  write  rootfs  41000000  300000

e) 设置启动参数

# setenv bootcmd movi read kernel 41000000\;movi read dtb 42000000\;movi read rootfs 43000000 300000\;bootm 41000000 43000000 42000000
# saveenv

f) 重新启动开发板,u-boot自动加载、执行内核

启动正常 挂载正常。

1.5 恢复tftp启动,NFS挂载:

# setenv bootcmd tftp 41000000 uImage\;tftp 42000000 exynos4412-fs4412.dtb\;bootm 41000000 - 42000000
# saveenv