91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何添加樹(shù)莓派單板到編譯框架

OpenHarmony技術(shù)社區(qū) ? 來(lái)源:HarmonyOS技術(shù)社區(qū) ? 作者:HarmonyOS技術(shù)社區(qū) ? 2022-01-04 14:44 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

之前在樹(shù)莓派 4b 上點(diǎn)亮了 OHOS3.0,不過(guò)內(nèi)核是用 tftp 拉取的,根文件系統(tǒng)掛在了 NFS 上,拔了網(wǎng)線就無(wú)法啟動(dòng)。

當(dāng)然這么操作只是為了方便調(diào)試,而最終需要的是一個(gè)可以燒錄到 TF 卡上的 img 鏡像文件。

這就需要將所有調(diào)試好的內(nèi)容添加到 OHOS3.0 的編譯框架,本以為是很簡(jiǎn)單的事情,好家伙,整了這么久,感覺(jué)添加編譯框架比移植本身更復(fù)雜。

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

添加編譯配置文件和 gn

①添加 RPI4B.json

主要參考 hisilicon build 組件倉(cāng):

https://gitee.com/openharmony/device_hisilicon_build

添加一個(gè) products 編譯組件,這個(gè)組件是在產(chǎn)品配置文件中指定的。比如:

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

②添加ohos.build

接下來(lái)在 device 目錄下,新建一個(gè) raspberrypi 編譯組件文件夾,并添加 ohos.build 文件。和前面產(chǎn)品配置文件中的設(shè)置對(duì)應(yīng)起來(lái)了。

device aspberrypiuildohos.build:

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

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

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

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

既然前面指定了 rpi4b 的編譯配置組件,那么就在 device aspberrypi 新建一個(gè) 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"
]
}

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

樹(shù)莓派內(nèi)核相關(guān)

接下來(lái)分析下目前移植了樹(shù)莓派 4B 的哪些內(nèi)容,如何將這些內(nèi)容編譯進(jìn) OHOS3.0。

①raspberrypi 內(nèi)核補(bǔ)丁文件

關(guān)于補(bǔ)丁可以參考 Patch 組件:

https://gitee.com/openharmony/kernel_linux_patches

可以得知內(nèi)核編譯由 kernel.mk 來(lái)執(zhí)行。

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

所以補(bǔ)丁文件需要放到正確的路徑下,以正確的名字命名就可以 patch 到內(nèi)核。

hdf.patch 補(bǔ)丁文件,現(xiàn)在還沒(méi)有移植 HDF 相關(guān)內(nèi)容,所以可以先使用 Hi3516 的 rpi4b.patch 補(bǔ)丁文件,使用樹(shù)莓派的官方鏡像:

https://github.com/raspberrypi/linux

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

②內(nèi)核編譯配置文件

kernellinuxconfiglinux-5.10archarmconfigsrpi4b_standard_defconfig

內(nèi)核配置文件目前已知的需要開(kāi)啟下面內(nèi)容,但是肯定不止這些,以后會(huì)繼續(xù)更新:

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

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

驅(qū)動(dòng)適配

①顯示配置

Pi4 的 GPU 是 VideoCore VI 支持 OpenGL ES 3.2,而 Pi3 的 GPU 是 VideoCore IV 支持 OpenGL ES 2.0。

VideoCore IV 驅(qū)動(dòng)程序是 VC4,VideoCore VI 驅(qū)動(dòng)程序的 V3D。內(nèi)核已經(jīng)提供驅(qū)動(dòng),參考 rpi4b_standard_defconfig 將驅(qū)動(dòng)直接編入到內(nèi)核。

同時(shí)需要在 config.txt 中開(kāi)啟設(shè)置:

dtoverlay=vc4-fkms-v3d

OHOS 中修改 weston 的配置文件,指定顯示驅(qū)動(dòng)。

systemetcweston.ini:

[output]
name=card0

②觸摸配置

具體思路就是先查找設(shè)備號(hào),根據(jù)設(shè)備號(hào)找到驅(qū)動(dòng)程序。

ls-l/sys/dev/char/|grepinput#查看input下的觸摸設(shè)備的主次設(shè)備號(hào)
cat/sys/dev/char/13:64/device/uevent#然后輸入主次設(shè)備號(hào),查看設(shè)備的驅(qū)動(dòng)程序
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

前面內(nèi)核配置的時(shí)候 rpi4b_standard_defconfig 中已經(jīng)將觸摸驅(qū)動(dòng)編入內(nèi)核,所以后面不需要在 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"

制作鏡像文件

①修改內(nèi)核編譯腳本

