uboot启动的杂记--uboot给kernel传参的实现原理

本文详细介绍了uboot如何向内核传递参数,包括CONFIG_SETUP_MEMORY_TAGS(内存配置)、CONFIG_CMDLINE_TAG(启动命令行参数)、CONFIG_INITRD_TAG(INITRD)和CONFIG_MTDPARTITION(iNand/SD卡分区表)。通过tag结构体,uboot遵循内核规定的格式传递参数,以ATAG_CORE为起点,ATAG_NONE为终点,利用寄存器R0、R1、R2传递参数的首地址,启动内核。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

uboot给内核传参的具体分析:

注:接着uboot启动内核的过程,具体分析uboot给内核传参:

首先是一些传参相关的宏:

#if defined (CONFIG_SETUP_MEMORY_TAGS) || \
    defined (CONFIG_CMDLINE_TAG) || \
    defined (CONFIG_INITRD_TAG) || \
    defined (CONFIG_SERIAL_TAG) || \
    defined (CONFIG_REVISION_TAG) || \
    defined (CONFIG_LCD) || \
    defined (CONFIG_VFD) || \
    defined (CONFIG_MTDPARTITION)

1.CONFIG_SETUP_MEMORY_TAGS:对应着tag_mem结构体变量,传参内容是内存的配置信息;

在BL2阶段将内存DDR/SDRAM进行初始化之后读取了内存的大小、个数等信息到gd结构体中,然后又赋值给这个宏相关的结构体中,通过传参传递给kernel。

2.CONFIG_CMDLINE_TAG:对应着tag_cmdline,传参内容是启动命令行参数,告诉内核怎么启动。也就是uboot环境变量的bootargs,这个Uboot必须传给内核。  而bootargs被赋值为 CONFIG_BOOTARGS, CONFIG_BOOTARGS在X210_sd.h中被宏定义为"console=ttySAC2,115200 root=/dev/mmcblk0p2 rw init=/linuxrc rootfstype=ext3"

3.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值