嵌入式linux架构理解(宏观理解)6ull学习心得---从架构理解到自写程序运行及自写程序开机自启动
一、linux系统的三个组成部分
U-Boot、Linux kernel 和 rootfs 这三者一起构成了一个完整的 Linux 系
统,一个可以正常使用、功能完善的 Linux 系统。
1.在移植 Linux之前我们需要先移植一个 bootloader 代码,这个 bootloader 代码用于启动 Linux 内核,bootloader有很多,常用的就是 U-Boot。
·
2.移植好 U-Boot 以后再移植 Linux 内核, 移植完 Linux 内核以后
·
3.Linux 还不能正常启动,还需要再移植一个根文件系统(rootfs),根文件系统里面包含了一些最常用的命令和文件。
·
所以 U-Boot、Linux kernel 和 rootfs 这三者一起构成了一个完整的 Linux 系统,一个可以正常使用、功能完善的
Linux 系统。
1.uboot
下载 编译 烧录
MobaXterm 上出现“Hit any key to stop autoboot: ”倒计时的时候按下键盘上的回车键,默认是 3 秒倒计时,在 3 秒倒计时结束以后如果没有按下回车键的话 uboot 就会使用默认参数来启动 Linux 内核了。如果在 3 秒倒计时结束之前按下回车键,那么就会进入 uboot 的命令行模式
2.1.linux内核
a.Linux 镜像文件-----zImage
编译后会在 arch/arm/boot 目录下生成一个叫做 zImage 的文件
zImage 就是我们要用的 Linux 镜像文件
b.dtb(设备树)文件--------比如imx6ull-14x14-evk.dtb
另外也会在 arch/arm/boot/dts 下生成很多.dtb 文件,这些.dtb 就是
设备树文件。
2.2.使用uboot中的命令启动linux
(1)通过网络启动linux
a.将zImage 和 imx6ull-14x14-emmc-7-1024x600-c.dtb 发送到 Ubuntu 主机中的 tftpboot 文件夹里面
b.给予 imx6ull-14x14-emmc-7-1024x600-c.dtb 可执行权限
chmod 777 imx6ull-14x14-emmc-7-1024x600-c.dtb
c.使用 tftp 命令
将zImage 下载到DRAM的0X80800000地址处,然后将设备树imx6ull-14x14-emmc-7-1024x600-c.dtb 下载到 DRAM 中的 0X83000000 地址处,最后之后命令 bootz 启动,命令如下:
"
tftp 80800000 zImage
tftp 83000000 imx6ull-14x14-emmc-7-1024x600-c.dtb
bootz 80800000 - 83000000
"
(2)从EMMC中启动linux
如果我们要从 EMMC 中启动 Linux 系统的话只需要使用命令 fatload 将 zImage 和 imx6ull-14x14-emmc-7-1024x600-c.dtb 从
EMMC 的分区 1 中拷贝到 DRAM 中,然后使用命令 bootz 启动即可。
"
fatload mmc 1:1