本文以ubuntu16、MobaXterm超级终端,以及fs6818开发板为例
准备移植
- 在家目录下创建bootloader。
mkdir ~/bootloader
- 拷贝压缩文件到bootloader中。
在这我用到共享文件夹,也可以直接从window下拖到Ubuntu下,压缩包要放在ubuntu下解压。
cp /共享文件夹路径/u-boot-2014.07.tar.bz2 ~/bootloader
压缩包可以去官网下载,我在这里放一个我用的。
链接: https://pan.baidu.com/s/1UNuF7NqKWp3acLBF74v_bg?pwd=fjbs
提取码:fjbs
3、解压缩
tar -vxf u-boot-2014.07.tar.bz2
开始移植
- 配置交叉编译工具链
打开u-boot源码顶层目录的Makefile
vi Makefile
修改内容
修改为
- 删除u-boot源码中间文件
make disclean/clean
个人理解:diaclean与clean的区别就是一个清除的干净点,一个没有那么干净,我用的clean完全可以。
- 配置u-boot源码支持开发板(我用的是fs6818)
我这有一个优化过后的fs6818的u-boot源码
链接: https://pan.baidu.com/s/1hGH-xp34GxgDcCLAJdX9cw?pwd=ejhg
提取码:ejhg
make <board_name>_config //通用
make fs6818_config
如果打印以下信息表示成功:
Configuring for fs6818 board...
如果打印以下信息表示u-boot不支持此开发板:
make: *** No rule to make target `maxiaoli_config'. Stop.
make: *** [maxiaoli_config] Error 1
- 编译u-boot源码,生成ubootpak.bin
make/make all (编译时间较长)
若编译出现以下问题
打开Makefile,修改:
- 将生成的ubootpak.bin文件下载到开发板中,测试是否可以用。
我用的超级终端:(超级终端使用方法自行学习)
链接:https://pan.baidu.com/s/1dpB2yTFgv9NMtlRbefx5sw?pwd=6qbc
提取码:6qbc
通过SD卡的方式启动uboot,进入FS6818#的界面
b. 拷贝 ubootpak.bin到tftpboot路径下
cd bootloader/u-boot-2014.07-fs6818
cp ubootpak.bin ~/tftpboot
c.将ubootpak.bin使用tftp命令烧写到内存中
d.updata mmc
update_mmc <dev no> <type> <mem> <addr> <length>
- type : 2ndboot | boot | raw | part
<dev no>:flash设备编号 EMMC:2
<type>:类型 2ndboot
<mem>:uboot在内存中的起始地址,以字节为单位
<addr>:flash的起始地址:以块为单位
<length>:往flash中下载多少块空间
Bytes transferred = 352296 (56028 hex)上一步烧写大小,要留够空间
一块的大小是512字节
length的大小 > 352296 / 512
fastboot=flash=mmc,
2:ubootpak:2nd:0x200,0x78000;
flash=mmc,2:2ndboot:2nd:0x200,0x4000;
在超级终端输入命令
打印以下信息表示成功:
head boot dev = 2
update mmc.2 type 2ndboot = 0x200(0x1) ~ 0x78000(0x3c0): Done
e.测试是否更新ubootpak.bin到EMMC中
开发板断电,设置拨码开关,切换到EMMC模式。
开发板重新上电。