Linux系统移植:uboot 启动 Linux

Linux系统移植:uboot 启动 Linux

本节从 uboot 启动 Linux,我们用两种方法来启动,一种从 EMMC 读取 Linux 镜像来启动 Linux 内核,另外一种则通过局域网从 ubuntu 下读取镜像来启动

一、从 EMMC 启动 Linux 系统

EMMC 启动就是将编译出来的 Linux 镜像文件 zImage 和设备树文件保存在 EMMC中,uboot 从 EMMC 中读取这两个文件并启动,保存通过软件或者 uboot 来保存,此处开发板已经将 zImage 文件和设备树文件烧写到了 EMMC 中,所以直接读取来测试

先检查一下 EMMC 的分区 1 中有没有 zImage 文件和设备树文件

ls mmc 1:1

可以看到设备树和镜像文件:

20220219172140

然后设置 bootargs 和 bootcmd 两个环境变量来启动 linux 内核

setenv bootargs 'console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw'
setenv bootcmd 'mmc dev 1; fatload mmc 1:1 80800000 zImage; fatload mmc 1:1 83000000 imx6ull-14x14-emmc-4.3-800x480-c.dtb; bootz 80800000 - 83000000;'
saveenv

保存后重新启动 uboot,可以看到 linux 启动成功

20220219172721

开发板成功启动 linux

20220219172803

二、从网络启动 Linux 系统

设置 linux 从网络启动,就是将 linux 镜像文件和根文件系统都放到 Ubuntu 下某个指定的文件夹中,然后开发板通过 nfs 或者 tftp 从 Ubuntu 中下载 zImage 和设备树文件(根文件系统的话也可以通过 nfs 挂载,学到再说),从网络启动 linux 系统一个特点就是方便调试,修改 linux 后不用下载到 emmc 再调试,直接拷贝到 linux 进行调试

首先将 zImage 和设备树文件放到 Ubuntu 下的 tftp 目录中,然后将文件权限都设置成 777

tftp 操作参考之前写的 uboot 常用指令里面的网络操作指令:Linux系统移植:U-Boot常用指令(上)

20220219180920

然后设置服务器 ip 以及 bootargs 和 bootcmd 这两个环境变量读取对应文件

setenv serverip 192.168.10.66
setenv bootargs 'console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw'
setenv bootcmd 'tftp 80800000 zImage; tftp 83000000 imx6ull-alientek-emmc.dtb; bootz 80800000 - 83000000'
saveenv

重新启动 uboot,可以看到 uboot 加载文件后成功启动 linux:

20220219183927

到此移植 uboot 基本完成,一般 uboot 只要解决串口、NAND、EMMC 或 SD 卡、网络和 LCD 驱动就行了,主要目的是启动 Linux 内核,不需要考虑太多的外设驱动

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Top嵌入式

投喂个鸡腿

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

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

打赏作者

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

抵扣说明:

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

余额充值