通常Kernel一加載起來,大家能在/dev目錄下可以看到一大堆的設(shè)備。這些設(shè)備都是Kernel加載初始化過程中,由內(nèi)核和驅(qū)動(dòng)創(chuàng)建出來的。那么哪個(gè)設(shè)備才是我真正要用的設(shè)備。下面就幾個(gè)常用的外設(shè)來和大家一起梳理一下。
反編譯設(shè)備樹
首先第一步是要獲得完整的設(shè)備樹信息。通過將 dtb 文件反編譯成 dts 文件,你就可以獲得最終的設(shè)備樹文件了。方法是使用dtc小工具,把在你 petalinux 工程下image/linux/system.dtb 文件反編譯成 dts 文件。命令如下:
dtc -I dtb -O dts -osystem.dts system.dtb
有了最終的 dts 文件,就相當(dāng)于我們已經(jīng)有一個(gè)所有設(shè)備的清單。在這個(gè)清單中,我們可以看到每個(gè)設(shè)備在kernel 中都會(huì)有一個(gè)對(duì)應(yīng)的地址。這個(gè)地址就可以和你 Vivado 工程中設(shè)置的地址一一對(duì)應(yīng)。
例如:

查看啟動(dòng)信息,確認(rèn)設(shè)備節(jié)點(diǎn)
在 Kernel 啟動(dòng)過程中,設(shè)備驅(qū)動(dòng)如果能成功完成初始化,一般會(huì)打印出對(duì)應(yīng)的設(shè)備名稱。例如,如果在 VIVADO 工程中使能了 PS 側(cè)的 UART0,那么你可以在 kernel 啟動(dòng)完成之后,通過 dmesg 指令來查找 UART0 被注冊(cè)成了哪個(gè)串口設(shè)備。
所以如果使用的是自己的硬件平臺(tái),那么盡量不要使用預(yù)設(shè)的名稱,這樣可以避免導(dǎo)入多余的設(shè)備樹信息從而導(dǎo)致編譯失敗或者最終功能不正確。

查看設(shè)備初始化信息,確認(rèn)設(shè)備節(jié)點(diǎn)
如果驅(qū)動(dòng)在初始化工程中沒有打印出設(shè)備名稱的話,怎么才能知道對(duì)應(yīng)的設(shè)備是哪個(gè)呢?比如I2C設(shè)備,用dmesg并沒有找到VIVADO工程中使能的I2C對(duì)應(yīng)的是哪個(gè)設(shè)備。
然后在 /dev 下,你可以看到多達(dá)9個(gè)的 i2c 設(shè)備。
這個(gè)時(shí)候,我們可以去/sys/bus/i2c/device目錄下來確認(rèn)每個(gè) I2C 設(shè)備對(duì)應(yīng)的節(jié)點(diǎn)
進(jìn)入我們要確認(rèn)的 I2C 設(shè)備,比如 I2C-0 這個(gè)設(shè)備,再用 ls -l 的指令,就可以看到這個(gè)設(shè)備對(duì)應(yīng)的是設(shè)備樹中具體的哪個(gè)節(jié)點(diǎn)了。
總結(jié)
用戶需要使用某個(gè)設(shè)備的時(shí)候可以通過本文介紹的兩種方法,結(jié)合設(shè)備樹信息就可以明確的找到對(duì)應(yīng)的設(shè)備了。
原文標(biāo)題:開發(fā)者分享 | Petalinux中如何確認(rèn) dev 下設(shè)備的對(duì)應(yīng)關(guān)系
文章出處:【微信公眾號(hào):FPGA開發(fā)圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
責(zé)任編輯:haq
-
FPGA
+關(guān)注
關(guān)注
1659文章
22379瀏覽量
633926
原文標(biāo)題:開發(fā)者分享 | Petalinux中如何確認(rèn) dev 下設(shè)備的對(duì)應(yīng)關(guān)系
文章出處:【微信號(hào):FPGA-EETrend,微信公眾號(hào):FPGA開發(fā)圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
Modbus產(chǎn)品腳本編輯器“映射關(guān)系”解釋?映射關(guān)系的地址對(duì)應(yīng)關(guān)系?
【OK3506-S12Mini試用評(píng)測(cè)(三)】在虛擬機(jī)中修改設(shè)備樹
`lv_obj_tree.h` 在 **LVGL v9** 中的位置和作用
蜂鳥e203移植要從哪些方面入手,在bsp中哪里修改引腳對(duì)應(yīng)關(guān)系,約束文件?
飛凌嵌入式ElfBoard ELF 1板卡-Linux系統(tǒng)基礎(chǔ)入門-目錄相關(guān)shell命令
如何在不直接使用 HCI UART 的情況下為 CYSBSYSKIT-DEV 01 設(shè)置Bluetooth?地址?
智慧礦山場(chǎng)景:聚徽嵌入式工控一體機(jī)如何實(shí)現(xiàn)井下設(shè)備無人化操控
在任何平臺(tái)上使用PetaLinux的先決條件
請(qǐng)問在S32K344中,DMA的各個(gè)channel是否與LPSPI 0~6有固定的對(duì)應(yīng)關(guān)系?
從零開始馴服Linux(一):ZYNQ-Linux啟動(dòng)文件構(gòu)建全解析
請(qǐng)問stm32mp257如何修改設(shè)備樹并加載驅(qū)動(dòng)?
在下載的源碼進(jìn)入bsp目錄下的一個(gè)板子中執(zhí)行menuconfig報(bào)錯(cuò),怎么解決?
DLP4710EVM I2C指令中的LED current數(shù)值和GUI里的mA數(shù)是什么對(duì)應(yīng)關(guān)系呢?
編譯系統(tǒng)鏡像教程
在Petalinux中應(yīng)該如何確認(rèn)dev目錄下設(shè)備的對(duì)應(yīng)關(guān)系?
評(píng)論