Loading...

加载中...

最新文章

IMX6ULL crt0.S _main函数分析

硬件平台: NXP IMX6ULL (Cortex-A7) U-Boot版本: 2025.04 架构: ARMv7-A 注意:代码有删减,忽略不符合条件编译的代码。 _main 函数代码实现了从汇编环境到完整C环境的完整过渡。 _main函数在arch/arm/lib/crt0.S中定义。 crt0.S文件注释以下是crt0.S文件注释的翻译:...
阅读更多

IMX6ULL lowlevel_init.S分析

硬件平台: NXP IMX6ULL (Cortex-A7) U-Boot版本: 2025.04 架构: ARMv7-A 注意:代码有删减,忽略不符合条件编译的代码。 start.S中cpu_init_crit函数跳转至lowlevel_init函数执行。 s_init 函数定义...
阅读更多

IMX6ULL ARMv7 Cortex-A start.S详细解析

硬件平台: NXP IMX6ULL (Cortex-A7) U-Boot版本: 2025.04 架构: ARMv7-A 注意:代码有删减,仅讲解涉及必要内容,更多功能随着后续实现不断添加讲解。 文件路径: arch/arm/cpu/armv7/start.S。Boot/SPL 的入口点和初始化代码. 一、头文件包含 #include <asm...
阅读更多

Kconfig配置描述文件问题记录

Kconfig文件在编写和编译时遇到需要注意的一些问题汇总。 问题1:输入提示每个配置项最多只能有一个提示,用于显示给用户。 如果不存在提示,则配置选项是不可见,用户无法直接更改其值,并且该选项不会出现在任何配置菜单中。其值只能通过“default”和“select”设置。这意味着在menuconfig界面没有显示用户不能设置更改,同样地,在defconfig文件中即使设置也无效。 问题2:默认值...
阅读更多

U-Boot 配置构建系统(Kconfig/Kbuild)

在嵌入式系统的世界里,U-Boot(Universal Boot Loader,通用引导加载程序)扮演着至关重要的角色。它是在操作系统内核运行之前执行的一段程序,负责初始化硬件设备、建立内存映射,并将系统的软硬件环境带至一个合适的状态,最终加载并启动操作系统内核。 U-Boot 因其开源、支持多种处理器架构(如ARM、PowerPC、MIPS、x86)和嵌入式操作系统而在业界深受欢迎。然而,支撑其...
阅读更多

IMX6ULL链接脚本u-boot.lds分析

硬件平台: NXP IMX6ULL (Cortex-A7) U-Boot版本: 2025.04 架构: ARMv7-A 注意:下面代码有删减,仅讲解初期必要内容,更多功能随着后续实现不断添加讲解。 链接脚本u-boot.ldsarch/arm/cpu/u-boot.lds是U-Boot的链接脚本,定义了代码和数据在内存中的布局。...
阅读更多

U-Boot的Host程序make流程

一、U-Boot 中的 Host 程序U-Boot 的构建系统采用与 Linux 内核相似的 Kbuild 架构,这使得 U-Boot 的配置和编译过程更灵活和自动化。构建系统主要由 Makefile 脚本、Kconfig 配置语言和一系列 host 程序组成,它们共同协作完成从源码到可执行镜像的转换。 Host 程序是指在编译主机上本地执行的程序,它们不参与 U-Boot 运行时环境的构建,而是...
阅读更多

U-Boot配置编译过程及Makefile分析

主机系统:Ubuntu24.04(x86_64) 目标平台:I.MX6ULL(ARM) U-Boot版本: v2025.04 交叉编译工具链:gcc-linaro-arm-linux-gnueabihf 7.5.0-2019.12-x86_64 一、交叉编译工具链和环境变量配置在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,我们就称这种编译器支持交叉编译,这个编译过程就称...
阅读更多

加载地址、链接地址和运行地址

理解加载地址、链接地址和运行地址是掌握嵌入式系统启动和重定位的关键。这三个概念分别对应程序生命周期的不同阶段。 下面我们结合IMX6ULL的U-Boot场景,对每一个概念进行详细解读。 核心概念1. 链接地址又称虚拟内存地址。这是由链接器根据链接脚本(u-boot.lds)和配置(如CONFIG_SYS_TEXT_BASE = 0x87800000)为每段代码和数据分配的假定运行地址。 作用:编...
阅读更多

include/generated/asm-offsets.h文件的生成过程

为什么需要 include/generated/asm-offsets.hinclude/generated/asm-offsets.h 文件包含了 C 结构体成员的偏移量定义,这些偏移量用于汇编代码中访问 C 数据结构。因为汇编语言无法直接理解 C 的结构体定义,因此需要一种机制将结构体成员的偏移量以宏定义的形式提供给汇编代码。 例如,在lowlevel_...
阅读更多
导航 Enter 打开 ESC 关闭

输入关键词开始搜索