嵌入式系统移植

让操作系统(如 Linux)在特定的硬件平台上运行

bootload

Bootloader(引导加载程序) 是嵌入式系统启动时运行的第一个程序,它的作用是初始化硬件加载操作系统

uboot2016.03是bootload中的一种

内核版本:4.1.15.2.1.0

作用是在内核加载前对硬件设备初始化,为内核的运行提供引导功能

U-Boot 被加载到内存地址 0x87800000(常简称为 8780)主要是由硬件设计、Linux 内核以及 U-Boot 三方协商约定的结果

在 i.MX6ULL 等 ARM 芯片中,外部 DDR 内存的物理地址起始于 0x80000000

uboot指令

删除变量 setenv aaa  不给变量赋值即可删除

uboot.bin 与 uboot.imx

uboot.bin为原文件

u-boot.imx在bin文件前加了一些信息文件

IVT:镜像向量表,BootROM提供引导所需的所有关键信息的地址

BootROM通过读取IVT,才知道去哪里找真正的用户程序( entry )、如何去配
置硬件( dcd )以及程序有多大( boot_data )
DCD:设备配置数据。
imx中, 完成的任务
、设置 CCGR0~CCGR6 7 个外设时钟使能寄存器,默认打开所有的外设时钟。
、配置 DDR3 所用的所有 IO
、配置 MMDC 控制器,初始化 DDR3

总结

uboot的作用

内核镜像

内核镜像 是操作系统内核经过编译、链接后生成的可执行二进制文件,它是操作系统启动的核心。

sd卡分区

修改权限

tftpboot用于把内核和设备树下载到内存上去

sudo systemctl status 

查看服务(Systemd 服务)当前运行状态的命令

ls | grep imx6ull

模糊查找

grep -Rni 'entry(stext)'

在 Linux 内核源码 中递归搜索包含 entry(stext) 字符串的文件

ctags -R 

ctags -R 是用于生成代码索引文件(tags) 的命令,让你可以在 Vim 等编辑器中快速跳转到函数、变量、宏的定义位置

介绍arm架构

先说工作模式,异常向量表

架构是cortex v7a,指令集是cortex a7,32kb i-cache(指令缓存),32kb d-cache(数据缓存)

SPL:第二程序加载器

ROM 是芯片固化的启动程序,负责加载 SPL 到 SRAM。SPL 在 SRAM 中运行,初始化 DDR 内存,然后加载 U-Boot 到 DDR。U-Boot 在 DDR 中运行,最终加载 Linux 内核。三者协同工作,完成从硬件启动到操作系统运行的完整过程。 

内核的编译与裁剪

如果自动补齐失败,删除这个文件

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