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

樹(shù)莓派4B移植OHOS 3.0 LTS標(biāo)準(zhǔn)系統(tǒng)

系統(tǒng)
終于在樹(shù)莓派4B上將OHOS3.0啟動(dòng)起來(lái)了,雖然還不完整,目前只能實(shí)現(xiàn)的顯示和觸摸。但是可以和大家分享下我的思路。

[[436362]]

想了解更多內(nèi)容,請(qǐng)?jiān)L問(wèn):

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com

終于在樹(shù)莓派4B上將OHOS3.0啟動(dòng)起來(lái)了,雖然還不完整,目前只能實(shí)現(xiàn)的顯示和觸摸。但是可以和大家分享下我的思路。

[[436363]]

我的方法比較簡(jiǎn)單粗暴,直接使用的樹(shù)莓派的樹(shù)莓派linux rpi-5.10.y內(nèi)核。

Git地址:https://github.com/raspberrypi/linux

然后編譯OHOS3.0的文件系統(tǒng),看缺什么補(bǔ)什么大概是這個(gè)意思。

目前發(fā)現(xiàn)OHOS需要內(nèi)核開(kāi)啟selinux和binder

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig

然后修改下面幾項(xiàng):

  1. Security options  --->   
  2.     (32768) Low address space for LSM to protect from user allocation  
  3.  
  4.     [*] NSA SELinux Support             (選中) 
  5.     [*]   NSA SELinux boot parameter    (選中) 
  6.     [ ]   NSA SELinux runtime disable 
  7.     [*]   NSA SELinux Development Support 
  8.     [*]   NSA SELinux AVC Statistics 
  9.     (1)   NSA SELinux checkreqprot default value    (設(shè)置為1) 
  10.     (9)   NSA SELinux sidtab hashtable size 
  11.     (256) NSA SELinux SID to context string translation cache size 
  12.         First legacy 'major LSM' to be initialized (SELinux)  ---> (選中) SELinux 
  13.         Ordered list of enabled LSMs (填入:"lockdown,yama,loadpin,safesetid,integrity,selinux,smack,tomoyo,apparmor,bpf"
  14.  Device Drivers  ---> 
  15.     Android  ---> 
  16.         [*] Android Drivers (開(kāi)啟) 
  17.         [*]   Android Binder IPC Driver (開(kāi)啟) 

 目前發(fā)現(xiàn)開(kāi)啟這兩項(xiàng)hilog就可以輸出。

內(nèi)核掛上根文件系統(tǒng),至少可以啟動(dòng)串口有輸出了。然后分析下OHOS的圖形子系統(tǒng)。

OHOS目前是 內(nèi)核 -> DRM -> libdrm -> wayland -> weston 這么個(gè)模式,如有錯(cuò)誤歡迎指出。這里要感謝 @梁克雷 和釗哥ohos第三方板移植群各位的支持。

所以樹(shù)莓派的DRM正常了,后面顯示應(yīng)該就是沒(méi)為題的。好在樹(shù)莓派的生態(tài)比較開(kāi)放,資料還是比較好獲取的,在樹(shù)莓派官方論壇趴了一段時(shí)間。

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。

需要在 config.txt 中開(kāi)啟 vc4-fkms-v3d

而驅(qū)動(dòng)kernal已經(jīng)提供了模塊,只要在init階段將模塊加載就可以了

這里有個(gè)比較惡心的地方,OHOS的根文件系統(tǒng)使用的是Toybox,但是很多工具不支持,比如modprobe就沒(méi)有,所以只能根據(jù)modules.dep文件,一個(gè)一個(gè)insmod。當(dāng)然可以直接將驅(qū)動(dòng)編進(jìn)內(nèi)核也是可以的。

  1. "insmod /lib/modules/5.10.76-v7l/kernel/drivers/gpu/drm/drm_panel_orientation_quirks.ko"
  2. "insmod /lib/modules/5.10.76-v7l/kernel/drivers/video/backlight/backlight.ko"
  3. "insmod /lib/modules/5.10.76-v7l/kernel/drivers/gpu/drm/drm.ko"
  4. "insmod /lib/modules/5.10.76-v7l/kernel/drivers/media/cec/core/cec.ko"
  5. "insmod /lib/modules/5.10.76-v7l/kernel/drivers/video/fbdev/core/syscopyarea.ko"
  6. "insmod /lib/modules/5.10.76-v7l/kernel/drivers/video/fbdev/core/sysfillrect.ko"
  7. "insmod /lib/modules/5.10.76-v7l/kernel/drivers/video/fbdev/core/sysimgblt.ko"
  8. "insmod /lib/modules/5.10.76-v7l/kernel/drivers/video/fbdev/core/fb_sys_fops.ko"
  9. "insmod /lib/modules/5.10.76-v7l/kernel/drivers/gpu/drm/drm_kms_helper.ko"
  10. "insmod /lib/modules/5.10.76-v7l/kernel/sound/core/snd.ko"
  11. "insmod /lib/modules/5.10.76-v7l/kernel/sound/core/snd-timer.ko"
  12. "insmod /lib/modules/5.10.76-v7l/kernel/sound/core/snd-pcm.ko"
  13. "insmod /lib/modules/5.10.76-v7l/kernel/sound/core/snd-compress.ko"
  14. "insmod /lib/modules/5.10.76-v7l/kernel/sound/core/snd-pcm-dmaengine.ko"
  15. "insmod /lib/modules/5.10.76-v7l/kernel/sound/soc/snd-soc-core.ko"
  16. "insmod /lib/modules/5.10.76-v7l/kernel/drivers/gpu/drm/vc4/vc4.ko"
  17. "insmod /lib/modules/5.10.76-v7l/kernel/drivers/gpu/drm/scheduler/gpu-sched.ko"
  18. "insmod /lib/modules/5.10.76-v7l/kernel/drivers/gpu/drm/v3d/v3d.ko" 

 為了驗(yàn)證drm和libdrm是否正常,我寫(xiě)了一個(gè)簡(jiǎn)單的測(cè)試

  1. fd = open("/dev/dri/card0", O_RDWR | O_CLOEXEC); 
  2. if (fd < 0) { 
  3.     printf("open failed"); 
  4. }else
  5.     printf("open seccess\n"); 
  6.  
  7. uint32_t conn_id; 
  8. uint32_t crtc_id; 
  9. res = drmModeGetResources(fd);  // 獲取 crtc_id 和 connector_id 
  10. if (!res) { 
  11.     printf("ERROR: drmModeGetResources failed!\n"); 
  12.     drmClose(fd); 
  13.     return -1; 
  14. }else
  15.     printf("drmModeGetResources seccess\n"); 
  16. crtc_id = res->crtcs[0]; 
  17. conn_id = res->connectors[0]; 
  18.  
  19. conn = drmModeGetConnector(fd, conn_id);    // 獲取 drm_mode 
  20. if (!conn) { 
  21.     printf("ERROR: drmModeGetConnector failed!\n"); 
  22. }else
  23.     printf("drmModeGetConnector seccess\n"); 

其實(shí)libdrm是自帶測(cè)試的modetest,但是OHOS沒(méi)有加入編譯。也可以將modetest加入編譯框架

1.為modetest添加BUILD.gn

third_party\libdrm\tests\modetest\BUILD.gn

  1. import("//build/ohos.gni"
  2.  
  3. ohos_executable("modetest") { 
  4.  
  5.   sources = [ 
  6.     "buffers.c"
  7.     "cursor.c"
  8.     "modetest.c"
  9.   ] 
  10.  
  11.   cflags = [ 
  12.       "-Wno-pointer-arith"
  13.   ] 
  14.  
  15.   include_dirs = [ 
  16.     "../"
  17.     "."
  18.   ] 
  19.    
  20.   configs = [ "//third_party/libdrm:libdrm_config" ] 
  21.  
  22.   public_configs = [ "//third_party/libdrm:libdrm_public_config" ] 
  23.  
  24.   deps = [ 
  25.     "//third_party/libdrm:libdrm"
  26.     "//third_party/libdrm/tests/util/:util"
  27.   ] 
  28.  
  29.   public_deps = [] 
  30.  
  31.   install_images = [ 
  32.     "system"
  33.     "updater"
  34.   ] 
  35.   part_name = "graphic_standard" 
  36.   subsystem_name = "graphic" 

2.modetest依賴這個(gè)

third_party\libdrm\tests\util\BUILD.gn

  1. import("//build/ohos.gni"
  2.  
  3. ohos_static_library("util") { 
  4.  
  5.   sources = [ 
  6.     "format.c"
  7.     "kms.c"
  8.     "pattern.c"
  9.   ] 
  10.  
  11.   cflags = [] 
  12.  
  13.   include_dirs = [ 
  14.     "../"
  15.     "."
  16.   ] 
  17.    
  18.   configs = [ "//third_party/libdrm:libdrm_config" ] 
  19.  
  20.   public_configs = [ "//third_party/libdrm:libdrm_public_config" ] 
  21.  
  22.   deps = [ 
  23.     "//third_party/libdrm:libdrm"
  24.   ] 
  25.  
  26.   public_deps = [] 

3.加入到OHOS編譯框架,加在weston的依賴項(xiàng)里就可以了

third_party\weston\BUILD.gn

  1. "//third_party/libdrm:libdrm"
  2. "//third_party/libdrm/tests/util/:util"
  3. "//third_party/libdrm/tests/modetest/:modetest"

 有個(gè)報(bào)錯(cuò):?jiǎn)栴}不大,提示這個(gè)未使用,注釋的就好了

  1. third_party\libdrm\tests\util\pattern.c:988 
  2.     // void *mem_base = mem; 

如果modetest通過(guò)了,那剩下的就簡(jiǎn)單了指定weston的后端就可以了。

system\etc\weston.ini

  1. [output
  2. name=card0 

接下來(lái)是觸摸部分,我使用的是DSI接口的觸摸屏。

  1. hexdump /dev/input/event2   # 可以使用hexdump看觸摸設(shè)備有沒(méi)有輸出,可惜這個(gè)命令也不支持 
  2. cat /dev/input/event2       # cat也可以湊合用,只是輸出亂碼,但能證明觸摸是否好用 

 然后查看驅(qū)動(dòng)模塊

  1. ls -l /sys/dev/char/|grep input    # 查看input下的觸摸設(shè)備的主次設(shè)備號(hào) 
  2. cat /sys/dev/char/226\:0/device/uevent  # 然后輸入主次設(shè)備號(hào),查看設(shè)備的驅(qū)動(dòng)程序 
  3. DRIVER=raspberrypi-ts 
  4. ... ... 

 發(fā)現(xiàn)驅(qū)動(dòng)是raspberrypi-ts,那就好辦了,在init的時(shí)候安裝這個(gè)模塊就好了。

  1. "insmod /lib/modules/5.10.76-v7l/kernel/drivers/input/touchscreen/raspberrypi-ts.ko" 

基本是這么個(gè)思路,寫(xiě)出來(lái)和大家分享下,希望對(duì)正在移植的小伙伴能有些幫助。當(dāng)然加到鴻蒙編譯框架可能沒(méi)有這么簡(jiǎn)單,接下來(lái)我會(huì)先整理這部分的文檔,就更新在https://gitee.com/liangzili/harmony-raspberry這個(gè)倉(cāng)把,這個(gè)碼倉(cāng)我之前移植過(guò)OHOS1.0 LiteOS-A內(nèi)核到樹(shù)莓派2ModuleB,就直接放到一起了,近期會(huì)更新,感興趣的可以關(guān)注,一起討論。

想了解更多內(nèi)容,請(qǐng)?jiān)L問(wèn):

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com

 

責(zé)任編輯:jianghua 來(lái)源: 鴻蒙社區(qū)
相關(guān)推薦

2022-06-21 11:02:27

系統(tǒng)移植鴻蒙

2021-12-31 10:00:30

鴻蒙HarmonyOS應(yīng)用

2021-12-09 10:11:04

鴻蒙HarmonyOS應(yīng)用

2022-01-04 15:35:51

鴻蒙HarmonyOS應(yīng)用

2021-09-26 10:22:41

鴻蒙HarmonyOS應(yīng)用

2021-10-09 10:12:39

鴻蒙HarmonyOS應(yīng)用

2021-11-08 07:19:45

鴻蒙HarmonyOS應(yīng)用

2022-09-16 15:01:37

操作系統(tǒng)技術(shù)鴻蒙

2022-09-07 15:08:58

操作系統(tǒng)鴻蒙

2022-09-13 16:10:15

鴻蒙操作系統(tǒng)

2022-09-06 15:46:52

speexdsp鴻蒙

2024-03-22 15:28:36

樹(shù)莓派Linux

2022-09-27 15:57:20

OHOS代碼倉(cāng)庫(kù)

2023-06-27 15:12:46

C++三方庫(kù)移植

2022-09-14 15:28:19

操作系統(tǒng)鴻蒙

2022-09-15 15:21:22

操作系統(tǒng)鴻蒙

2021-12-29 16:11:11

鴻蒙HarmonyOS應(yīng)用

2021-01-25 16:39:08

鴻蒙HarmonyOS添加單板

2021-01-26 13:50:43

鴻蒙HarmonyOS應(yīng)用開(kāi)發(fā)

2021-11-29 15:17:48

鴻蒙HarmonyOS應(yīng)用
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: a a毛片| 久久精品国产99国产 | 99热精品在线观看 | 久久精品国产亚洲 | 精品国产免费人成在线观看 | 亚洲五码在线 | 久久精品国产亚洲一区二区三区 | 亚洲成人av | 国产精品中文字幕在线 | 北条麻妃av一区二区三区 | 婷婷久久网| 国产中文在线 | 婷婷色网 | 久久久久久久久一区 | 久久精品久久久久久 | 91看片网 | 国产高清视频一区 | 成人免费看| 日韩欧美精品 | 81精品国产乱码久久久久久 | 欧美日韩在线精品 | 久草新在线| 免费的黄色片子 | 一区二区三区四区国产 | 国产精品美女久久久 | 中文亚洲视频 | 精品在线观看一区二区 | 懂色中文一区二区在线播放 | 国产欧美精品一区二区三区 | 欧美精品一区在线 | 日韩久久综合 | 九九视频在线观看视频6 | 日韩欧美在线一区 | 欧美在线观看一区 | 国产美女黄色片 | 国产中文原创 | 午夜精品一区 | 国产精品久久久乱弄 | 久久精品99久久 | 99re6热在线精品视频播放 | 超碰97人人人人人蜜桃 |