天天看點

ipq4019 識别闆卡型号的過程

openwrt系統啟動後,會在/tmp/sysinfo/生成兩個檔案。其中儲存了闆卡型号的資訊。如下日志。 [[email protected]:sysinfo]# pwd /tmp/sysinfo [[email protected]:sysinfo]# ls board_name model [[email protected]:sysinfo]# # cat board_name ap-dk01.1-c1 [[email protected]: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 的參數

ipq4019 識别闆卡型号的過程
ipq4019 識别闆卡型号的過程

4.uboot如何選擇 devtree呢?

ipq4019 識别闆卡型号的過程
ipq4019 識别闆卡型号的過程
ipq4019 識别闆卡型号的過程
ipq4019 識别闆卡型号的過程

uboot在查找的過程。

ipq4019 識别闆卡型号的過程
ipq4019 識别闆卡型号的過程