91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

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

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

3天內不再提示

樹莓派4B移植OHOS 3.0 LTS標準系統

丫丫119 ? 來源:未知 ? 作者:亮子力 ? 2021-11-23 14:39 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

終于在樹莓派4B 上將 OHOS3.0 啟動起來了,雖然還不完整,目前只能實現的顯示和觸摸。但是可以和大家分享下我的思路。

poYBAGGcigWAfnNvACjChnYrbnA632.gif

我的方法比較簡單粗暴,直接使用的樹莓派的樹莓派 linux rpi-5.10.y 內核。

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

然后編譯 OHOS3.0 的文件系統,看缺什么補什么大概是這個意思。目前發現 OHOS 需要內核開啟 selinux 和 binder:
  1. make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
復制代碼

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

目前發現開啟這兩項 hilog 就可以輸出。內核掛上根文件系統,至少可以啟動串口有輸出了。然后分析下 OHOS 的圖形子系統。

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

所以樹莓派的 DRM 正常了,后面顯示應該就是沒為題的。好在樹莓派的生態比較開放,資料還是比較好獲取的,在樹莓派官方論壇趴了一段時間。

Pi4 的 GPU 是 VideoCore VI 支持 OpenGL ES 3.2,而 Pi3 的 GPU 是 VideoCore IV 支持 OpenGL ES 2.0。VideoCore IV 驅動程序是 VC4,VideoCore VI 驅動程序的 V3D。

需要在 config.txt 中開啟 vc4-fkms-v3d,而驅動 kernal 已經提供了模塊,只要在 init 階段將模塊加載就可以了。

這里有個比較惡心的地方,OHOS 的根文件系統使用的是 Toybox,但是很多工具不支持,比如 modprobe 就沒有,所以只能根據 modules.dep 文件,一個一個 insmod。當然可以直接將驅動編進內核也是可以的。
  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"
復制代碼

為了驗證 drm 和 libdrm 是否正常,我寫了一個簡單的測試
  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. }
  17. crtc_id = res->crtcs[0];
  18. conn_id = res->connectors[0];
  19. conn = drmModeGetConnector(fd, conn_id); // 獲取 drm_mode
  20. if (!conn) {
  21. printf("ERROR: drmModeGetConnector failed!\n");
  22. }else{
  23. printf("drmModeGetConnector seccess\n");
  24. }
復制代碼

其實 libdrm 是自帶測試的 modetest,但是 OHOS 沒有加入編譯。也可以將 modetest 加入編譯框架。

①為 modetest 添加 BUILD.gn
  1. third_party\libdrm\tests\modetest\BUILD.gn:
  2. import("http://build/ohos.gni")
  3. ohos_executable("modetest") {
  4. sources = [
  5. "buffers.c",
  6. "cursor.c",
  7. "modetest.c",
  8. ]
  9. cflags = [
  10. "-Wno-pointer-arith",
  11. ]
  12. include_dirs = [
  13. "../",
  14. ".",
  15. ]
  16. configs = [ "http://third_party/libdrm:libdrm_config" ]
  17. public_configs = [ "http://third_party/libdrm:libdrm_public_config" ]
  18. deps = [
  19. "http://third_party/libdrm:libdrm",
  20. "http://third_party/libdrm/tests/util/:util",
  21. ]
  22. public_deps = []
  23. install_images = [
  24. "system",
  25. "updater",
  26. ]
  27. part_name = "graphic_standard"
  28. subsystem_name = "graphic"
  29. }
復制代碼

②modetest 依賴這個
  1. third_party\libdrm\tests\util\BUILD.gn:
  2. import("http://build/ohos.gni")
  3. ohos_static_library("util") {
  4. sources = [
  5. "format.c",
  6. "kms.c",
  7. "pattern.c",
  8. ]
  9. cflags = []
  10. include_dirs = [
  11. "../",
  12. ".",
  13. ]
  14. configs = [ "http://third_party/libdrm:libdrm_config" ]
  15. public_configs = [ "http://third_party/libdrm:libdrm_public_config" ]
  16. deps = [
  17. "http://third_party/libdrm:libdrm",
  18. ]
  19. public_deps = []
  20. }
復制代碼

③加入到 OHOS 編譯框架,加在 weston 的依賴項里就可以了
  1. third_party\weston\BUILD.gn:
  2. "http://third_party/libdrm:libdrm",
  3. "http://third_party/libdrm/tests/util/:util",
  4. "http://third_party/libdrm/tests/modetest/:modetest",
復制代碼

