1.在Linux/IMX6ULL/linux目录下新建nxplinux目录
1.拷贝linux-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2文件到linux/IMX6ULL/linux/nxplinux目录下解压,如下图所示:
2.进入解压后的目录,查看该目录下的文件如下图所示:
3.查看linux内核源码配置文件
编译Linux内核之前需要先配置Linux内核。默认配置文件保存在arch/arm/configs目录下,进入此目录查看此目录下的配置文件如下图所示:
由上图可知imx_v7_defconfig和imx_v7_mfg_defconfig都可以作为NXP官方I.MX6ULL EVK开发板配置文件,建议使用imx_v7_mfg_defconfig这个配置文件,这个配置文件不仅支持I.MX6UL这款芯片同时此配置文件编译出来的zImage可以通过NXP官方提供的MfgTool工具烧写。
4.查看linux内核源码设备树文件
Linux内核默认的设备树文件保存在arch/arm/boot/dts目录下,进入此目录查看该目录下的设备树文件如下图所示:
设备树文件使用imx6ull-14x14-evk-emmc.dts文件。
2.编译NXP官方提供Linux内核源码
使用如下三条指令编译Linux内核源码,如下图所示:
编译完成如下图所示,查看编译生成的zImage文件和设备树文件,如下图所示:
由上图可知Linux内核编译完成后会在arch/arm/boot目录下生成zImage镜像文件,如果使用设备树则会在arch/arm/boot/dts目录下生成.dtb(设备树)文件imx6ull-14x14-evk-emmc.dtb就是NXP官方I.MX6ULL EVK开发板对应的设备树文件,编译完成后得到以下两个文件
Linux内核镜像文件:zImage文件
NXP官方I.MX6ULL EVK开发板对应的设备树文件:imx6ull-14x14-evk-emmc.dtb
3.Linux内核启动测试
1.将上面编译生成的Linux内核镜像文件zImage和设备树文件imx6ull-14x14-evk-emmc.dtb拷贝到Ubuntu中的tftp目录下,在uboot中使用tftp命令将这两个文件下载到ALIENTEK-ALPHA开发板中,拷贝命令如下图所示:
2.启动开发板,进入到uboot命令行模式,通过网线将ALIENTEK-ALPHA开发板 ENET2接口连接到路由器,测试网络是否正常,如下图所示:
3.下载Linux镜像文件zImage和设备树文件imx6ull-14x14-evk-emmc.dtb到ALIENTEK-ALPHA开发板,如下图所示:
4.启动Linux内核,如下图所示:
出现上述错误原因是因为缺失根文件系统,Linux内核启动以后是需要根文件系统的,根文件系统存储在哪里是由uboot中的bootargs环境变量指定,bootargs会传递给Linux内核作为命令行参数。如果不设置根文件系统路径就会出现上述错误,内核崩溃,因为VFS(虚拟文件系统)不能挂载根文件系统。解决上述错误需要在uboot中设置bootargs环境变量指定根文件系统的存储路径。