内核移植

半导体厂商会从Linux内核官网下载某个版本,将其移植到自己的CPU上linux内核移植,测试成功后才会将其开放给该半导体厂商的CPU开发者。开发者下载其提供的Linux内核,之后将其移植到自己的产品上。

1.NXP官方开发板Linux内核编译测试

编译内核之前须要先在ubuntu上安装lzop库,另外红帽子linux下载,图形化配置工具还须要ncurses库支持,安装为:

sudo apt-get install lzop
sudo apt-get install build-essential 
sudo apt-get install libncurses5-dev

在Ubuntu中新建一个文件夹linux内核移植,之后将linux内核压缩包拷贝到文件夹中并解压,解压为:

tar -vxf linux-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2

NXP官方原版Linux源码早已放在了开发板光碟中,路径为:1、例程源码->4、NXP官方原版Uboot和Linux->linux-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2,可以使用“mv”对其重命名,我这里将其重命名为“linux-imx-rel_imx_4.1.15_2.1.0_ga_alientek”,命令如下:

mv linux-imx-rel_imx_4.1.15_2.1.0_ga linux-imx-rel_imx_4.1.15_2.1.0_ga_alientek

1.1配置并编译Linux内核

编译Linux内核之前要先配置Linux内核。每位板子都有其对应的默认配置文件,这种配置文件保存在“arch/arm/configs”目录中。imx_v7_defconfig和imx_v7_mfg_defconfig都可以作为NXP官方开发板IMX6ULLEVK的默认配置文件,而且通常都使用前者,由于前者编译下来的zImage可以通过NXP官方提供的MfgTool工具进行烧录

步入到Ubuntu中的Linux源码根目录下,执行如下命令:

#编译之前先清理
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean 	
#配置Linux内核
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- imx_v7_mfg_defconfig 
#编译Linux内核
make -j4

编译完成后,我们会得到两个重要文件:

1.2Linux内核启动测试

将生成的zImage和imx6ull-14x14-evk.dtb这两个文件下载到IMX6ULL-ALPHA开发板上进行测试。

首先检测uboot中的环境变量bootargs

console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw

将上一小节编译下来的zImage和imx6ull-14x14-evk.dtb复制到Ubuntu中的tftp目录下美国linux主机,由于我们要在uboot中使用tftp命令将其下载到开发板中,

cp arch/arm/boot/zImage ../../../tftpboot/ 
cp arch/arm/boot/dts/imx6ull-14x14-evk.dtb ../../../tftpboot/

拷贝完成之后就可以测试了,启动开发板,步入uboot命令行模式,之后输入如下命令将zImage和imx6ull-14x14-evk.dtb下载到开发板中并启动:

tftp 80800000 zImage
tftp 83000000 imx6ull-14x14-evk.dtb
bootz 80800000 - 83000000

启动运行

bootz 80800000 - 83000000

1.3根文件缺位错误

Linux内核启动之后是须要根文件系统的,根文件系统存在那里是由uboot的bootargs环境变量指定,bootargs会传递给Linux内核作为命令行参数。

root=/dev/mmcblk1p2,也就是说根文件系统储存在/dev/mmcblk1p2中,也就是EMMC的分区2中。这是由于正点原子的EMMC版本开发板出厂的时侯早已EMMC的分区2中烧录好了根文件系统,所以设置root=/dev/mmcblk1p2。

假如我们没有根文件系统,启动以后会报错

Kernelpanic-notsyncing:VFS:Unabletomountrootfsonunknown-block(0,0)

就是提示内核崩溃,由于VFS(虚拟文件系统)不能挂载根文件系统,由于根文件系统目录不存在。

本文原创地址://gulass.cn/ngfkfblnhbyc.html编辑:刘遄,审核员:暂无