有個報錯:問題不大,提示這個未使用,注釋的就好了。
  1. third_party\libdrm\tests\util\pattern.c:988
  2. // void *mem_base = mem;
復制代碼

如果 modetest 通過了,那剩下的就簡單了指定 weston 的后端就可以了。
system\etc\weston.ini:
  1. [output]
  2. name=card0
復制代碼

接下來是觸摸部分,我使用的是 DSI接口的觸摸屏。
  1. hexdump /dev/input/event2 # 可以使用hexdump看觸摸設備有沒有輸出,可惜這個命令也不支持
  2. cat /dev/input/event2 # cat也可以湊合用,只是輸出亂碼,但能證明觸摸是否好用
復制代碼

然后查看驅動模塊:
  1. ls -l /sys/dev/char/|grep input # 查看input下的觸摸設備的主次設備號
  2. cat /sys/dev/char/226\:0/device/uevent # 然后輸入主次設備號,查看設備的驅動程序
  3. DRIVER=raspberrypi-ts
  4. ... ...
復制代碼

發現驅動是 raspberrypi-ts,那就好辦了,在 init 的時候安裝這個模塊就好了。
  1. "insmod /lib/modules/5.10.76-v7l/kernel/drivers/input/touchscreen/raspberrypi-ts.ko"
復制代碼

基本是這么個思路,寫出來和大家分享下,希望對正在移植的小伙伴能有些幫助。

當然加到鴻蒙編譯框架可能沒有這么簡單,接下來我會先整理這部分的文檔,就更新在下面這個倉:

https://gitee.com/liangzili/harmony-raspberry

