移植Linux系统至Tiny4412开发板,这属于一个具备系统性的工程,此工程要求开发者,对硬件平台有着清晰认识,对引导流程有着清晰认识,对内核配置有着清晰认识。该过程并非单纯代码搬运,更是涉及针对特定硬件资源进行了深度适配,进行了优化。对于嵌入式开发者来讲,掌握完整移植流程是从理论迈向实践很关键的一步。

如何为tiny4412准备交叉编译工具链

编译针对特定硬件平台的软件,首先得要有一个与之匹配的交叉编译工具链,针对于基于ARM Cortex -- A9的Tiny4412而言,通常会选择arm -- linux -- gnueabihf -或者arma -- none -- linux -- gnueabi -系列的工具链,你能够从Linaro或者厂商所提供的资源当中获取预编译版本的工具链 。

linux移植lvgl_linux移植步骤tiny4412_linux系统移植的作用

取到之后,要于开发主机那儿解压还要设置环境变量,把工具链包含的bin目录加到PATH里头。借着运行“arm-linux-gnueabihf-gcc -v”命令能够验证安装有没有成功。一个配置无误的工具链是后续全部编译事项的根基,它保证了所生成的目标文件能在开发板的ARM架构那里正确运作。

如何获取并配置tiny4412的U-Boot引导程序

连接硬件跟操作系统的桥梁是U -- Boot ,最先从官方仓库或者友善之臂准备的资源里拿到针对Tiny4412的U -- Boot源码 。解压之后进入源码目录 ,运用“make tiny4412_config”命令去加载默认的板级配置文件 。

linux移植步骤tiny4412_linux移植lvgl_linux系统移植的作用

核心在于明确指定交叉编译工具链的前缀,在配置的文件里去确认像内存地址、串口设备以及启动此类关键的参数才是配置所要做的,随后执行“make”命令开展编译,以此去生成最为终呈现的u -- boot.bin镜像,且这个二进制的文件会借助SD卡或者USB工具被烧写至开发板特定的存储区域当中 。

如何编译适用于tiny4412的Linux内核

移植的核心在于内核编译,要获取官方的或者经过适配的Linux内核源码,就像使用linux -- 3.x版本或者4.x版本那样,进入内核源码根目录之后,能够先用“make tiny4412_defconfig”去加载一个预设的默认配置。

借助“make menuconfig”进入交互形式的配置界面当中。于此处呢,得依据Tiny4412的实际硬件状况这样子中标linux,要保证CPU类型是被选为ARM的、系统类型是Samsung Exynos的,并且要正确地启用NAND Flash、SD卡、USB、网卡以及LCD显示屏等重要设备的驱动。等到这项配置完成之后呀,运用交叉编译命令去做编译,进而得到zImage内核镜像以及与之对应的设备树文件。

如何为tiny4412制作根文件系统

挂载于内核启动后的首个文件系统是根文件系统,其涵盖了系统运行所需的命令、库以及配置文件。含有一套精简Unix工具集,能产出的常用构建工具是BusyBox。先下载BusyBox并予以配置,指定交叉编译器,之后编译并安装至某个目录。

必需要在这个目录里头,依靠手工的方式去创建那些必要的系统目录,像是etc、dev、proc等等,接着把关键的初始化脚本放置进去,所谓关键的初始化脚本就是inittab和rcS那样的。并且,还有额外需要做的事情,那就是从工具链那里复制动态链接库到lib目录的下面。最后呢,要使用制作工具把这个目录打包成为像是rootfs.img这样适合开发板格式的文件系统镜像 。

linux移植步骤tiny4412_linux系统移植的作用_linux移植lvgl

如何将镜像烧写到tiny4412开发板

把编译好的软件实体部署到硬件的这样一个过程,是镜像烧写linux移植步骤tiny4412,常用的通过SD卡展开烧写启动的办法红旗linux5.0,首先,把制作成启动卡所需的U-Boot镜像,借助dd命令或是特定的烧写工具,写入到SD卡最前端的扇区 。

编译完成的内核镜像zImage,与设备树文件exynos4412 -- tiny4412.dtb,还有根文件系统镜像rootfs.img,统统都要复制到SD卡的FAT分区。把开发板的启动设置成从SD卡启动,给开发板上电后U -- Boot会自行运转,这个时候能够经过U -- Boot的命令行,采用“mmc write”等命令分别把各个镜像烧写到开发板的eMMC或者NAND Flash的相应分区中。

如何在tiny4412上调试启动问题

linux系统移植的作用_linux移植步骤tiny4412_linux移植lvgl

系统头一回启动的时候常常会遭遇失败,串口终端可是首要的用于调试的工具。借助串口线把开发板跟电脑连接起来,运用终端软件去查看启动日志。要是在U -- Boot阶段就停下来了,有可能是DDR内存初始化存在不正确的情况或者U -- Boot镜像出现了损坏,这就需要去检查板级配置以及烧写位置。

一旦内核出现卡住的状况,常常情况下其缘由在于设备树文件跟硬件间存在不匹配的情形,或者是关键驱动出现缺失的问题,就要去核对设备树里针对内存、时钟以及引脚的多项定义 ,当内核顺利启动之后要是提示没办法挂载根文件系统,那就得去认真检查内核命令行里参数中的“root=”的设置是不是准确无误,以及文件系统的格式是不是能够被内核予以支持,一步一步去排查梳理这些要点内容linux移植步骤tiny4412,这乃是真正能够解除问题的关键之处。

当你把Linux挪动到像Tiny4412这般开发板之际,碰到最为棘手启动难题是啥,最后又是怎样解决的呢,欢迎于评论区去分享你的经验以及教训,要是觉着本文对你具有帮助,请点赞并且分享给更多有需要的朋友 。

Tagged:
Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复