2.3 config.txt 文件配置
注意
- 所有配置文件内的配置,均可以在Uboot内手动覆盖。Uboot内手动配置(在Uboot命令行使用setenv)的优先级高于配置文件内的配置。完整环境变量优先级:
setenv > 配置文件 > 上一次启动saveenv
; - 本章内容均以“配置文件”指代默认路径为
/boot/config.txt
的配置文件; - 使用配置文件时,会需要修改启动分区的内容,这与AVB的要求是冲突的,所以本功能在使能AVB时 (AVB功能默认不使能)不能使用;
使用指南
提示
- 配置文件默认格式为
<key>=<value>
,第一个=
后面的所有内容均为=
前的<key>
的配置值; - 配置文件单行配置不能超过1024字符;
- 配置文件内的配置默认不会被保存为Uboot的默认配置;
配置内核bootargs(内核cmdline)
修改配置文件,添加:bootargs=<自定义bootargs>
,例如:
# Add cpu isolation configuration
bootargs=isolcpus=1-2
修改内核启动打印等级
修改配置文件,添加:loglevel=<自定义打印等级>
,例如:
# Add kernel loglevel configuration
loglevel=8
临时修改dts
使能或失能特定节点
修改配置文件,添加:fdt-enable=<dts节点1全路径>;<dts节点2全路径>;
;fdt-disable=<dts节点1全路径>;<dts节点2全路径>;
,例如:
# Enable kernel dts node
fdt-enable=/soc/uart@394C0000;
# Disable kernel dts node
fdt-disable=/soc/uart@394C0000;
提示
- 示例中配置行末尾的“;”不可省略;
- dts节点全路径可以在板端
/proc/device-tree
下获取,例如:注意命令获取到的路径需要添加行首的"/";root@ubuntu:~# realpath --relative-to=/proc/device-tree/ /proc/device-tree/soc/uart@394C0000
soc/uart@394C0000
配置DTB Overlay文件
DTB Overlay相关说明如下:
- Kernel V6.1 官方文档:Devicetree Overlay Notes;
- Uboot V2022.10 官方文档:Device Tree Overlays;
简单介绍:DTB Overlay文件,是可以在不修改当前启动使用的dts文件的情况下,对当前启动使用的dtb文件进行增/改(不支持删减)的功能。
DTB Overlay示例文件如下:
/*
* Sample dtb overlay source file
* spi0_cs1_dev.dtso
*/
/dts-v1/;
/plugin/;
&spi0 {
slave@1 {
compatible = "sample-compatible-str";
spi-max-frequency = <32000000>;
reg = <1>;
};
};
提示
需要根据从设备实际情况修改:
compatible
字段:需要修改为从设备实际驱动的compatible
字段;spi-max-frequency
字段:需要修改为从设备实际支持的最高速度;
DTB Overlay编译示例,以下命令可以在Host端/RDK板端执行,假设spi0_cs1_dev.dtso
文件路径位于~/rdk_dtbo/spi0_cs1_dev.dtso
:
# Install device-tree-compiler
sudo apt install device-tree-compiler -y
# Compile dtbo files
dtc -I dts -O dtb -o ~/rdk_dtbo/spi0_cs1_dev.dtbo ~/rdk_dtbo/spi0_cs1_dev.dtso
# Copy generated dtbo file to /boot for further usage
sudo cp ~/rdk_dtbo/spi0_cs1_dev.dtbo /boot
编译示例输出:
sunrise@ubuntu:~/rdk_dtbo$ dtc -I dts -O dtb -o ~/rdk_dtbo/spi0_cs1_dev.dtbo ~/rdk_dtbo/spi0_cs1_dev.dtso
/home/sunrise/rdk_dtbo/spi0_cs1_dev.dtso:12.3-13: Warning (reg_format): /fragment@0/__overlay__/slave@1:reg: property has invalid length (4 bytes) (#address-cells == 2, #size-cells == 1)
/home/sunrise/rdk_dtbo/spi0_cs1_dev.dtbo: Warning (pci_device_reg): Failed prerequisite 'reg_format'
/home/sunrise/rdk_dtbo/spi0_cs1_dev.dtbo: Warning (pci_device_bus_num): Failed prerequisite 'reg_format'
/home/sunrise/rdk_dtbo/spi0_cs1_dev.dtbo: Warning (simple_bus_reg): Failed prerequisite 'reg_format'
/home/sunrise/rdk_dtbo/spi0_cs1_dev.dtbo: Warning (i2c_bus_reg): Failed prerequisite 'reg_format'
/home/sunrise/rdk_dtbo/spi0_cs1_dev.dtbo: Warning (spi_bus_reg): Failed prerequisite 'reg_format'
/home/sunrise/rdk_dtbo/spi0_cs1_dev.dtso:9.10-13.4: Warning (avoid_default_addr_size): /fragment@0/__overlay__/slave@1: Relying on default #address-cells value
/home/sunrise/rdk_dtbo/spi0_cs1_dev.dtso:9.10-13.4: Warning (avoid_default_addr_size): /fragment@0/__overlay__/slave@1: Relying on default #size-cells value
/home/sunrise/rdk_dtbo/spi0_cs1_dev.dtbo: Warning (avoid_unnecessary_addr_size): Failed prerequisite 'avoid_default_addr_size'
/home/sunrise/rdk_dtbo/spi0_cs1_dev.dtbo: Warning (unique_unit_address): Failed prerequisite 'avoid_default_addr_size'
sunrise@ubuntu:~/rdk_dtbo$ ls
spi0_cs1_dev.dtbo spi0_cs1_dev.dtso
提示
一般来说,编译中报的Warning
级别的打印可以忽略。
修改配置文件,添加:dtbo_file_path=</boot分区下的相对路径>
,例如:
# Set dtbo file path relative to /boot partition
dtbo_file_path=/spi0_cs1_dev.dtbo
重启后,可以看到设备树SPI0(spi@39800000)的路径下,新的从设备节点生成了:
sunrise@ubuntu:~$ ls /proc/device-tree/soc/spi@39800000/slave@1/
compatible name reg spi-max-frequency
如果想要自定义dtbo文件所在分区,则可以添加:dtbo_dev_part=<设备号>:<16进制分区号>
,RDK S100默认设备号为"0",分区号可以通过/dev/block/platform/by-name/
路径获取,以下以userdata
分区为例:
# Set dtbo file device number and partition number:
dtbo_dev_part=0:0x10
获取分区号的方法:ls -l /dev/block/platform/by-name/<分区名>
,例如:
root@ubuntu:~# ls -l /dev/block/platform/by-name/userdata
lrwxrwxrwx 1 root root 15 Jun 4 22:17 /dev/block/platform/by-name/userdata -> /dev/mmcblk0p16