系统移植学习(一)

文章介绍了Linux驱动开发中系统移植的过程,包括先移植bootloader如U-Boot,然后是Linux内核,最后是根文件系统。U-Boot作为启动程序,负责初始化DDR并加载内核。对于512MB+8GBEMMC核心板,提供了编译U-Boot的命令示例,并提到了通过shell脚本来简化编译过程。此外,还提到了如何在U-Boot命令行中查看帮助信息。
摘要由CSDN通过智能技术生成

在进行Linux驱动开发之前需要先将Linux系统移植到开发板上。
如果学习过UCOS/FreeRTOS应该知道,UCOS/FreeRTOS移植就是在官方的SDK包里面找一个和自己所使用的芯片一样的工程编译一下,然后下载到开发板就可以了。

但是Linux的移植要复杂的多,在移植Linux之前需要先移植一个bootloader代码,这个bootloader代码用于启动Linux内核,bootloader有很多,常用的就是U-Boot。
移植好U-Boot以后再移植Linux内核,移植完Linux内核以后还不能正常启动,还需要再移植一个根文件系统(rootfs),根文件系统里面包含了一些最常用的命令和文件。

所以U-Boot、Linux kernel和rootfs构成了一个完整的Linux系统。

U-Boot简介

Linux系统要启动就必须需要一个bootloader程序,也就是说芯片上电以后先运行一段bootloader程序。
这段bootloader程序会先初始化DDR外设,然后将Linux内核从flash(NAND,NORA FLASH,SD,MMC等)拷贝到DDR中,最后启动Linux内核。

bootloader实际工作要求复杂得多,但它最主要的工作就是启动Linux内核,bootloader和Linux内核的关系就像PC上的BIOS和Windows一样。

U-Boot全称Universal Boot Loader,是一个遵循GPL协议的开源软件,uboot是一个裸机代码,可以看作是一个裸机综合例程。现在的uboot已经支持液晶屏、网络、USB等高级功能。

uboot 官网为 http://www.denx.de/wiki/U-Boot/

U-Boot初次编译

创建目录新建一个个名为“alientek_uboot”的文件夹用于存放正点原子提供的 uboot 源码。alientek_uboot文件夹创建成功以后使用 FileZilla 软件将正点原子提供的 uboot 源码拷贝到此目录中。

使用命令对其进行解压缩

tar -vxjf uboot-imx-2016.03-2.1.0-g8b546e4.tar.bz2

如果使用的是512MB+8GB的EMMC核心板,使用如下命令来编译对应的uboot:

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mx6ull_14x14_ddr512_emmc_defconfig
make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j12
  • ARCH=arm设置目标为arm架构,CROSS_COMPILE指定使用的交叉编译器
  • 第一条命令相当于make distclean,目的是清除工程,在第一次编译的时候最好清理一下工程。
  • 第二条指令相当于make mx6ull_14x14_ddr512_emmc_defconfig,用于配置uboot,配置文件为mx6ull_14x14_ddr512_emmc_defconfig。
  • 最后一条指令相当于“make -j12”,使用12核来编译。

编译完成以后uboot源码多了一些文件,u-boot.bin就是编译出来的uboot二进制文件。uboot是个裸机程序,因此需要在其前面加上头部(IVT、DCD等数据)才能在I.MX6U上执行,u-boot.imx就是添加头部以后的u-boot.bin,u-boot.imx就是我们最终要烧写到开发板中的uboot镜像文件。

每次编译 uboot 都要输入一长串命令,为了简单起见,我们可以新建一个 shell 脚本文件,将这些命令写到 shell 脚本文件里面,然后每次只需要执行 shell 脚本即可完成编译工作。

U-Boot命令使用

进入 uboot 的命令行模式以后输入“help”或者“?”,然后按下回车即可查看当前 uboot 所支持的命令。

输入“help(或?) 命令名”既可以查看命令的详细用法
以bootz为例,查看booz命令的用法

? bootz 或 help bootz
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

饼干饼干圆又圆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值