精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何添加樹莓派單板到編譯框架

OpenHarmony技術社區 ? 來源:HarmonyOS技術社區 ? 作者:HarmonyOS技術社區 ? 2022-01-04 14:44 ? 次閱讀

之前在樹莓派 4b 上點亮了 OHOS3.0,不過內核是用 tftp 拉取的,根文件系統掛在了 NFS 上,拔了網線就無法啟動。

當然這么操作只是為了方便調試,而最終需要的是一個可以燒錄到 TF 卡上的 img 鏡像文件。

這就需要將所有調試好的內容添加到 OHOS3.0 的編譯框架,本以為是很簡單的事情,好家伙,整了這么久,感覺添加編譯框架比移植本身更復雜。

于是我整理了添加樹莓派單板到編譯框架的內容,希望對各位有所幫助,為大家避坑。

添加編譯配置文件和 gn

①添加 RPI4B.json

主要參考 hisilicon build 組件倉:

https://gitee.com/openharmony/device_hisilicon_build

添加一個 products 編譯組件,這個組件是在產品配置文件中指定的。比如:

productdefinecommonproductsRPI4B.json
其他部分參考 Hi3516,但是其中 2 條,指定單板組件路徑,并添加組件。如果刪除這兩條,將不能編譯內核,只生成 OHOS 的文件系統。
.....
"product_build_path":"device/raspberrypi/build",
"parts":{
......
"raspberrypi_products:raspberrypi_products":{},
......
}

②添加ohos.build

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

device aspberrypiuildohos.build:

{
"subsystem":"raspberrypi_products",
"parts":{
"raspberrypi_products":{
"module_list":[
"http://device/raspberrypi/build:products_group"
]
}
}
}

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

import("http://build/ohos.gni")

device_type="rpi4b"
group("products_group"){
deps+=[
"http://device/raspberrypi/rpi4b:rpi4b_group"
]
}

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

https://gitee.com/openharmony/device_hisilicon_hi3516dv300

device aspberrypi pi4bBUILD.gn:

import("http://build/ohos.gni")

print("rpi4b_groupin")
group("rpi4b_group"){
deps=[
"build/rootfs:init_configs",
"http://kernel/linux/build:linux_kernel"
]
}

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

樹莓派內核相關

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

①raspberrypi 內核補丁文件

關于補丁可以參考 Patch 組件:

https://gitee.com/openharmony/kernel_linux_patches

可以得知內核編譯由 kernel.mk 來執行。

kernellinuxuildkernel.mk:

