NXP官方Linux内核启动测试

一.   NXP官网Linux内核测试

本文对上一篇文章编译好的NXP官网提供的 Linux内核与设备树文件,进行测试。是否可以成功启动开发板。

本文继上一篇文章的学习,地址如下:

NXP官方Linux内核编译-CSDN博客


 

二.  Linux内核与设备树文件的启动测试

在上一小节我们已经得到了 NXP 官方 I.MX6ULL EVK 开发板对应的 zImage imx6ull-14x14-evk.dtb 这两个文件。这两个文件的生成目录如下:

Linux 内核镜像文件:/arch/arm/boot/zImage。
NXP官方 I.MX6ULL-EVK开发板对应的设备树文件:/arch/arm/boot/dts/imx6ull-14x14-evk.dtb。

1.   通过 tftp服务下载

使用 tftp服务的前提是:

①  开发板或 ubuntu系统都已经搭建好了 tftp 服务。

② 开发板在uboot命令模式下,可以ping通 ubuntu系统。

(1) 首先,将 zImageimx6ull-14x14-evk.dtb 拷贝到 ubuntu之前设置好的 tftp服务的文件目录下。我这里的 ubuntu系统操作如下:

wangtian@wangtian-virtual-machine:~/zhengdian_Linux/linux/kernel/linux-imx-rel_imx_4.1.15_2.1.0_ga$ cp ./arch/arm/boot/zImage /home/wangtian/linux/tftp_file/

wangtian@wangtian-virtual-machine:~/zhengdian_Linux/linux/kernel/linux-imx-rel_imx_4.1.15_2.1.0_ga$ cp ./arch/arm/boot/dts/imx6ull-14x14-evk.dtb /home/wangtian/linux/tftp_file/

(2)  开发板上电,进入uboot命令模式,下载 zImage到开发板:

=> tftp 0x80800000 zImage
Using FEC1 device
TFTP from server 192.168.1.66; our IP address is 192.168.1.50
Filename 'zImage'.
Load address: 0x80800000
Loading: #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 ########################################################
	 2.5 MiB/s
done
Bytes transferred = 5582720 (552f80 hex)
=> 

下载 imx6ull-14x14-evk.dtb 设备树文件:

=> tftp 0x83000000 imx6ull-14x14-evk.dtb
Using FEC1 device
TFTP from server 192.168.1.66; our IP address is 192.168.1.50
Filename 'imx6ull-14x14-evk.dtb'.
Load address: 0x83000000
Loading: ###
	 1.9 MiB/s
done
Bytes transferred = 35969 (8c81 hex)
=> 

2.   启动 Linux内核与设备树文件

启动 Linux内核与设备树文件,上面的工作完成后,进入 uboot 命令行模式,操作如下:

Kernel image @ 0x80800000 [ 0x000000 - 0x552f80 ]
## Flattened Device Tree blob at 83000000
   Booting using the fdt blob at 0x83000000
   Using Device Tree in place at 83000000, end 8300bc80

Starting kernel ...

Booting Linux on physical CPU 0x0
Linux version 4.1.15 (wangtian@wangtian-virtual-machine) (gcc version 4.9.4 (Linaro GCC 4.9-2017.01) ) #1 SMP PREEMPT Tue Sep 26 19:46:04 CST 2023
CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr=10c5387d
CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
Machine model: Freescale i.MX6 ULL 14x14 EVK Board

.....

010e           65536 ram14  (driver?)
010f           65536 ram15  (driver?)
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

上面的 log信息可以看出,此时 Linux 内核已经启动了。Linux 内核的编译时间是 2023年9月26号19:46分,说明是刚不久前编译的。

根文件系统缺失错误:

在上面的 Log信息最后几行中如下:
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
也就是提示内核崩溃,因为 VFS( 虚拟文件系统 ) 不能挂载根文件系统,因为根文件系统目 录不存在。即使根文件系统目录存在,如果根文件系统目录里面是空的依旧会提示内核崩溃。 这个就是根文件系统缺失导致的内核崩溃,但是内核是启动了的,只是根文件系统不存在而已。
Linux 内核启动以后是需要根文件系统的,根文件系统存在哪里是由 uboot bootargs 环境 变 量 指 定 , bootargs 会 传 递 给 Linux 内 核 作 为 命 令 行 参 数 。

猜你喜欢

转载自blog.csdn.net/wojiaxiaohuang2014/article/details/133322677