色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

    文章

    11320

    瀏覽量

    209849
  • 編譯
    +關注

    關注

    0

    文章

    659

    瀏覽量

    32908
  • 樹莓派
    +關注

    關注

    117

    文章

    1710

    瀏覽量

    105722

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

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

收藏 人收藏

    評論

    相關推薦

    實用樹莓Linux編譯指南,打工人必備!

    不友好,有沒有好的解決辦法? 今天來分享一下我的私藏干貨——樹莓Linux編譯編譯好之后,開發板只需插到樹莓派上連接電腦就可以直接用了,
    的頭像 發表于 12-17 16:19 ?772次閱讀
    實用<b class='flag-5'>樹莓</b><b class='flag-5'>派</b>Linux<b class='flag-5'>編譯</b>指南,打工人必備!

    樹莓的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

    樹莓裝機教程

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

    樹莓gpio應用

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

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

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

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

    要想玩轉樹莓,首先得知道樹莓是什么。在本節中,作者將帶領大家揭開樹莓的神秘面紗,了解
    發表于 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 ?3468次閱讀

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

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

    樹莓裝ubuntu和raspbian哪個更好

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

    樹莓的功能用途是什么

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

    樹莓gpio有什么用,樹莓gpio接口及編程方法

    一、樹莓GPIO的用途 樹莓(Raspberry Pi)是一款小巧、功能強大的單板計算機,廣泛應用于編程教育、物聯網項目、家庭媒體中心等
    的頭像 發表于 10-22 18:09 ?1011次閱讀

    樹莓與其他單板計算機的比較

    在當今的科技世界中,單板計算機(SBC)因其小巧、靈活和成本效益而成為教育、業余愛好者和專業開發者的熱門選擇。樹莓作為這一領域的先驅,已經推出了多個版本,但市場上還有其他競爭對手,如
    的頭像 發表于 11-11 11:18 ?735次閱讀

    干貨來嘍!實用樹莓Linux編譯指南

    不友好,有沒有好的解決辦法? 今天來分享一下我的私藏干貨——樹莓Linux編譯編譯好之后,開發板只需插到樹莓派上連接電腦就可以直接用了,
    的頭像 發表于 12-18 16:31 ?134次閱讀
    干貨來嘍!實用<b class='flag-5'>樹莓</b><b class='flag-5'>派</b>Linux<b class='flag-5'>編譯</b>指南
    主站蜘蛛池模板: 女人高潮了拔出来了她什么感觉| 久久成人无码国产免费播放| 野花日本大全免费观看3中文版| 日日噜噜噜夜夜爽爽狠狠| 乱码国产丰满人妻WWW| 久久精品国产福利电影网| 激情内射亚洲一区二区三区| 国产又粗又猛又爽黄老大爷| 国产无遮挡色视频免费观看性色| 国产精品XXXXX免费A片| 国产高清视频a在线大全| 国产Av男人的天堂精品良久| 国产99久久亚洲综合精品西瓜tv| 国产AV精品国语对白国产| 国产跪地吃黄金喝圣水合集| 国产精品久久久久影院免费| 国产日韩精品一区二区在线观看| 国产精品一区二区四区| 国产毛A片啊久久久久久A| 国产精品自产拍在线观看网站| 国产精品97久久AV麻豆| 国产精品国产三级国产an| 国产区免费在线观看| 国色天香社区视频免费高清3| 黄网址在线观看| 久久永久视频| 牛和人交videos欧美| 强奸日本美女小游戏| 色播播电影| 性xxx免费| 亚洲人成网站在线播放| 在线电台收听| 97人视频国产在线观看| 边摸边吃奶边做激情叫床视| 国产精品 日韩精品 欧美| 果冻传媒2021一二三区| 久久久GOGO无码啪啪艺术| 暖暖 免费 高清 日本视频5| 入禽太深在线观看免费高清| 亚洲AV久久无码精品九号| 中国农村真实bbwbbwbbw|