内核查看uboot传递的参数简单方法

本文介绍了在U-Boot环境下如何通过设置rawview参数来实现特定功能。通过一个具体的示例,展示了如何在内核启动时读取并打印rawview参数的值。

u-boot  设置bootargs=console=ttyS0,115200n8 initrd=2g,1 root=/dev/ram rawview=myrawview

 

 

 

static int __init rawview_setup(char *str)
{
 printk("***********/n");
 printk(str);//此处字符串str就是rawview=之后的内容
 printk("***********/n");
}
__setup("rawview=", rawview_setup);

 

 

 

具体实现原理可以参考Embedded_Linux_Primer这本书

<think>好的,我需要帮助用户了解如何通过U-Boot参数加载不同的设备树文件。首先,我应该回顾用户提供的引用内容,看看是否有相关的信息。 引用[1]提到U-Boot使用单独的*-u-boot.dtsi文件,这些文件在编译时自动包含到设备树中,但用户的问题是关于在运行时加载不同的设备树文件,而不是编译时的处理。引用[2]和[3]讨论了U-Boot的编译输出和启动流程,但没有直接涉及参数配置。引用[4]提到U-Boot的命令,比如help,这可能与设置环境变量有关。引用[5]展示了复制设备树文件到特定目录,可能涉及到启动时的路径设置。 用户的问题是关于如何配置U-Boot参数来加载不同的设备树文件。我需要回忆U-Boot的常见环境变量,比如fdtfile或fdt_addr_r,以及如何通过bootcmd来传递设备树参数。可能需要设置设备树文件的名称或路径,并在启动命令中指定。 首先,设备树文件通常在启动时由U-Boot加载到内存,然后传递内核。用户可能需要通过设置fdtfile环境变量来指定不同的.dtb文件。此外,在bootcmd中,使用load命令加载设备树文件到内存地址,然后通过bootm或bootz命令传递地址参数。 另外,不同的硬件平台可能有不同的配置方式,比如树莓派或STM32系列。需要举例说明如何修改这些变量,并确保用户了解如何保存环境变量到持久存储中。还要提到使用U-Boot命令如setenv和saveenv,以及如何测试不同的设备树配置。 需要注意用户可能的误区,比如设备树文件路径是否正确,内存地址是否冲突等。可能还需要说明如何通过TFTP或本地存储加载设备树,以及如何调试问题,比如使用fatls查看文件系统内容。 总结步骤应该是:设置设备树文件名,加载到内存,启动内核传递参数,并保存配置。需要确保回答结构清晰,分点说明,并给出示例命令。</think>在U-Boot中加载不同的设备树文件需要通过环境变量配置实现,具体步骤如下: ### 一、核心参数配置方法 1. **指定设备树文件名称** - 通过`fdtfile`环境变量定义设备树文件名: ```bash setenv fdtfile custom-board.dtb ``` - 文件名需与实际存储在启动介质的设备树文件一致(如TFTP服务器、SD卡等) 2. **配置设备树加载流程** - 典型启动命令示例(假设从TFTP加载): ```bash setenv bootcmd 'tftp ${loadaddr} zImage; \ tftp ${fdt_addr} ${fdtfile}; \ bootz ${loadaddr} - ${fdt_addr}' ``` - 关键参数说明: - `fdt_addr`:设备树文件加载的物理地址(需与内存映射匹配) - `loadaddr`:内核镜像加载地址 - 地址范围建议参考具体硬件手册(如STM32F7系列通常使用0xC0000000起始地址) 3. **多设备树文件管理** - 在存储介质中按目录组织: ```bash /dtbs/ ├─ board-v1.dtb └─ board-v2.dtb ``` - 动态选择方案: ```bash setenv board_rev 2 setenv fdtfile dtbs/board-v${board_rev}.dtb ``` ### 二、关键环境变量解析 | 变量名 | 典型值示例 | 作用说明 | |---------------|-------------------|------------------------------| | `fdtfile` | imx6q-custom.dtb | 指定设备树文件名 | | `fdt_addr_r` | 0x83000000 | 设备树文件加载地址 | | `bootargs` | console=ttyS0,... | 内核启动参数(需包含`fdt`相关配置)| ### 三、操作流程示例(基于TFTP启动) 1. 查看存储介质中的设备树文件 ```bash fatls mmc 0:1 ``` 2. 动态切换设备树 ```bash setenv fdtfile alternate.dtb tftp ${fdt_addr_r} ${fdtfile} bootz ${kernel_addr_r} - ${fdt_addr_r} ``` 3. 永久保存配置 ```bash setenv bootcmd 'ext4load mmc 0:1 ${loadaddr} /boot/zImage; \ ext4load mmc 0:1 ${fdt_addr} /boot/${fdtfile}; \ bootz ${loadaddr} - ${fdt_addr}' saveenv ``` ### 四、特殊场景处理 1. **SPL阶段加载** 对于需要早期加载设备树的平台(如TI AM335x),需在`u-boot.dtsi`中配置: ```dts / { chosen { u-boot,spl-boot-order = "mmc0", "nand"; }; }; ``` 2. **内存冲突检测** 使用`md`命令验证加载区域: ```bash md ${fdt_addr_r} 10 # 查看前16字节数据 fdt addr ${fdt_addr_r} # 验证设备树有效性 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值