系统移植篇00:系统移植简介
在上一篇中我们学习了如何进行 I.MX6U 的裸机开发,通过 21 个裸机例程我们掌握了
I.MX6U 的常用外设。
通过裸机的学习我们掌握了外设的底层原理,这样在以后进行 Linux 驱动开发的时候就只需要将精力放到 Linux 驱动框架上,在进行 Linux 驱动开发之前肯定需要先将Linux 系统移植到开发板上去。
如果学习过 UCOS/FreeRTOS 应该知道,UCOS/FreeRTOS 移植就是在官方的 SDK 包里面找一个和自己所使用的芯片一样的工程编译一下,然后下载到开发板就可以了。
那么 Linux 的移植是不是也是这样的,下载 Linux 源码,然后找个和我们所使用的芯片一样的工程编译一下就可以了?
很明显不是的!Linux 的移植要复杂的多,在移植 Linux之前我们需要先移植一个 bootloader 代码,这个 bootloader 代码用于启动 Linux 内核,bootloader有很多,常用的就是 U-Boot。
移植好 U-Boot 以后再移植 Linux 内核,移植完 Linux 内核以后Linux 还不能正常启动,还需要再移植一个根文件系统(rootfs),根文件系统里面包含了一些最常用的命令和文件。
所以 U-Boot、Linux kernel 和 rootfs 这三者一起构成了一个完整的 Linux 系统,一个可以正常使用、功能完善的 Linux 系统。
在本篇我们就来讲解 U-Boot、Linux Kernel 和rootfs 的移植,与其说是“移植”,倒不如说是“适配”,因为大部分的移植工作都由 NXP 完成了,我们这里所谓的“移植”主要是使其能够在 I.MX6U-ALPHA 开发板上跑起来。
我们所谓的移植就是在恩智浦的智慧结晶下,通过修修改改补补来适配我们自己手中的开发板。