openwrt系统启动后,会在/tmp/sysinfo/生成两个文件。其中保存了板卡型号的信息。如下日志。
[root@Abloomy:sysinfo]# pwd
/tmp/sysinfo
[root@Abloomy:sysinfo]# ls
board_name model
[root@Abloomy:sysinfo]# # cat board_name
ap-dk01.1-c1
[root@Abloomy:sysinfo]# cat model
Qualcomm Technologies, Inc. IPQ40xx/AP-DK01.1-C1
在一些配置的脚本中,读取板卡类型信息,对不同的板卡做出不同的配置,如配置LED和network等。
在实际开发中,我们会在一个基本板卡上如( ap-dk01.1-c1)做出多个产品,每个产品的硬件配置略有一些区别。
此时就需要自定义我们自己的板卡型号。和相应的配置脚本。
1.生成/tmp/sysinfo/board_name的过程
mxs类型在编译时,在rootfs/lib/mxs.sh文件。
在ipq类型,则在rootfs/lib中有是ipq806x.sh
在ipq806x.sh为例, 先是在ipq806x_board_detect函数中 machine=$(cat /proc/device-tree/model)
从 /proc/device-tree/model读取model信息,然后由此信息再生成board_name,
最后输出到/tmp/sysinfo/board_name
例:
cat /proc/device-tree/model
Qualcomm Technologies, Inc. IPQ40xx/AP-DK01.1-C1
ipq806x_board_detect函数由/lib/preinit/03_preinit_do_ipq806x.sh中被调用。
2.按板卡型号来配置network
在/etc/uci-default/network的脚本中,则从/tmp/sysinfo/board_name中读出boar_name,而后再配置。
3.编译时如何选择model或是设备树呢?
board_name的选择是由/proc/device-tree/model来决定的。
则dev-tree/model信息则是由dts机制来决定的。
其中在ipq系统中,在编译时会把多个dev tree编译到bin中,由uboot根据machid来做出选择。
dev tree 地址信息 . 以上的信息是由 Uboot 传给 kernel 的参数
4.uboot如何选择 devtree呢?
uboot在查找的过程。















