目录
1. 从EMMC启动Linux内核
从EMMC中启动Linux内核的前提是EMMC中烧写了系统,使用mfgtool工具烧写ALIENTEK-ALPHA开发板提供的系统,由于ALIENTEK-ALPHA(EMMC版本)开发板出厂已经将zImage和设备树文件保存在EMMC中,因此可以直接读取测试。
1.1. 查看EMMC中是否存在系统
1. 查看EMMC中是否存在系统,首先需要知道系统放在在EMMC中哪个分区里面,EMMC分了3个分区:第一个分区存放uboot(mmcb1k1p1);第二个分区被格式化为fat文件系统存放zImage和设备树文件(mmcb1k1p2);第三个分区存放根文件系统(mmcb1k1p3)。使用命令mmc dev 1先将设备切换到EMMC,结果如下图所示:
2. 使用命令fatls mmc 1:1查看EMMC分区1里面的文件,结果如下图所示:
从上图可以看出EMMC分区1中存放zImage和设备树这两个文件,因此我们可以测试新移植的uboot能否启动Linux内核。
1.2. 下载zImage镜像文件和设备树文件到DDR中
1.使用fatload mmc 1:1 0x80800000 zimage将zimage镜像文件下载到DDR的0x80800000处,结果如下图所示:
2.使用fatload mmc 1:1 0x83000000命令将设备树文件下载到DDR的0x83000000处,结果如下图所示:
1.3. 启动Linux内核
使用bootz 0x80800000 - 0x83000000命令启动Linux内核,结果如下图所示:
Linux kernel启动成功。
2. 从网络启动Linux内核
2.1. 拷贝Linux镜像和设备树文件到tftpboot目录
可以设置从网络启动Linux内核,就是将Linux镜像文件、设备树和根文件系统放到Ubuntu下某个指定的文件夹中,这样每次重新编译Linux内核或这某个Linux驱动,只需要使用cp命令将其拷贝到这个指定的文件夹中即可,这样就不用频繁的烧写EMMC加快开发速度。可以通过nfs或者tftp从Ubuntu中下载zImage镜像文件和设备树文件,根文件系统也可以通过nfs挂载。从网络启动Linux内核是使用tftp从Ubuntu中下载zImage和设备树文件,将zImage和设备树文件存放到Ubuntu下的tftp目录中。tftp目录中存放的zImage和设备树文件如下图所示:
2.2. 下载Linux镜像和设备树文件到DDR中
1.将ALIENTEK-ALPHA开发板ENET2网络接口连接和Ubuntu主机连接到同一个路由器,打开SecureCRT软件,测试ENET2网络,测试过程如下图所示:
2.使用tftp 80800000 zImage命令将Linux镜像文件下载到DDR中,测试结果如下图所示:
使用tftp命令从Ubuntu中下载文件的时候会出现如上图所示的错误提示“TFTP error: ‘Permission denied’ (0)”这样的错误提示,提示没有权限,出现这个错误一般有两个原因:
①、在Ubuntu中创建 tftpboot目录的时候没有给予tftboot相应的权限。
②、tftpboot目录中要下载的文件没有给予相应的权限。
针对上述两个问题,使用命令“chmod 777 xxx”来给予权限,其中“xxx”就是要给予权限的文件或文件夹。 更改tftpboot目录即目录下文件的权限操作如下图所示:
设置完tftpuboot目录及目录下文件权限后,重新使用tftp 80800000 zImage命令下载Linux镜像文件到DDR中,结果如下图所示:
3.使用tftp 83000000 imxull-14x14-emmc-4.3-800x400-c.dtb命令将设备树文件下载到DDR中,测试结果如下图所示:
2.3. 启动Linux内核
使用bootz 0x80800000 - 0x83000000命令启动Linux内核,启动过程如下图所示:
内核启动完成后,观察ALIENTEK-ALPHA开发板4.3寸LCD显示屏显示正点原子Log,如下图所示:
3. 从网络启动Linux内核
四篇博文介绍了将uboot移植到ALIENTEK-ALPHA开发板的过程,总结下uboot的移植过程:做Linux开发板的厂商基本上都是参考半导体厂商的demo板,半导体厂商会在他们官方的开发板上移植好uboot、Linux kernel和rootfs等,最终制作成BSP包提供给用户,而且此BSP包也在不断更新,因此我们移植uboot时通常都是基于官方的demo板子进行改动添加自己的板子,一般uboot移植需要解决串口、NAND、EMMC、SD卡、网络、USB和LCD驱动,uboot主要作用就是启动Linux内核,因此不需要考虑太多的外设驱动。在uboot中添加自己的板子信息,对照半导体厂商的demo板子根据自己的实际情况修改uboot中的驱动适配自己的板子。
总结下移植uboot时都需要修改那些文件,修改的文件如下图所示(图中灰色部分为NXP官方mx6ullevk开发板的相关文件,黄色部分为复制官方灰色文件在此文件上修改适配ALIENTEK-ALPHA开发板):