- 准备linux源文件——从NXP官网找到IM6ULL开发板linux相关资料
1)http://git.freescale.com/git/cgit.cgi/imx/linux-imx.git/
2)按图示选择rel_imx_4.1.15.2.1.0_ga.tar.bz2进行下载
- 解压完linux文件,在目录顶层创建shell脚本(名字自定义),运行脚本文件,即开始编译。
#!/bin/sh
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- imx_v7_mfg_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- all -j4
编译完成,显示zImage已制作成功
......
LD [M] fs/fat/msdos.ko
LD [M] fs/configfs/configfs.ko
LD [M] fs/isofs/isofs.ko
LD [M] fs/udf/udf.ko
LD [M] fs/nls/nls_iso8859-15.ko
LD [M] lib/crc-ccitt.ko
LD [M] lib/crc-itu-t.ko
LD [M] lib/libcrc32c.ko
LD [M] sound/core/snd-hwdep.ko
LD [M] sound/core/snd-rawmidi.ko
LD [M] lib/crc7.ko
LD [M] sound/usb/snd-usb-audio.ko
LD [M] sound/usb/snd-usbmidi-lib.ko
AS arch/arm/boot/compressed/piggy.lzo.o
LD arch/arm/boot/compressed/vmlinux
OBJCOPY arch/arm/boot/zImage
Kernel: arch/arm/boot/zImage is ready
把zImage和设备树文件imx6ull-14x14-evk-emmc.dtb 拷贝到ubuntu tftp共享目录下。
3. 开发板通电,使用tftp命令分别读取zImage和设备树文件,然后启动内核
1)在使用tftp命令之前先ping一下tftp服务器(即ubuntu的ip地址)环境,出现下面的提示表示开发板与tftp服务器之间的网络通信OK.
=> ping 192.168.1.55
Using FEC1 device
host 192.168.1.55 is alive
2)把zImage加载到内存地址0x80800000
=> tftp 80800000 zImage
Using FEC1 device
TFTP from server 192.168.1.55; our IP address is 192.168.1.50
Filename 'zImage'.
Load address: 0x80800000
Loading: #################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#
1 MiB/s
done
Bytes transferred = 6680408 (65ef58 hex)
3)把设备树文件加载到内存地址0x83000000
=> tftp 83000000 imx6ull-14x14-evk-emmc.dtb
Using FEC1 device
TFTP from server 192.168.1.55; our IP address is 192.168.1.50
Filename 'imx6ull-14x14-evk-emmc.dtb'.
Load address: 0x83000000
Loading: ###
1 MiB/s
done
Bytes transferred = 36093 (8cfd hex)
4)出现下面的提示,启动内核成功,但因为没有根文件系统,无法进入linux系统。
=> bootz 80800000 - 83000000
Kernel image @ 0x80800000 [ 0x000000 - 0x65ef58 ]
## Flattened Device Tree blob at 83000000
Booting using the fdt blob at 0x83000000
Using Device Tree in place at 83000000, end 8300bcfc
Starting kernel ...
Booting Linux on physical CPU 0x0
Linux version 4.1.15 (glen@ubuntu) (gcc version 4.9.4 (Linaro GCC 4.9-2017.01) ) #1 SMP PREEMPT Wed Jan 8 22:55:52 CST 2020
......
mmc1: MAN_BKOPS_EN bit is not set
gpio_dvfs: disabling
can-3v3: disabling
ALSA device list:
#0: wm8960-audio
VFS: Cannot open root device "(null)" or unknown-block(0,0): error -6
Please append a correct "root=" boot option; here are the available partitions:
0100 65536 ram0 (driver?)
0101 65536 ram1 (driver?)
0102 65536 ram2 (driver?)
0103 65536 ram3 (driver?)
0104 65536 ram4 (driver?)
0105 65536 ram5 (driver?)
0106 65536 ram6 (driver?)
0107 65536 ram7 (driver?)
0108 65536 ram8 (driver?)
0109 65536 ram9 (driver?)
010a 65536 ram10 (driver?)
010b 65536 ram11 (driver?)
010c 65536 ram12 (driver?)
010d 65536 ram13 (driver?)
010e 65536 ram14 (driver?)
010f 65536 ram15 (driver?)
b300 15558144 mmcblk0 driver: mmcblk
b301 3275776 mmcblk0p1 abf077bd-01
b302 1 mmcblk0p2
mmc1: new HS200 MMC card at address 0001
mmcblk1: mmc1:0001 8GTF4R 7.28 GiB
b303 5727744 mmcblk0p3 abf077bd-03
mmcblk1boot0: mmc1:0001 8GTF4R partition 1 4.00 MiB
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
random: nonblocking pool is initialized