正常情況下內(nèi)核是由 uboot 進(jìn)行引導(dǎo)的,而且 OHOS 默認(rèn)生成 uImage。

但是樹(shù)莓派自帶 BootLoader,雖然可以先用樹(shù)莓派自帶的 BootLoader 啟動(dòng) uboot,再用 uboot 加載 uImage,但是這樣會(huì)比較麻煩,而且會(huì)增加啟動(dòng)時(shí)間。不過(guò)目前 zImage 是寫(xiě)死在 kernel.mk 中的,沒(méi)辦法改下編譯腳本。

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

這里內(nèi)核編譯會(huì)依賴 product_path="vendor/product_company/product

company/product_name"下的 hdf.hcs 文件,得先新建一個(gè)應(yīng)付下,不然會(huì)報(bào)下面這個(gè)錯(cuò)誤。

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";
}

②制作樹(shù)莓派 boot 目錄

對(duì)于鏡像燒錄,Hi3516 會(huì)將 uImage、system.img、vendor.img 等鏡像燒寫(xiě)到 emmc,但是樹(shù)莓派使用 TF 卡啟動(dòng),所以需要對(duì) TF 卡進(jìn)行分區(qū),然后復(fù)制對(duì)應(yīng)的內(nèi)容到各個(gè)分區(qū)。

首先制作樹(shù)莓派 boot 目錄,這個(gè)用來(lái)目錄存放樹(shù)莓派設(shè)備樹(shù)、config.txt、cmdline.txt、內(nèi)核鏡像等信息。

寫(xiě)一個(gè)簡(jiǎn)單的 mkboot.py 腳本來(lái)實(shí)現(xiàn)這個(gè)功能,位置在碼倉(cāng) rpi4bdevice aspberrypiimagesmkboot.py 將會(huì)生成 boot.img。

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

還是寫(xiě)一個(gè)簡(jiǎn)單的腳本來(lái)處理這個(gè)步驟 rpi4bdevice aspberrypiimagesmkboot.py。

不過(guò)有個(gè)問(wèn)題,主分區(qū)只支持 4 個(gè),所以 updater.img 暫時(shí)先不合并了,這個(gè)問(wèn)題等以后再來(lái)處理。

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

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

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

原文標(biāo)題:添加樹(shù)莓派4B到OHOS3.0編譯框架

文章出處:【微信公眾號(hào):HarmonyOS技術(shù)社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

審核編輯:彭菁

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    88

    文章

    11760

    瀏覽量

    219047
  • 編譯
    +關(guān)注

    關(guān)注

    0

    文章

    694

    瀏覽量

    35166
  • 樹(shù)莓派
    +關(guān)注

    關(guān)注

    122

    文章

    2078

    瀏覽量

    110474

原文標(biāo)題:添加樹(shù)莓派4B到OHOS3.0編譯框架

