[TOC]
boot 命令
- bootm 是一个通用的引导命令,支持多种镜像格式和加载方式.
- bootz 专门用于引导压缩的 Linux zImage 内核。
- booti 专门用于引导 AArch64 Linux 内核映像。
bootm 从内存中引导应用程序映像
bootz 启动 Linux zImage
booti 从内存中引导 AArch64 Linux 内核映像
文章作者: Liya Huang
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 wdfk-prog的个人博客!
相关推荐

2025-10-03
api
[TOC] 介绍用于外部应用程序的 U-Boot 机器/独立于架构的 API 主要假设 API 只有一个入口点 (syscall) 根据当前的设计,syscall 是 U-Boot 中的 C 语言可调用函数text,它可能会演变成一个真正的 syscall using machine exception 陷阱,一旦此初始版本证明有效 使用者应用程序负责生成适当的上下文(调用 number 和参数) 进入后,系统调用将调用分派给其他(现有的)U-Boot功能区域,如网络或存储操作 消费者应用程序将通过搜索来识别 API 可用指定的(按照约定假定的)地址空间范围签名 API 的 U-Boot 组成部分是精简且非侵入性的,将尽可能多的处理留给消费者应用程序端,例如,它不保留状态,而是依赖于来自应用程序的提示,并且以此类推 可选 (CONFIG_API) 调用 控制台相关(GETC、PUTC、TSTC 等) 系统(重置、平台信息) 时间 (delay, current) env vars (枚举所有、get、set) 设备 (枚举所有、打开、关闭、读...

2025-10-03
arch
[TOC] arch 架构介绍ARC (Argonaut RISC Core) ARC 是一种基于 RISC(精简指令集计算机)原理的处理器架构,广泛应用于嵌入式系统中。 ARC 处理器由 Synopsys 公司开发和推广,广泛应用于嵌入式系统中,因其高性能和低功耗特性而受到欢迎。 ARM ARM M68K M68K,也称为 68K 或 Motorola 68000,是一种由摩托罗拉公司(Motorola)开发的16/32位微处理器架构。M68K 系列处理器在20世纪80年代和90年代广泛应用于计算机、嵌入式系统和游戏机中。 MICROBLAZE MicroBlaze 是由 Xilinx 公司开发的一种软处理器核心,专门用于其 FPGA(现场可编程门阵列)产品。MicroBlaze 处理器可以通过硬件描述语言(如 VHDL 或 Verilog)在 FPGA 中实现,并根据具体应用需求进行定制。 MIPS MIPS(Microprocessor without Interlocked Pipeline Stages)是一种由 MIPS Technologies 开...

2025-10-03
bootm
cmd/bootm.c 从内存中的映像引导应用程序映像do_bootm1234567891011121314151617181920212223242526//bootm 90080000//cmdtp:命令表,flag:标志位,argc:参数个数,argv:参数列表int do_bootm(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]){ struct bootm_info bmi; int ret; //执行子命令 //默认命令执行默认参数初始化 bootm_init(&bmi); if (argc) bmi.addr_img = argv[0]; //设置镜像地址 字符串"90080000" if (argc > 1) bmi.conf_ramdisk = argv[1]; if (argc > 2) bmi.conf_fdt = argv[2]; /* set up argc and argv[] since some OSes ...

2025-10-03
bootretry
[TOC] BOOT_RETRY 允许 U-Boot 命令提示符超时并尝试以再次启动。 如果找到环境变量 “bootretry”,则使用其值,否则重试超时为CONFIG_BOOT_RETRY_TIME。 CONFIG_BOOT_RETRY_MIN 是可选的,并且默认为 CONFIG_BOOT_RETRY_TIME。所有时间均以秒为单位。 如果重试超时为负数,则 U-Boot 命令提示符永不超时。否则,它将被强制为至少CONFIG_BOOT_RETRY_MIN 秒。如果没有有效的 U-Boot 命令在指定时间之前输入,则引导延迟序列为重新启动。U-Boot 执行的每个命令都会重新启动超时。 如果CONFIG_BOOT_RETRY_TIME < 0,则该功能存在,但除非环境变量 “bootretry” >= 0,否则不会执行任何操作。 bootretry_init_cmd_timeout 从env中获取bootretry的值,如果没有配置,则使用CONFIG_BOOT_RETRY_TIME的值 如果0 < CONFIG_BOOT_RETRY_TIME &...

2025-10-03
image
image-board.cgenimg_get_kernel_addr_fit1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253/** * genimg_get_kernel_addr_fit() - 解析 FIT 说明符 * * 从通常为第一个的字符串中获取真正的内核起始地址 bootm/bootz 的 argv * 这些情况根据 @img_addr 的值进行处理: * NULL:返回 image_load_addr,不设置最后两个参数 * “<addr>”:返回地址 * 对于 FIT: * “[<addr>]#<conf>”:返回地址(或image_load_addr)、 * 将 fit_uname_config 设置为 Config Name * “[<addr>]:<subimage>”:返回地址(或 image_load_addr)并设置 * fit_uname_ker...

2025-10-03
board
[TOC] init/board_init.cboard_init_f_alloc_reserve 板级初始化第一次分配保留空间12345678910111213141516// //Fast alloc// top:栈顶地址,即堆栈指针地址sp传入ulong board_init_f_alloc_reserve(ulong top){ /* Reserve early malloc arena */#ifndef CFG_MALLOC_F_ADDR //没有定义快速分配地址#if CONFIG_IS_ENABLED(SYS_MALLOC_F) //配置系统自动快速分配 top -= CONFIG_VAL(SYS_MALLOC_F_LEN);#endif#endif /* LAST : 保留 GD (四舍五入为 16 字节的倍数) */ top = rounddown(top-sizeof(struct global_data), 16); return top;} board_init_f_init_reserve 板级初始化第一次始化保留 将传...
评论
公告
欢迎光临!有任何问题或想法,欢迎在文章下留言交流,或者通过 关于页面 联系我。