這個碼倉我之前移植過 OHOS1.0 LiteOS-A 內核到樹莓派 2ModuleB,就直接放到一起了,近期會更新,感興趣的可以關注,一起討論。

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

    關注

    1

    文章

    401

    瀏覽量

    28702
  • 樹莓派
    +關注

    關注

    121

    文章

    2012

    瀏覽量

    107497
  • 鴻蒙系統
    +關注

    關注

    183

    文章

    2642

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    樹莓分類器:用樹莓識別不同型號的樹莓

    對準樹莓4,屏幕上會顯示“RaspberryPi4”;對準樹莓Zero時顯示“Raspber
    的頭像 發表于 06-13 16:39 ?424次閱讀
    <b class='flag-5'>樹莓</b><b class='flag-5'>派</b>分類器:用<b class='flag-5'>樹莓</b><b class='flag-5'>派</b>識別不同型號的<b class='flag-5'>樹莓</b><b class='flag-5'>派</b>!

    樹莓5 與 樹莓4:深度對比與獨特優勢!

    和專業人士都好奇它與前代產品樹莓4相比表現如何。本文將深入對比這兩款機型,突出它們的差異和獨特優勢,幫助您做出明智的決策。1.處理器樹莓
    的頭像 發表于 05-21 13:15 ?548次閱讀
    <b class='flag-5'>樹莓</b><b class='flag-5'>派</b>5 與 <b class='flag-5'>樹莓</b><b class='flag-5'>派</b><b class='flag-5'>4</b>:深度對比與獨特優勢!

    樹莓派性能優化指南(第一彈):讓樹莓變身“小鋼炮”!

    超頻?如果需要讓樹莓跑高速計算的應用,比如視頻編解碼、圖像識別、游戲模擬器等,當然速率越快越好。有老外網友嘗試,BCM2711B0(樹莓
    的頭像 發表于 04-03 16:40 ?891次閱讀
    <b class='flag-5'>樹莓</b>派性能優化指南(第一彈):讓<b class='flag-5'>樹莓</b><b class='flag-5'>派</b>變身“小鋼炮”!

    樹莓4b連接DLPDLCR230NPEVM,HDMI和DPI可以同時用嘛?

    樹莓4b連接DLPDLCR230NPEVM,HDMI和DPI可以同時用嘛
    發表于 02-21 11:48

    關于DLPDLCR230NPEVM與樹莓4B的幾個問題求解

    有關于DLPDLCR230NPEVM與樹莓4B的以下幾個問題,望大佬解答: 1、如何用DLP投影出樹莓
    發表于 02-18 07:06

    deepin 23+樹莓讓小車動起來

    。 ? ? 硬件準備 以下是所需的硬件清單,看看自己都備齊了嗎? 樹莓 4b 智能小車底盤 雙層圓盤(兩輪附帶電機、電池盒) Type-C?接口 5V 鋰電池(給樹莓
    的頭像 發表于 02-12 09:12 ?769次閱讀
    deepin 23+<b class='flag-5'>樹莓</b><b class='flag-5'>派</b>讓小車動起來

    ARM開發板與樹莓的比較

    處理器 ARM開發板通常采用不同的ARM處理器,如Cortex-A系列、Cortex-M系列等,而樹莓則主要使用博通的ARM處理器。樹莓的處理器性能相對較高,尤其是在最新的
    的頭像 發表于 11-05 11:11 ?1397次閱讀

    樹莓4B的WiFi配置過程

    和需求。 一、準備工作 在開始配置WiFi之前,請確保你已經擁有了以下物品: 樹莓4B 適用的電源適配器 裝有Raspbian或其他兼容操作系統的SD卡 無線網絡名稱(SSID)和密
    的頭像 發表于 08-30 17:10 ?3577次閱讀

    樹莓4b 2g和4g區別大嗎

    樹莓4B樹莓基金會推出的一款性能強大的微型計算機,它具有多種版本,其中最常見的是2GB RAM版本和
    的頭像 發表于 08-30 17:05 ?2839次閱讀

    樹莓4b支持多大的sd卡

    樹莓4B是一款非常受歡迎的微型計算機,它具有強大的性能和豐富的擴展功能。在樹莓4B的使用過程
    的頭像 發表于 08-30 17:02 ?2504次閱讀

    樹莓4b和什么性能計算機相當

    樹莓4B與何種性能的計算機相當,這個問題涉及到多個方面的比較,包括處理器性能、內存大小、接口豐富度以及應用場景等。以下是從這些方面進行的綜合分析: 1. 處理器性能 樹莓
    的頭像 發表于 08-30 17:01 ?2095次閱讀

    樹莓4b相當于什么CPU

    樹莓4B作為一款基于ARM架構的單板計算機,自其發布以來就因其高性價比、豐富的接口和強大的擴展性而備受關注。在探討樹莓
    的頭像 發表于 08-30 16:59 ?3243次閱讀

    樹莓4B的性能特點及應用

    HDMI、USB 3.0、千兆以太網、藍牙5.0等,可以滿足各種應用場景的需求。 樹莓4B性能特點 2.1 CPU性能 樹莓
    的頭像 發表于 08-30 16:54 ?4767次閱讀

    樹莓4b風扇插哪個引腳

    樹莓4B驅動風扇時,風扇可以插接的引腳主要取決于風扇的類型和所使用的控制方法。以下是一些常見的風扇插接引腳情況: 1. 直接連接法 對于簡單的風扇(非PWM調速風扇),你可以直接將風扇的正負極連接
    的頭像 發表于 08-30 16:53 ?3960次閱讀

    OpenHarmony標準系統C++公共基礎類庫案例:HelloWorld

    1、程序簡介該程序是基于凌蒙OpenHarmony-v3.2.1標準系統C++公共基礎類庫的簡單案例:HelloWorld。主要講解C++公共基礎類庫案例如何搭建和編譯。2、程序解析2.1、創建
    的頭像 發表于 08-13 08:23 ?864次閱讀
    OpenHarmony<b class='flag-5'>標準系統</b>C++公共基礎類庫案例:HelloWorld
    主站蜘蛛池模板: 黑人一区二区三区中文字幕 | 日本三区四区免费高清不卡 | 拍拍拍无挡视频免费全程1000 | 性xxxxfreexxxxx国产 | 毛片8| 亚1州区2区3区4区产品乱码 | 2021国产精品自在拍在线播放 | 一级在线观看视频 | 国产亚洲精品久久久久久午夜 | 一级福利视频 | 日韩毛片免费视频 | 亚洲美女视频一区 | 天天在线免费视频 | 欧美线人一区二区三区 | 亚洲人成网站色7777 | 李丽莎尤物福利视频 | www.一区二区三区 | 韩国在线免费视频 | 天堂在线视频精品 | 日本不卡视频免费的 | 国产色产综合色产在线观看视频 | 在线免费视频手机版 | 视频在线观看一区二区 | 欧美色乱| 狼人综合色 | 在线观看国产日本 | 男人的天堂久久精品激情 | 男人一级片| 狠狠色噜噜狠狠狠狠色综合久 | 亚洲日本在线观看视频 | 午夜精品视频在线观看 | 成年香蕉大黄美女美女 | 成人午夜免费视频 | 欧美人与动另类在线 | 狠狠色婷婷丁香六月 | 色欲情狂 | 成人的天堂视频一区二区三区 | 49pao强力在线高清基地 | 伊人手机在线观看 | 超级极品白嫩美女在线 | 性欧美videofree另类超大 |