DEVICE_PATCH_DIR:=$(OHOS_BUILD_HOME)/kernel/linux/patches/${KERNEL_VERSION}/$(DEVICE_NAME)_patch
DEVICE_PATCH_FILE:=$(DEVICE_PATCH_DIR)/$(DEVICE_NAME).patch
......
$(KERNEL_IMAGE_FILE):
$(hide)echo"buildkernel..."
$(hide)rm-rf$(KERNEL_SRC_TMP_PATH);mkdir-p$(KERNEL_SRC_TMP_PATH);cp-arfL$(KERNEL_SRC_PATH)/*$(KERNEL_SRC_TMP_PATH)/
$(hide)cd$(KERNEL_SRC_TMP_PATH)&&patch-p1

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

hdf.patch 補丁文件,現在還沒有移植 HDF 相關內容,所以可以先使用 Hi3516 的 rpi4b.patch 補丁文件,使用樹莓派的官方鏡像:

https://github.com/raspberrypi/linux

kernellinuxpatcheslinux-5.10rpi4b_patchhdf.patch
kernellinuxpatcheslinux-5.10rpi4b_patchrpi4b.patch

②內核編譯配置文件

kernellinuxconfiglinux-5.10archarmconfigsrpi4b_standard_defconfig

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

~/ohos/kernel/linux/config/linux-5.10/arch/arm/configs/rpi4b_standard_defconfig
#####################################################################################
>Securityoptions
>(32768)LowaddressspaceforLSMtoprotectfromuserallocation

[*]NSASELinuxSupport#(選中)
[*]NSASELinuxbootparameter#(選中)
[]NSASELinuxruntimedisable
[*]NSASELinuxDevelopmentSupport
[*]NSASELinuxAVCStatistics
(1)NSASELinuxcheckreqprotdefaultvalue#(設置為1)
(9)NSASELinuxsidtabhashtablesize
(256)NSASELinuxSIDtocontextstringtranslationcachesize
Firstlegacy'majorLSM'tobeinitialized(SELinux)--->#(選中)SELinux
OrderedlistofenabledLSMs#(填入:"lockdown,yama,loadpin,safesetid,integrity,selinux,smack,tomoyo,apparmor,bpf")
#####################################################################################
>DeviceDrivers
>Android
[*]AndroidDrivers#(開啟)
[*]AndroidBinderIPCDriver#(開啟)
#####################################################################################
>DeviceDrivers
>Soundcardsupport
<*>AdvancedLinuxSoundArchitecture#(選中,直接編進內核)
<*>ALSAforSoCaudiosupport#(選中,直接編進內核)
>DeviceDrivers
>Graphicssupport
<*>DirectRenderingManager(XFree864.1.0andhigherDRIsupport)#(選中,直接編進內核)
<*>BroadcomV3D3.xandnewer#(選中,直接編進內核)
<*>BroadcomVC4Graphics#(選中,這個依賴前面的聲卡設置,不然是無法編入內核的)
#####################################################################################
>DeviceDrivers
>Inputdevicesupport
>Touchscreens
<*>RaspberryPi'sfirmwarebasetouchscreensupport#(選中,直接編進內核)

驅動適配

①顯示配置

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 中開啟設置:

dtoverlay=vc4-fkms-v3d

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

systemetcweston.ini:

[output]
name=card0

②觸摸配置

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

ls-l/sys/dev/char/|grepinput#查看input下的觸摸設備的主次設備號
cat/sys/dev/char/13:64/device/uevent#然后輸入主次設備號,查看設備的驅動程序
PRODUCT=19/0/0/0
NAME="raspberrypi-ts"
PROP=2
EV=b
KEY=4000000000000
ABS=26080003
MODALIAS=input:b0019v0000p0000e0000-e0,1,3,k14A,ra0,1,2F,35,36,39,mlsfw

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

third_partyeudev ules.d ouchscreen.rules:

ATTRS{name}=="raspberrypi-ts",ENV{ID_INPUT}="1",ENV{ID_INPUT_TOUCHSCREEN}="1"
ATTRS{name}=="VSoCkeyboard",ENV{ID_INPUT}="1",ENV{ID_INPUT_KEYBOARD}="1"
DRIVERS=="hid-multitouch",ENV{ID_INPUT}="1",ENV{ID_INPUT_TOUCHSCREEN}="1"

制作鏡像文件

①修改內核編譯腳本

正常情況下內核是由 uboot 進行引導的,而且 OHOS 默認生成 uImage。

但是樹莓派自帶 BootLoader,雖然可以先用樹莓派自帶的 BootLoader 啟動 uboot,再用 uboot 加載 uImage,但是這樣會比較麻煩,而且會增加啟動時間。不過目前 zImage 是寫死在 kernel.mk 中的,沒辦法改下編譯腳本。

kernellinuxuildkernel.mk 將 uImage 改為 zImage modules dtbs:

$(hide)$(KERNEL_MAKE)-C$(KERNEL_SRC_TMP_PATH)ARCH=$(KERNEL_ARCH)$(KERNEL_CROSS_COMPILE)-j64zImage

kernellinuxuilduild_kernel.sh:

-cp${2}/kernel/src_tmp/${8}/arch/arm/boot/uImage${3}/uImage
+cp${2}/kernel/src_tmp/${8}/arch/arm/boot/zImage${3}/zImage

kernellinuxuildBUILD.gn:

-outputs=["$root_build_dir/packages/phone/images/uImage"]
+outputs=["$root_build_dir/packages/phone/images/zImage"]

kernellinuxuildkernel_module_build.sh:

-LINUX_KERNEL_UIMAGE_FILE=${LINUX_KERNEL_OUT}/arch/arm/boot/uImage
+LINUX_KERNEL_UIMAGE_FILE=${LINUX_KERNEL_OUT}/arch/arm/boot/zImage

這里內核編譯會依賴 product_path="vendor/product_company/product

company/product_name"下的 hdf.hcs 文件,得先新建一個應付下,不然會報下面這個錯誤。

ninja:error:‘…/…/vendor/raspberrypi/RPI4B/hdf_config/uhdf/hdf.hcs’,neededby‘gen/drivers/adapter/uhdf2/hcs/hdf_default.hcb’,missingandnoknownruletomakeit
新建:vendor/raspberrypi/RPI4B/hdf_config/uhdf/hdf.hcs
root{
module="default";
}

②制作樹莓派 boot 目錄

對于鏡像燒錄,Hi3516 會將 uImage、system.img、vendor.img 等鏡像燒寫到 emmc,但是樹莓派使用 TF 卡啟動,所以需要對 TF 卡進行分區,然后復制對應的內容到各個分區。

首先制作樹莓派 boot 目錄,這個用來目錄存放樹莓派設備樹、config.txt、cmdline.txt、內核鏡像等信息

寫一個簡單的 mkboot.py 腳本來實現這個功能,位置在碼倉 rpi4bdevice aspberrypiimagesmkboot.py 將會生成 boot.img。

為了方便燒錄,需要將 boot.img、system.img、updater.img、vendor.img、userdata.img 合并成一個 rpi4b.img。

還是寫一個簡單的腳本來處理這個步驟 rpi4bdevice aspberrypiimagesmkboot.py。

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

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

Linux:可以使用 dd 命令。windows:使用Win32 Disk Imager工具燒錄即可。

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

原文標題:添加樹莓派4B到OHOS3.0編譯框架

文章出處:【微信公眾號:HarmonyOS技術社區】歡迎添加關注!文章轉載請注明出處。

審核編輯:彭菁

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11123

    瀏覽量

    207919
  • 編譯
    +關注

    關注

    0

    文章

    646

    瀏覽量

    32672
  • 樹莓派
    +關注

    關注

    116

    文章

    1679

    瀏覽量

    105256

原文標題:添加樹莓派4B到OHOS3.0編譯框架

文章出處:【微信號:gh_834c4b3d87fe,微信公眾號:OpenHarmony技術社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    樹莓的MATLAB Server編譯安裝與LED控制

    執行對應的任務。因此不必少些matlab提供的鏡像文件,在現有的樹莓linux系統編譯安裝matlabd即可。首先需要安裝樹莓的user
    發表于 11-29 14:24

    樹莓MCC118

    on Top),用于市場上最流行的單板計算機樹莓(Raspberry Pi)HAT是種附加板,帶有40W GPIO(通用輸入/輸出)連接器,符合Raspberry PiHAT規范。MCC 118 HAT
    發表于 01-21 09:22

    如何給樹莓添加開、關機鍵

    樹莓添加開、關機鍵聲明本文由u013062709原創,禁止二次修改發布。轉載及引用內容請注明出處,并標明本站網址。文中程序僅供學習使用,本人不承擔任何由使用文中代碼產生的法律責任。作為一個硬件
    發表于 10-28 08:28

    樹莓首次開機步驟總結

    樹莓開機一直都是一個頭大的問題對于我這種吃土黨,徒有一塊單板樹莓,也沒有顯示屏,這板子該這么用呢?今天我就來記錄一波
    發表于 01-18 07:20

    樹莓裝機教程

    樹莓裝機教程樹莓裝機教程樹莓裝機教程樹莓
    發表于 11-25 10:14 ?52次下載

    樹莓設置基本流程(上)

    第一步,在win系統下安裝樹莓的系統SD卡 第二步,安裝和啟動樹莓 第三步,如何設置樹莓
    發表于 11-30 11:03 ?17次下載

    樹莓gpio應用

    樹莓現在越來越火,網上樹莓的資料也越來越多。樹莓源自英國,國外嵌入式開源領域具有良好的分享
    發表于 11-09 15:10 ?4142次閱讀

    Fedora項目團隊宣布添加樹莓2和3的系統支持

    適配者早已經注意Fedora 24中對樹莓的支持,不過當時系統各個方面還不夠完善因此沒有正式發布。為了提升易用性我們還需要在很多細節方面進行調試和修改。”從今天開始,樹莓
    發表于 04-02 14:44 ?213次閱讀

    樹莓是什么樹莓的簡單介紹

    要想玩轉樹莓,首先得知道樹莓是什么。在本節中,作者將帶領大家揭開樹莓的神秘面紗,了解
    發表于 05-15 18:09 ?30次下載
    <b class='flag-5'>樹莓</b><b class='flag-5'>派</b>是什么<b class='flag-5'>樹莓</b><b class='flag-5'>派</b>的簡單介紹

    使用樹莓設計智能小車代碼上傳及編譯方法教程免費下載

    本文檔的主要內容詳細介紹的是使用樹莓設計智能小車代碼上傳及編譯方法教程免費下載
    發表于 06-24 08:00 ?19次下載

    2012年推出,樹莓單板電腦銷售量達三千萬臺

    近日,Raspberry Pi 基金會 CEO Eben Upton宣布,上周某個時候(應該是周二),他們賣出了第三千萬個樹莓單板電腦 。
    的頭像 發表于 12-16 14:26 ?3401次閱讀

    樹莓添加一個開、關機按鍵(原創)

    樹莓添加一個開、關機按鍵(原創)聲明關鍵詞問題起因解決方案一、實現方式二、實現原理三、改進方案聲明本文由曉宇(xiaoyu_ebox)原創,轉載及引用內容請注明出處,并標明本站網址。文中程序僅供
    發表于 10-22 10:06 ?8次下載
    給<b class='flag-5'>樹莓</b><b class='flag-5'>派</b><b class='flag-5'>添加</b>一個開、關機按鍵(原創)

    貿澤現已開售運行速度遠超前代產品的樹莓5單板計算機

    2023 年 11 月 2 日 – 新型電子元器件與工業自動化產品的全球授權代理商貿澤電子 (Mouser Electronics) 即日起開售Raspberry Pi的樹莓5單板計算機。在
    發表于 11-06 16:14 ?520次閱讀

    樹莓裝ubuntu和raspbian哪個更好

    樹莓(Raspberry Pi)是一款由英國樹莓基金會開發的單板計算機,廣泛應用于教育、科研、物聯網等領域。
    的頭像 發表于 08-30 15:41 ?225次閱讀

    樹莓的功能用途是什么

    樹莓(Raspberry Pi)是一款由英國樹莓基金會研發的信用卡大小的單板計算機,自2012年推出以來,已經發展出多個型號和版本。
    的頭像 發表于 08-30 18:01 ?1175次閱讀