導航:首頁 > 源碼編譯 > 設備樹文件反編譯

設備樹文件反編譯

發布時間:2024-03-29 11:27:07

1. 編譯linux內核設備樹文件使用什麼命令

Linux源碼的arch/powerpc/boot/dts/目錄下存放了很多dts文件,可以作為參考文件。另外dtc編譯器在內核源碼2.6.25版本之後已經被包含進去。在2.6.26版本之後,生成blob的簡單規則已經加入makefile,如下命令:
$ make ARCH=powerpc canyonlands.dtb

也可以根據自己的硬體修改好dts文件後,用下面類似命令生成dtb文件。
$ dtc -f -I dts -O dtb -R 8 -S 0x3000 test.dts > mpc836x_mds.dtb

$ mkimage -A ppc -O Linux -T flat_dt -C none -a 0x300000 -e 0 -d mpc836x_mds.dtb mpc836x_mds.dtu

2. 在鴻蒙(OHOS3.0)編譯框架中添加樹莓派4B

之前在樹莓派4b上點亮了OHOS3.0,不過內核是用tftp拉取的,根文件系統掛在了NFS上,拔了網線就無法啟動。當然這么操作只是為了方便調試,而最終需要的是一個可以燒錄到TF卡上的img鏡像文件。這就需要將所有調試好的內容添加到OHOS3.0的編譯框架,本以為是很簡單的事情,好傢伙,整了這么久,感覺添加編譯框架比移植本身更復雜。於是我整理了添加樹莓派單板到編譯框架的內容,希望對各位有所幫助,為大家避坑。

主要參考 hisilicon build組件倉,添加一個procts編譯組件,這個組件是在產品配置文件中指定的。比如

proctdefinecommonproctsRPI4B.json

其他部分參考Hi3516,但是其中2條,指定單板組件路徑,並添加組件。如果刪除這兩條,將不能編譯內核,只生成OHOS的文件系統。

接下來在device目錄下,新建一個raspberrypi編譯組件文件夾,並添加 ohos.build 文件。和前面產品配置文件中的設置對應起來了。

deviceraspberrypibuildohos.build

新建 deviceraspberrypibuildBUILD.gn 當然每個廠家不可能只有1個板子,如果有其他單板就在這里指定,比如樹莓派2B、3B等

既然前面指定了rpi4b的編譯配置組件,那麼就在 deviceraspberrypi 新建一個 rpi4b 的目錄,可以參考 hi3516dv300 build組件

deviceraspberrypirpi4bBUILD.gn

至此一個rpi4b build組件就添加到OHOS3.0的編譯框架了,之後相關內容添加到這個文件夾下就可以了。

接下來分析下目前移植了樹莓派4B的哪些內容,如何將這些內容編譯進OHOS3.0。

關於補丁可以參考 Patch組件,可以得知內核編譯由kernel.mk來執行

kernellinuxbuildkernel.mk

所以補丁文件需要放到正確的路徑下,以正確的名字命名就可以patch到內核。

hdf.patch補丁文件,現在還沒有移植HDF相關內容,所以可以先使用Hi3516的

rpi4b.patch補丁文件,使用樹莓派的官方鏡像,https://github.com/raspberrypi/linux

kernellinuxconfiglinux-5.10archarmconfigsrpi4b_standard_defconfig

內核配置文件目前已知的需要開啟下面內容,但是肯定不止這些,以後會繼續更新

Pi4的GPU是VideoCore VI支持OpenGL ES 3.2,而Pi3的GPU是VideoCore IV支持OpenGL ES 2.0。VideoCore IV 驅動程序是 VC4,VideoCore VI 驅動程序的 V3D。內核已經提供驅動,參考rpi4b_standard_defconfig將驅動直接編入到內核。

同時需要在config.txt中開啟設置

OHOS中修改weston的配置文件,指定顯示驅動

systemetcweston.ini

具體思路就是先查找設備號,根據設備號找到驅動程序。

前面內核配置的時候rpi4b_standard_defconfig中已經將觸摸驅動編入內核,所以後面不需要在init載入模塊了,修改下eudev的配置文件即可。

third_partyeudevrules.d ouchscreen.rules

正常情況下內核是由uboot進行引導的,而且OHOS默認生成uImage。但是樹莓派自帶BootLoader,雖然可以先用樹莓派自帶的BootLoader啟動uboot,再用uboot載入uImage,但是這樣會比較麻煩,而且會增加啟動時間。不過目前 zImage是寫死在kernel.mk中的,沒辦法改下編譯腳本把。

kernellinuxbuildkernel.mk 將 uImage 改為 zImage moles dtbs

kernellinuxbuildbuild_kernel.sh

kernellinuxbuildBUILD.gn

kernellinuxbuildkernel_mole_build.sh

這里內核編譯會依賴proct_path="vendor/$proct_company/$proct_name"下的hdf.hcs文件,得先新建一個應付下,不然會報下面這個錯誤。

ninja: error: '../../vendor/raspberrypi/RPI4B/hdf_config/uhdf/hdf.hcs', needed by 'gen/drivers/adapter/uhdf2/hcs/hdf_default.hcb', missing and no known rule to make it

新建:vendor/raspberrypi/RPI4B/hdf_config/uhdf/hdf.hcs

對於鏡像燒錄,Hi3516會將uImage、system.img、vendor.img等鏡像燒寫到emmc,但是樹莓派使用TF卡啟動,所以需要對TF卡進行分區,然後復制對應的內容到各個分區。首先製作樹莓派boot目錄,這個用來目錄存放樹莓派設備樹、config.txt、cmdline.txt、內核鏡像等信息。寫一個簡單的mkboot.py腳本來實現這個功能,位置在碼倉.py將會生成boot.img。

為了方便燒錄,需要將boot.img、system.img、updater.img、vendor.img、userdata.img合並成一個rpi4b.img。還是寫一個簡單的腳本來處理這個步驟.py。

不過有個問題,主分區只支持4個,所以updater.img暫時先不合並了,這個問題等以後再來處理。

最後將會得到一個rpi4b.img的鏡像文件,將這個文件燒錄到SD卡就可以了。

Linux:可以使用dd命令

windows:使用Win32 Disk Imager工具燒錄即可。

到這里總算是跑通了一個完整的添加新單板的流程,只不過目前只適配了顯示和觸摸。接下來打算嘗試HDF或者distributed部分。

閱讀全文

與設備樹文件反編譯相關的資料

熱點內容
怎麼在觸電新聞APP投放廣告 瀏覽:726
androidant教程 瀏覽:504
台灣經典動作片有哪些 瀏覽:578
團鬼六所有電影下載 瀏覽:664
動車如何退票app 瀏覽:59
javacalendar時分秒 瀏覽:300
邱淑貞拍過的r 瀏覽:384
日本胸大電影 瀏覽:366
武打片經典老電影1001武打片經典老電影 瀏覽:158
2t攜帶型硬碟文件夾取名字 瀏覽:849
兒童籃球電影 瀏覽:957
使用命令查字元查看ipv4地址 瀏覽:937
英文繪本在app哪裡看 瀏覽:671
老電影水生 瀏覽:727
python查詢資料庫結果保存 瀏覽:53
阿魯小表情文件夾 瀏覽:69
《龍貓》的導演是? 瀏覽:520
大尺度電影百度網盤鏈接 瀏覽:280
大話西遊2粵語1080下載 瀏覽:312
課程app哪裡找 瀏覽:515