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

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

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

poYBAGGcigWAfnNvACjChnYrbnA632.gif

我的方法比較簡(jiǎn)單粗暴,直接使用的樹莓派的樹莓派 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)核開啟 selinux 和 binder:
  1. make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
復(fù)制代碼

然后修改下面幾項(xiàng):
  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 (設(shè)置為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 (開啟)
復(fù)制代碼

目前發(fā)現(xiàn)開啟這兩項(xiàng) hilog 就可以輸出。內(nèi)核掛上根文件系統(tǒng),至少可以啟動(dòng)串口有輸出了。然后分析下 OHOS 的圖形子系統(tǒng)。

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

所以樹莓派的 DRM 正常了,后面顯示應(yīng)該就是沒為題的。好在樹莓派的生態(tài)比較開放,資料還是比較好獲取的,在樹莓派官方論壇趴了一段時(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 中開啟 vc4-fkms-v3d,而驅(qū)動(dòng) kernal 已經(jīng)提供了模塊,只要在 init 階段將模塊加載就可以了。

這里有個(gè)比較惡心的地方,OHOS 的根文件系統(tǒng)使用的是 Toybox,但是很多工具不支持,比如 modprobe 就沒有,所以只能根據(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"
復(fù)制代碼

為了驗(yàn)證 drm 和 libdrm 是否正常,我寫了一個(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. }
  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. }
復(fù)制代碼

其實(shí) libdrm 是自帶測(cè)試的 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. }
復(fù)制代碼

②modetest 依賴這個(gè)
  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. }
復(fù)制代碼

③加入到 OHOS 編譯框架,加在 weston 的依賴項(xiàng)里就可以了
  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",
復(fù)制代碼

有個(gè)報(bào)錯(cuò):?jiǎn)栴}不大,提示這個(gè)未使用,注釋的就好了。
  1. third_party\libdrm\tests\util\pattern.c:988
  2. // void *mem_base = mem;
復(fù)制代碼

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

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

然后查看驅(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ù)制代碼

