bootargs = "qcom_dma_heaps.enable_bitstream_contig_heap=y kpti=0 ssbd=force-off lpm_levels.sleep_disabled=1 video=vfb:640x400,bpp=32,memsize=3072000 msm_rtb.filter=0x237
时间: 2023-09-30 08:12:28 浏览: 156
`bootargs` 是 Linux 内核启动时传递给内核的参数,它们很大程度上影响了系统的启动和运行方式。这里是您提供的 `bootargs` 参数:
1. `qcom_dma_heaps.enable_bitstream_contig_heap=y`:启用 bitstream 连续堆,即将 bitstream 分配到物理连续的内存区域,以提高 DMA 性能。
2. `kpti=0`:禁用内核页表隔离(KPTI),这是一种针对 Meltdown 和 Spectre 安全漏洞的内核保护机制。
3. `ssbd=force-off`:关闭 Speculative Store Bypass Disable(SSBD)保护机制。
4. `lpm_levels.sleep_disabled=1`:禁用低功耗模式,即防止系统进入睡眠状态。
5. `video=vfb:640x400,bpp=32,memsize=3072000`:配置虚拟帧缓冲(Virtual Frame Buffer),分辨率为 640x400,像素深度为 32 位,内存大小为 3072000 字节。
6. `msm_rtb.filter=0x237`:配置 MSM Ready To Boot(RTB)过滤器,0x237 是一个十六进制值,表示仅允许特定类型的 RTB 消息通过。
相关问题
内核读取bootargs值为rootfstype=ramfs init=/init console=ttyS0,115200 no_console_suspend earlyprintk=aml-uart,0xc81004c0 ramoops.pstore_en=1 ramoops.record_size=0x8000 ramoops.console_size=0x4000 use_cma_first=1 androidboot.selinux=disabled logo=osd1,loaded,0x3d800000,576cvbs vout=576cvbs,enable hdmimode=720p50hz cvbsmode=576cvbs hdmitx= cvbsdrv=0 androidboot.firstboot=1 jtag=apee quiet androidboot.hardware=amlogic androidboot.boardid=5 androidboot.serialno=00440454F6C5131060T954F6C5269F5C mac=54:F6:C5:26:9F:5C androidboot.mac=54:F6:C5:26:9F:5C,怎么获取boardid的值
要获取 `boardid` 的值,可以在内核启动参数字符串中查找该参数并解析它的值。
在你提供的启动参数字符串中,`boardid` 的值为 `5`,可以通过以下步骤来获取:
1. 使用 `strsep()` 函数来分解启动参数字符串,以等号 (`=`) 为分隔符,将参数名和参数值分开。
2. 对每个参数名和参数值进行比较,找到 `boardid` 参数。
3. 如果找到 `boardid` 参数,将其对应的参数值转换成整数值。
以下是一个示例代码,可以在 Linux 内核中获取 `boardid` 的值:
```c
#include <linux/string.h>
...
const char *bootargs = NULL;
char *arg, *value;
int boardid = -1;
struct device_node *chosen = NULL;
chosen = of_find_node_by_path("/chosen");
if (chosen) {
bootargs = of_get_property(chosen, "bootargs", NULL);
if (bootargs) {
while ((arg = strsep((char **)&bootargs, " ")) != NULL) {
if (strlen(arg) == 0) {
continue;
}
if ((value = strchr(arg, '=')) != NULL) {
*value = '\0';
value++;
if (strcmp(arg, "boardid") == 0) {
boardid = simple_strtol(value, NULL, 10);
break;
}
}
}
}
}
if (boardid >= 0) {
// 处理 boardid 值
...
}
```
在上面的代码中,我们使用 `strsep()` 函数来分解启动参数字符串,并使用 `strcmp()` 函数比较参数名是否为 `boardid`。如果找到 `boardid` 参数,我们使用 `simple_strtol()` 函数将其对应的参数值转换成整数值。如果转换成功,我们就可以在代码中使用 `boardid` 的值。
bootargs=root=/dev/mtdblock3 rootfstype=squashfs ro init=/linuxrc LX_MEM=4000000 mma_heap=mma_heap_name0,miu=0,sz=0x2500000 mma_memblock_remove=1 cma=2M mtdparts=nor0:0x4F000(BOOT),0x1000(ENV),0x2C0000(KERNEL),0x2F0000(rootfs),0x3D0000(miservice),0x5D0000(customer)
这似乎是一段引导参数(bootargs),用于配置Linux内核的启动选项。它指定了根文件系统、根文件系统类型、只读挂载、初始化程序等信息。此外,还包含了一些其他的参数,如内存分配、MMU设置、MTD分区等。
具体来说,这些参数的含义如下:
- `root=/dev/mtdblock3`:指定根文件系统所在的设备节点为mtdblock3。
- `rootfstype=squashfs`:指定根文件系统的类型为SquashFS。
- `ro`:以只读模式挂载根文件系统。
- `init=/linuxrc`:指定初始化程序路径为/linuxrc。
- `LX_MEM=4000000`:设置LX_MEM参数为4000000。
- `mma_heap=mma_heap_name0,miu=0,sz=0x2500000`:设置mma_heap参数为mma_heap_name0,miu为0,sz为0x2500000。
- `mma_memblock_remove=1`:设置mma_memblock_remove参数为1。
- `cma=2M`:设置cma参数为2M。
- `mtdparts=nor0:0x4F000(BOOT),0x1000(ENV),0x2C0000(KERNEL),0x2F0000(rootfs),0x3D0000(miservice),0x5D0000(customer)`:定义了MTD分区的布局。
这些参数通常在嵌入式系统中使用,用于配置启动过程中的各种选项。具体的含义和使用方式可能会因系统而异,因此我建议你参考相关的文档或系统配置文件来了解更多详细信息。
阅读全文