成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

添加樹莓派4B到OHOS3.0編譯框架

系統
之前在樹莓派4b上點亮了OHOS3.0,不過內核是用tftp拉取的,根文件系統掛在了NFS上,拔了網線就無法啟動。于是我整理了添加樹莓派單板到編譯框架的內容,希望對各位有所幫助,為大家避坑。

[[439119]]

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

前言

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

一、添加編譯配置文件和gn

1.添加RPI4B.json

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

  1. productdefine\common\products\RPI4B.json 

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

  1. ... .. 
  2. "product_build_path""device/raspberrypi/build"
  3. "parts":{ 
  4.     ... ... 
  5.     "raspberrypi_products:raspberrypi_products":{}, 
  6.     ... ... 
  7.     } 

2.添加ohos.build

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

  1. device\raspberrypi\build\ohos.build 
  1.     "subsystem""raspberrypi_products"
  2.     "parts": { 
  3.         "raspberrypi_products": { 
  4.             "module_list": [ 
  5.                 "//device/raspberrypi/build:products_group" 
  6.             ] 
  7.         } 
  8.     } 

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

  1. import("//build/ohos.gni"
  2.  
  3. device_type = "rpi4b" 
  4. group("products_group") { 
  5.   deps += [ 
  6.     "//device/raspberrypi/rpi4b:rpi4b_group" 
  7.   ] 

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

  1. device\raspberrypi\rpi4b\BUILD.gn 
  1. import("//build/ohos.gni"
  2.  
  3. print("rpi4b_group in"
  4. group("rpi4b_group") { 
  5.   deps = [ 
  6.     "build/rootfs:init_configs"
  7.     "//kernel/linux/build:linux_kernel" 
  8.   ] 

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

二、樹莓派內核相關

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

1.raspberrypi內核補丁文件

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

  1. kernel\linux\build\kernel.mk 
  1. DEVICE_PATCH_DIR := $(OHOS_BUILD_HOME)/kernel/linux/patches/${KERNEL_VERSION}/$(DEVICE_NAME)_patch 
  2. DEVICE_PATCH_FILE := $(DEVICE_PATCH_DIR)/$(DEVICE_NAME).patch 
  3. ... ... 
  4. $(KERNEL_IMAGE_FILE): 
  5.     $(hide) echo "build kernel..." 
  6.     $(hide) rm -rf $(KERNEL_SRC_TMP_PATH);mkdir -p $(KERNEL_SRC_TMP_PATH);cp -arfL $(KERNEL_SRC_PATH)/* $(KERNEL_SRC_TMP_PATH)/ 
  7.     $(hide) cd $(KERNEL_SRC_TMP_PATH) && patch -p1 < $(HDF_PATCH_FILE) && patch -p1 < $(DEVICE_PATCH_FILE) 
  8. ifneq ($(findstring $(BUILD_TYPE), small),) 
  9.     $(hide) cd $(KERNEL_SRC_TMP_PATH) && patch -p1 < $(SMALL_PATCH_FILE) 
  10. endif 

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

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

  1. kernel\linux\patches\linux-5.10\rpi4b_patch\hdf.patch 
  2. kernel\linux\patches\linux-5.10\rpi4b_patch\rpi4b.patch 

2.內核編譯配置文件

  1. kernel\linux\config\linux-5.10\arch\arm\configs\rpi4b_standard_defconfig 

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

  1. ~/ohos/kernel/linux/config/linux-5.10/arch/arm/configs/rpi4b_standard_defconfig 
  2. ##################################################################################### 
  3. > Security options 
  4.     > (32768) Low address space for LSM to protect from user allocation  
  5.  
  6.     [*] NSA SELinux Support             #(選中) 
  7.     [*]   NSA SELinux boot parameter    #(選中) 
  8.     [ ]   NSA SELinux runtime disable 
  9.     [*]   NSA SELinux Development Support 
  10.     [*]   NSA SELinux AVC Statistics 
  11.     (1)   NSA SELinux checkreqprot default value    #(設置為1) 
  12.     (9)   NSA SELinux sidtab hashtable size 
  13.     (256) NSA SELinux SID to context string translation cache size 
  14.         First legacy 'major LSM' to be initialized (SELinux)  ---> #(選中) SELinux 
  15.         Ordered list of enabled LSMs #(填入:"lockdown,yama,loadpin,safesetid,integrity,selinux,smack,tomoyo,apparmor,bpf"
  16. ##################################################################################### 
  17. > Device Drivers 
  18.     > Android 
  19.         [*] Android Drivers #(開啟) 
  20.         [*]   Android Binder IPC Driver #(開啟) 
  21. ##################################################################################### 
  22. > Device Drivers  
  23.     > Sound card support 
  24.         <*> Advanced Linux Sound Architecture #(選中,直接編進內核) 
  25.             <*>   ALSA for SoC audio support #(選中,直接編進內核) 
  26. > Device Drivers  
  27.     > Graphics support 
  28.         <*> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) #(選中,直接編進內核) 
  29.         <*> Broadcom V3D 3.x and newer #(選中,直接編進內核) 
  30.         <*> Broadcom VC4 Graphics #(選中,這個依賴前面的聲卡設置,不然是無法編入內核的) 
  31. ##################################################################################### 
  32. > Device Drivers  
  33.     > Input device support  
  34.         > Touchscreens 
  35.             <*>   Raspberry Pi's firmware base touch screen support #(選中,直接編進內核) 

三、驅動適配

1.顯示配置

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

  1. dtoverlay=vc4-fkms-v3d 

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

  1. system\etc\weston.ini 
  1. [output
  2. name=card0 

2.觸摸配置

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

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

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

  1. third_party\eudev\rules.d\touchscreen.rules 
  1. ATTRS{name}=="raspberrypi-ts", ENV{ID_INPUT}="1", ENV{ID_INPUT_TOUCHSCREEN}="1" 
  2. ATTRS{name}=="VSoC keyboard", ENV{ID_INPUT}="1", ENV{ID_INPUT_KEYBOARD}="1" 
  3. DRIVERS=="hid-multitouch", ENV{ID_INPUT}="1", ENV{ID_INPUT_TOUCHSCREEN}="1" 

四、制作鏡像文件

1.修改內核編譯腳本

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

  1. kernel\linux\build\kernel.mk 將 uImage 改為 zImage modules dtbs 
  1. $(hide) $(KERNEL_MAKE) -C $(KERNEL_SRC_TMP_PATH) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) -j64 zImage 
  1. kernel\linux\build\build_kernel.sh 
  1. - cp ${2}/kernel/src_tmp/${8}/arch/arm/boot/uImage ${3}/uImage 
  2. + cp ${2}/kernel/src_tmp/${8}/arch/arm/boot/zImage ${3}/zImage 
  1. kernel\linux\build\BUILD.gn 
  1. - outputs = [ "$root_build_dir/packages/phone/images/uImage" ] 
  2. + outputs = [ "$root_build_dir/packages/phone/images/zImage" ] 
  1. kernel\linux\build\kernel_module_build.sh 
  1. - LINUX_KERNEL_UIMAGE_FILE=${LINUX_KERNEL_OUT}/arch/arm/boot/uImage 
  2. + LINUX_KERNEL_UIMAGE_FILE=${LINUX_KERNEL_OUT}/arch/arm/boot/zImage 

這里內核編譯會依賴product_path="vendor/product_company/productc​ompany/product_name"下的hdf.hcs文件,得先新建一個應付下,不然會報下面這個錯誤。

  1. 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 
  2.  
  3. 新建:vendor/raspberrypi/RPI4B/hdf_config/uhdf/hdf.hcs 
  1. root { 
  2.     module = "default"

2.制作樹莓派boot目錄

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

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

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

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

Linux:可以使用dd命令

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

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

文章相關附件可以點擊下面的原文鏈接前往下載:

https://harmonyos.51cto.com/resource/1559

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

 

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2021-11-23 15:35:05

鴻蒙HarmonyOS應用

2022-06-21 11:02:27

系統移植鴻蒙

2021-12-31 10:00:30

鴻蒙HarmonyOS應用

2022-01-04 15:35:51

鴻蒙HarmonyOS應用

2021-10-20 10:04:47

鴻蒙HarmonyOS應用

2021-09-26 10:22:41

鴻蒙HarmonyOS應用

2021-11-29 15:17:48

鴻蒙HarmonyOS應用

2021-11-24 10:09:41

鴻蒙樹莓操作系統

2019-03-31 08:00:02

樹莓派更新樹莓派 Linux

2021-01-25 16:39:08

鴻蒙HarmonyOS添加單板

2021-07-25 10:30:04

樹莓派Linux

2019-03-24 20:30:18

樹莓派Linux

2019-03-12 18:33:57

樹莓派Linux

2022-05-16 11:30:39

openEuler樹莓派鴻蒙

2021-09-26 10:11:14

Ubuntu樹莓派

2019-03-23 19:33:14

樹莓派Linux操作系統

2021-03-29 21:24:40

樹莓派Linux

2022-02-11 09:24:05

樹莓派OpenWrt固定IP服務

2018-10-12 11:20:20

樹莓派NAS Linux

2022-02-11 14:28:50

樹莓派Openharmon鴻蒙
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲日本三级 | 综合激情网 | 国产精品久久久久久一区二区三区 | 亚洲在线一区二区 | 亚洲精品日韩在线观看 | 久久爱一区 | 国产成人精品区一区二区不卡 | 亚洲午夜精品一区二区三区他趣 | 在线中文字幕视频 | 国产精品日本一区二区不卡视频 | 国产成人在线播放 | 国产一区二区欧美 | 国产亚洲欧美另类一区二区三区 | 日韩1区 | 极品久久| 成人一区二区在线 | 亚洲毛片在线 | 中文字幕一区二区三区精彩视频 | 日韩av看片 | 中文字幕免费在线 | 久久精品男人的天堂 | 99精品视频一区二区三区 | 色婷婷综合久久久久中文一区二区 | 色呦呦在线 | 自拍偷拍视频网 | 国产免费一级一级 | 成人小视频在线免费观看 | 性欧美精品一区二区三区在线播放 | 一区二区三区日韩精品 | 午夜视频导航 | 久久精品97 | 操操操操操 | 视频一区二区三区中文字幕 | 99免费看| 日韩色在线 | 激情自拍偷拍 | 一级片在线播放 | 日本三级电影在线观看视频 | 2020国产在线 | 521av网站 | 日本成人中文字幕 |