BBB學習(十九):cape介紹(二)cape管理簡介

一 前言

前節簡單介紹了devicetree的語法,以及通過查表法來配置device tree相關配置引腳,因此可以參考相關device tree來配置自己的設備樹文件,但實際中,BBB本身有一套cape管理方式,可以針對不同的cape來加載不同的dtbo。本節將對BBB的cape管理進行相關介紹。

BBB對DTBO的加載有以下幾個方法:

  • 在終端通過指令手動加載
  • 修改開機啓動文件實現開機時自動加載
  • 開機自動識別cape(擴展板)中記錄實現自動加載

二 介紹及操作

2.1 cape的概念

接觸BBB之後,經常會看到這個詞cape,什麼是cape?英文單詞的意思我們可以看到:

img

英文單詞本身有意思有海峽、披肩等,但對於BBB而言,cape是指一些公司和個人開發的對就BBB擴展引腳的功能擴展板,而在BBB中對擴展板的管理主要體現在對dtbo的加載管理上,每一個擴展板功能不同,其採用的接口也不相同,因此需要加載可以覆蓋原有擴展口功能,並加載相應驅動。

https://elinux.org/Beagleboard:BeagleBone_Capes

img

官方WIKI中詳細地說明了CAPE和DT及Kernel的關係:“BeagleBone and the 3.8 Kernel”,如果想深入瞭解可以看這裏:

http://elinux.org/BeagleBone_and_the_3.8_Kernel#Cape_Manager_requirements)

2.2 查看當前已加載dtbo

輸入以下命令,可以看出cape管理文件的路徑,同時可以看出,默認情況下BBB沒有加載任何dtbo文件。圖中4個空白位置是指根據擴展板中eeprom內容加載的dtbo文件,也就是說:

  • 手動加載的dtbo全部在這4個後面
  • 對擴展板加載的dtbo最多是4個。
cat /sys/devices/platform/bone_capemgr/slots

img

2.3 手動加載dtbo

向cape管理文件中寫入相應的dtbo文件,一般在BBB文件路徑/lib/firmware下可以看系統中已有的dtbo文件。這個路徑是系統的默認的加載dtbo搜索路徑。

ls /lib/firmware/BB*

img

向capmgr文件中寫稿已存在的dtbo文件,查看已加載的dtbo文件可以看到已經加載成功。

echo 'BB-PWM2' > /sys/devices/platform/bone_capemgr/slots

img

2.4 開機自動加載默認dtbo

修改以下文件,可以設置開機時需要加載的dtbo文件:

/boot/uEnv.txt

img

原有文件中已經註釋,默認不加載任何dtbo文件,去掉註釋,並將BBB-PWM2做爲默認加載:

img

BBB重新上電後,查看capemgr文件已成功加載該dtbo文件:

img

2.5 根據實際cape加載dtbo

根據實際cape加載是指:在開發的BBB擴展板中,如果有eeprom,可以將需要加載的dtbo文件以一定的格式保存在裏面,這樣BBB開機的時候會自動識別並加載。由於本人沒有這樣的擴展板,這裏只根據官方文檔SRM,對主要流程進行描述。

2.5.1 查看cape上eeprom地址

eeprom做爲i2c讀寫器件,其本身是有地址的,而且可以通過eeprom上的引腳來配置其地址,因此官方建議通過撥碼開關的方式做成可配置地址形式,其電路圖如下:

img

需要注意的是:

  • 系統識別eeprom的i2c的地址範圍爲0x54到0x57之間,因此BBB最多可識別4塊地址不同的eeprom。
  • eeprom必須連接到BBB的I2C2_SCL和I2C2_SDA引腳上,也就是在P9端子上的第19和第20個引腳。
  • 官方建議如果eeprom內容固定後最好把寫保護引腳拉高,防止對eeprom內容誤操作。

2.5.2 向eeprom寫入信息

在eeprom中寫入固定格式的擴展板信息,其格式在官方文檔中有描述,如下圖:

img

可以通過以下命令來寫入數據:

cd /sys/bus/i2c/devices/1-0054/  #到eeprom目錄中  
cat eeprom | hexdump -C  #讀取eeprom內容並以字符形式顯示  
echo -e "\xaa\x55\x33\xeeA1Beaglebone PWM2 Cape\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0000A1BeagleboardToys\x00BB-PWM2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" > eeprom  #寫入內容  
cat eeprom | hexdump -C  #確認是否寫入成功  

注意:

  • 寫入內容中如果要按照上圖格式,重點是headerpart number這兩部分。其他部分都可以用0來覆蓋。
  • 內容中version必須是寫成00A0格式,part number必須寫成對應dtbo文件的文件名,如本例中是BB-PWM2,這個部分將合成整個dtbo的文件名BB-PWM2-00A0

完成以上步驟後,重啓BBB,就可以實現自動加載dtbo了。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章