uboot移植好后,然后就是测试启动Linux内核了,正点原子讲了2种方法,一是通过网络启动,二是通过emmc(nand)启动;既然可以从EMMC启动,那么也可以从SD卡启动()。
针对NXP imx6ull-14x14-emmc的uboot Linux内核启动测试
1.通过EMMC加载启动
- 前提是已经通过(mfgtool)工具把Linux内核编译好的zImage和dtb文件下载到EMMC里面了。
- (可以跳过)mmc dev 1 //切换到EMMC;
- 使用
ls mmc 1:1
或者fatls mmc 1:1
查看文件是否存在(注意emmc分区位置);
=> ls mmc 1:1
6786368 zimage
38823 imx6ull-14x14-emmc-4.3-480x272-c.dtb
38823 imx6ull-14x14-emmc-4.3-800x480-c.dtb
38823 imx6ull-14x14-emmc-7-800x480-c.dtb
38823 imx6ull-14x14-emmc-7-1024x600-c.dtb
38823 imx6ull-14x14-emmc-10.1-1280x800-c.dtb
39655 imx6ull-14x14-emmc-hdmi.dtb
39563 imx6ull-14x14-emmc-vga.dtb
8 file(s), 0 dir(s)
- 下载 zImage和dtb文件到DDRAM,注意自己的文件名;
=> fatload mmc 1:1 80800000 zimage
reading zImage
6786368 bytes read in 222 ms (29.2 MiB/s)
=> fatload mmc 1:1 83000000 imx6ull-14x14-emmc-7-1024x600-c.dtb
reading imx6ull-14x14-emmc-7-1024x600-c.dtb
38823 bytes read in 23 ms (1.6 MiB/s)
驱动内核
=> bootz 80800000 - 83000000
## Flattened Device Tree blob at 83000000
Booting using the fdt blob at 0x83000000
Using Device Tree in place at 83000000, end 8300c7a6
Starting kernel ...
然后
[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Linux version 4.1.15-gb8ddbbc (alientek@ubuntu) (gcc version 5.3.0 (GCC) ) #1 SMP PREEMPT Wed Apr 29 17:39:59 CST 2020
[ 0.000000] CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr=10c53c7d
......
......
[ 10.063543] gpio_dvfs: disabling
[ 10.066785] can-3v3: disabling
[ 10.070107] ALSA device list:
[ 10.073141] #0: wm8960-audio
启动成功,但是没有根文件系统。
2.通过网络TFTP服务器下载启动
Ubuntu的tftp服务器一定要搭好(正点原子PDF讲了搭建方法),而且服务器的tftpboot文件夹有相应的内核文件。
tftp 80800000 zImage //从tftp服务器下载zimage
tftp 83000000 imx6ull-14x14-emmc-7-1024x600-c.dtb //从tftp服务器下载.dtb
bootz 80800000 - 83000000 //启动系统
3.通过SD卡加载启动
- 电脑插入SD卡里面拷贝内核文件;电脑提示修复,不要修复,可能会把SD卡的uboot擦除掉;
- 启动uboot,输入命令,注意SD分区位置;
ls mmc 0:1
fatload mmc 0:1 80800000 zimage
fatload mmc 0:1 83000000 imx6ull-14x14-emmc-7-1024x600-c.dtb
bootz 80800000 - 83000000
注意粘贴复制可能会有错,需要自己码一遍。