發(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"
復(fù)制代碼

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

當(dāng)然加到鴻蒙編譯框架可能沒有這么簡(jiǎn)單,接下來我會(huì)先整理這部分的文檔,就更新在下面這個(gè)倉(cāng):

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

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

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

    關(guān)注

    1

    文章

    416

    瀏覽量

    29469
  • 樹莓派
    +關(guān)注

    關(guān)注

    122

    文章

    2080

    瀏覽量

    110585
  • 鴻蒙系統(tǒng)
    +關(guān)注

    關(guān)注

    183

    文章

    2642

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    樹莓5還是香橙5 Pro??jī)煽顭衢T開發(fā)板的詳細(xì)對(duì)比

    插槽也讓搭建高速存儲(chǔ)系統(tǒng)更為直接 4.軟件生態(tài)與系統(tǒng)支持 這是兩款產(chǎn)品差異較大的方面: 1)樹莓5 :擁有全球最大的開發(fā)者社區(qū)和完善的文檔
    發(fā)表于 03-04 19:29

    高性能電流模式PWM控制器UC2842B/3B/4B/5B和UC3842B/3B/4B/5B的全面解析

    高性能電流模式PWM控制器UC2842B/3B/4B/5B和UC3842B/3B/
    的頭像 發(fā)表于 01-27 13:50 ?1782次閱讀

    高性能電流模式PWM控制器UC2842B/3B/4B/5B - UC3842B/3B/4B/5B解析

    高性能電流模式PWM控制器UC2842B/3B/4B/5B - UC3842B/3B/
    的頭像 發(fā)表于 01-27 13:50 ?268次閱讀

    高性能電流模式PWM控制器UC2842B/3B/4B/5B - UC3842B/3B/4B/5B詳解

    高性能電流模式PWM控制器UC2842B/3B/4B/5B - UC3842B/3B/
    的頭像 發(fā)表于 01-27 13:50 ?386次閱讀

    UC2842B/3B/4B/5B - UC3843B/3B/4B/5B高性能電流模式PWM控制器

    UC2842B/3B/4B/5B - UC3843B/3B/
    的頭像 發(fā)表于 01-27 13:50 ?488次閱讀

    深度解析UC2842B/3B/4B/5B與UC3842B/3B/4B/5B高性能電流模式PWM控制器

    深度解析UC2842B/3B/4B/5B與UC3842B/3B/
    的頭像 發(fā)表于 01-27 11:35 ?788次閱讀

    基于樹莓(RaspberryPi)構(gòu)建高效實(shí)時(shí)監(jiān)控系統(tǒng)

    由于樹莓體積小、可開發(fā)性強(qiáng)等特性,常被用于視頻監(jiān)控場(chǎng)景中,結(jié)合 ZeroNews,可實(shí)現(xiàn)用戶在任意位置都能實(shí)時(shí)安全得訪問視頻監(jiān)控系統(tǒng)。 先決條件:樹莓
    的頭像 發(fā)表于 09-22 15:14 ?1422次閱讀
    基于<b class='flag-5'>樹莓</b><b class='flag-5'>派</b>(RaspberryPi)構(gòu)建高效實(shí)時(shí)監(jiān)控<b class='flag-5'>系統(tǒng)</b>

    如何使用樹莓與OpenCV實(shí)現(xiàn)面部和運(yùn)動(dòng)追蹤的云臺(tái)系統(tǒng)

    大家好,這是一個(gè)樹莓和OpenCV的連載專題。使用樹莓與OpenCV實(shí)現(xiàn)姿態(tài)估計(jì)和面部特征點(diǎn)追蹤使用樹莓
    的頭像 發(fā)表于 08-14 17:45 ?1887次閱讀
    如何使用<b class='flag-5'>樹莓</b><b class='flag-5'>派</b>與OpenCV實(shí)現(xiàn)面部和運(yùn)動(dòng)追蹤的云臺(tái)<b class='flag-5'>系統(tǒng)</b>?

    樹莓操作系統(tǒng):版本、特性及設(shè)置完整指南!

    樹莓操作系統(tǒng)是什么?樹莓操作系統(tǒng)是由樹莓
    的頭像 發(fā)表于 07-28 18:26 ?1536次閱讀
    <b class='flag-5'>樹莓</b><b class='flag-5'>派</b>操作<b class='flag-5'>系統(tǒng)</b>:版本、特性及設(shè)置完整指南!

    切記!使用樹莓時(shí)絕對(duì)不能做的7件事!

    如今,樹莓幾乎可用于任何場(chǎng)景。然而,這種多功能性有時(shí)會(huì)讓你忘記,這款單板計(jì)算機(jī)并非堅(jiān)不可摧,一個(gè)小失誤就可能徹底損壞主板。我桌上有臺(tái)樹莓4B
    的頭像 發(fā)表于 07-19 08:34 ?1018次閱讀
    切記!使用<b class='flag-5'>樹莓</b><b class='flag-5'>派</b>時(shí)絕對(duì)不能做的7件事!

    樹莓分類器:用樹莓識(shí)別不同型號(hào)的樹莓

    對(duì)準(zhǔn)樹莓4,屏幕上會(huì)顯示“RaspberryPi4”;對(duì)準(zhǔn)樹莓Zero時(shí)顯示“Raspber
    的頭像 發(fā)表于 06-13 16:39 ?1395次閱讀
    <b class='flag-5'>樹莓</b><b class='flag-5'>派</b>分類器:用<b class='flag-5'>樹莓</b><b class='flag-5'>派</b>識(shí)別不同型號(hào)的<b class='flag-5'>樹莓</b><b class='flag-5'>派</b>!

    樹莓5 與 樹莓4:深度對(duì)比與獨(dú)特優(yōu)勢(shì)!

    和專業(yè)人士都好奇它與前代產(chǎn)品樹莓4相比表現(xiàn)如何。本文將深入對(duì)比這兩款機(jī)型,突出它們的差異和獨(dú)特優(yōu)勢(shì),幫助您做出明智的決策。1.處理器樹莓
    的頭像 發(fā)表于 05-21 13:15 ?3143次閱讀
    <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>:深度對(duì)比與獨(dú)特優(yōu)勢(shì)!

    能夠精準(zhǔn)定位的樹莓機(jī)器人!

    我為我的自制機(jī)器人BigRob(同樣由樹莓驅(qū)動(dòng))配備了基于樹莓的精準(zhǔn)GPS導(dǎo)航系統(tǒng)。本項(xiàng)目所用組件硬件組件NV08C-CSMx1NV08
    的頭像 發(fā)表于 05-17 08:33 ?1354次閱讀
    能夠精準(zhǔn)定位的<b class='flag-5'>樹莓</b><b class='flag-5'>派</b>機(jī)器人!

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

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

    4臺(tái)樹莓5跑動(dòng)大模型!DeepSeek R1分布式實(shí)戰(zhàn)!

    導(dǎo)語“用4臺(tái)樹莓5組網(wǎng),輕松運(yùn)行大模型——這可能是2025年最顛覆認(rèn)知的開源AI項(xiàng)目!”GitHub明星項(xiàng)目distributed-llama最新實(shí)戰(zhàn)案例曝光:通過獨(dú)創(chuàng)的動(dòng)態(tài)模型切片技術(shù),成功在
    的頭像 發(fā)表于 03-24 14:50 ?1499次閱讀
    <b class='flag-5'>4</b>臺(tái)<b class='flag-5'>樹莓</b><b class='flag-5'>派</b>5跑動(dòng)大模型!DeepSeek R1分布式實(shí)戰(zhàn)!