文章出處:【微信號(hào):gh_834c4b3d87fe,微信公眾號(hào):OpenHarmony技術(shù)社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    實(shí)用樹(shù)莓Linux編譯指南,打工人必備!

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

    樹(shù)莓的MATLAB Server編譯安裝與LED控制

    執(zhí)行對(duì)應(yīng)的任務(wù)。因此不必少些matlab提供的鏡像文件,在現(xiàn)有的樹(shù)莓linux系統(tǒng)編譯安裝matlabd即可。首先需要安裝樹(shù)莓的user
    發(fā)表于 11-29 14:24

    樹(shù)莓MCC118

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

    樹(shù)莓首次開(kāi)機(jī)步驟總結(jié)

    樹(shù)莓開(kāi)機(jī)一直都是一個(gè)頭大的問(wèn)題對(duì)于我這種吃土黨,徒有一塊單板樹(shù)莓,也沒(méi)有顯示屏,這板子該這么用呢?今天我就來(lái)記錄一波
    發(fā)表于 01-18 07:20

    樹(shù)莓裝機(jī)教程

    樹(shù)莓裝機(jī)教程樹(shù)莓裝機(jī)教程樹(shù)莓裝機(jī)教程樹(shù)莓
    發(fā)表于 11-25 10:14 ?52次下載

    樹(shù)莓gpio應(yīng)用

    樹(shù)莓現(xiàn)在越來(lái)越火,網(wǎng)上樹(shù)莓的資料也越來(lái)越多。樹(shù)莓源自英國(guó),國(guó)外嵌入式開(kāi)源領(lǐng)域具有良好的分享
    發(fā)表于 11-09 15:10 ?4596次閱讀

    Fedora項(xiàng)目團(tuán)隊(duì)宣布添加對(duì)樹(shù)莓2和3的系統(tǒng)支持

    適配者早已經(jīng)注意Fedora 24中對(duì)樹(shù)莓的支持,不過(guò)當(dāng)時(shí)系統(tǒng)各個(gè)方面還不夠完善因此沒(méi)有正式發(fā)布。為了提升易用性我們還需要在很多細(xì)節(jié)方面進(jìn)行調(diào)試和修改?!睆慕裉扉_(kāi)始,樹(shù)莓
    發(fā)表于 04-02 14:44 ?476次閱讀

    樹(shù)莓是什么樹(shù)莓的簡(jiǎn)單介紹

    要想玩轉(zhuǎn)樹(shù)莓,首先得知道樹(shù)莓是什么。在本節(jié)中,作者將帶領(lǐng)大家揭開(kāi)樹(shù)莓的神秘面紗,了解
    發(fā)表于 05-15 18:09 ?31次下載
    <b class='flag-5'>樹(shù)莓</b><b class='flag-5'>派</b>是什么<b class='flag-5'>樹(shù)莓</b><b class='flag-5'>派</b>的簡(jiǎn)單介紹

    使用樹(shù)莓設(shè)計(jì)智能小車代碼上傳及編譯方法教程免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用樹(shù)莓設(shè)計(jì)智能小車代碼上傳及編譯方法教程免費(fèi)下載
    發(fā)表于 06-24 08:00 ?21次下載

    貿(mào)澤現(xiàn)已開(kāi)售運(yùn)行速度遠(yuǎn)超前代產(chǎn)品的樹(shù)莓5單板計(jì)算機(jī)

    2023 年 11 月 2 日 – 新型電子元器件與工業(yè)自動(dòng)化產(chǎn)品的全球授權(quán)代理商貿(mào)澤電子 (Mouser Electronics) 即日起開(kāi)售Raspberry Pi的樹(shù)莓5單板計(jì)算機(jī)。在
    發(fā)表于 11-06 16:14 ?1304次閱讀

    樹(shù)莓的功能用途是什么

    樹(shù)莓(Raspberry Pi)是一款由英國(guó)樹(shù)莓基金會(huì)研發(fā)的信用卡大小的單板計(jì)算機(jī),自2012年推出以來(lái),已經(jīng)發(fā)展出多個(gè)型號(hào)和版本。
    的頭像 發(fā)表于 08-30 18:01 ?7228次閱讀

    樹(shù)莓gpio有什么用,樹(shù)莓gpio接口及編程方法

    一、樹(shù)莓GPIO的用途 樹(shù)莓(Raspberry Pi)是一款小巧、功能強(qiáng)大的單板計(jì)算機(jī),廣泛應(yīng)用于編程教育、物聯(lián)網(wǎng)項(xiàng)目、家庭媒體中心等
    的頭像 發(fā)表于 10-22 18:09 ?4232次閱讀

    樹(shù)莓與其他單板計(jì)算機(jī)的比較

    在當(dāng)今的科技世界中,單板計(jì)算機(jī)(SBC)因其小巧、靈活和成本效益而成為教育、業(yè)余愛(ài)好者和專業(yè)開(kāi)發(fā)者的熱門選擇。樹(shù)莓作為這一領(lǐng)域的先驅(qū),已經(jīng)推出了多個(gè)版本,但市場(chǎng)上還有其他競(jìng)爭(zhēng)對(duì)手,如
    的頭像 發(fā)表于 11-11 11:18 ?3069次閱讀

    干貨來(lái)嘍!實(shí)用樹(shù)莓Linux編譯指南

    不友好,有沒(méi)有好的解決辦法? 今天來(lái)分享一下我的私藏干貨——樹(shù)莓Linux編譯編譯好之后,開(kāi)發(fā)板只需插到樹(shù)莓派上連接電腦就可以直接用了,
    的頭像 發(fā)表于 12-18 16:31 ?1081次閱讀
    干貨來(lái)嘍!實(shí)用<b class='flag-5'>樹(shù)莓</b><b class='flag-5'>派</b>Linux<b class='flag-5'>編譯</b>指南

    樹(shù)莓6 傳聞:發(fā)布日期與規(guī)格!

    將為你帶來(lái)關(guān)于即將發(fā)布的樹(shù)莓6的猜想。據(jù)傳,樹(shù)莓6是一款正在研發(fā)中的單板計(jì)算機(jī)(SBC),作為樹(shù)莓
    的頭像 發(fā)表于 07-11 16:21 ?2344次閱讀
    <b class='flag-5'>樹(shù)莓</b><b class='flag-5'>派</b>6 傳聞:發(fā)布日期與規(guī)格!