Linux系统移植:uboot 启动 Linux

Posted 嵌入式up笔记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

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

然后设置 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 启动成功

开发板成功启动 linux

二、从网络启动 Linux 系统

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

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

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

然后设置服务器 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:

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

以上是关于Linux系统移植:uboot 启动 Linux的主要内容,如果未能解决你的问题,请参考以下文章

嵌入式linux核心课程 2.uboot和系统移植 2.1.uboot和系统移植第1部分-uboot学习前传

嵌入式linux开发uboot移植——uboot启动内核的机制

Linux学习 :Uboot 移植

嵌入式linux开发uboot移植——uboot启动过程源码分析

Linux系统移植:NXP 官板 uboot 移植

Linux系统移植:官板 uboot 修改(上)