色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

鴻蒙OpenHarmony開發板:【產品配置規則】

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-05-09 10:32 ? 次閱讀

產品配置規則

產品解決方案為基于開發板的完整產品,主要包含產品對OS的適配、部件拼裝配置、啟動配置和文件系統配置等。產品解決方案的源碼路徑規則為:vendor/{產品解決方案廠商}/{產品名稱} _。

產品解決方案的目錄樹規則如下:

vendor                              
└── company                         # 產品解決方案廠商
    ├── product                     # 產品名稱
    │   ├── init_configs
    │   │     ├── etc               # init進程啟動配置(可選,僅linux內核需要)
    │   │     └── init.cfg          # 系統服務啟動配置
    │   ├── hals                    # 產品解決方案OS適配
    │   ├── BUILD.gn                # 產品編譯腳本
    │   └── config.json             # 產品配置文件
    │   └── fs.yml                  # 文件系統打包配置
    └── ......

icon-note.gif注意 :新增產品須按如上的規則創建目錄和文件,編譯構建系統將按該規則掃描已配置的產品。
開發前請熟悉鴻蒙開發指導文檔:[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]點擊或者復制轉到。
關鍵的目錄和文件詳細介紹如下:

  1. vendor/company/product/init_configs/etc 該文件夾中包含rcS腳本,Sxxx腳本和fstab腳本。init進程在啟動系統服務之前執行這些腳本。執行的流程為“rcS->fstab->S00-xxx“。Sxxx腳本中的內容與開發板和產品需要有關,主要包括設備節點的創建、創建目錄、掃描設備節點、修改文件權限等等。這些文件在產品編譯的BUILD.gn中按需拷貝到產品out目錄中,最終打包到rootfs鏡像中。

  2. vendor/company/product/init_configs/init.cfg init進程啟動服務的配置文件,當前支持解析的命令有:

    • start: 啟動某個服務
    • mkdir: 創建文件夾
    • chmod: 修改指定路徑/文件的權限
    • chown: 修改指定路徑/文件的屬組
    • mount: 掛載命令
      該文件中的各個字段的解釋如下:
    {
        "jobs" : [{                                                     # job數組,一個job對應一個命令集合。job的執行順序:pre-init - > init - > post-init。
                "name" : "pre-init",
                "cmds" : [
                    "mkdir /storage/data",                              # 創建目錄
                    "chmod 0755 /storage/data",                         # 修改權限,權限值的格式為0xxx, 如0755
                    "mkdir /storage/data/log",
                    "chmod 0755 /storage/data/log",
                    "chown 4 4 /storage/data/log",                      # 修改屬組,第一個數字為uid, 第二個數字為gid
                    ......
                    "mount vfat /dev/mmcblock0 /sdcard rw,umask=000"    # 掛載,格式為: mount [文件系統類型] [source] [target] [flags] [data]
                                                                        # 其中flags僅支持:nodev、noexec、nosuid和rdonly
                ]
            }, {
                "name" : "init",
                "cmds" : [                                              # 按cmds數組順序啟動啟動服務
                    "start shell",                                      # 注意:start與服務名稱之間有且只有一個空格
                    ......
                    "start service1"
                ]
            }, {
                "name" : "post-init",                                   # 最后執行的job, init進程啟動完成后的處理(如驅動初始化后再mount設備)
                "cmds" : []
            }
        ],
        "services" : [{                                                 # service數組,一個service對應一個進程
                "name" : "shell",                                       # 服務名稱
                "path" : ["/sbin/getty", "-n", "-l", "/bin/sh", "-L", "115200", "ttyS000", "vt100"],    # 可執行文件全路徑,path必須為第一個元素
                "uid" : 0,                                              # 進程的uid,須與二進制文件的uid保持一致
                "gid" : 0,                                              # 進程的gid,須與二進制文件的gid保持一致
                "once" : 0,                                             # 是否為一次性進程,1:進程退出后,init不在重新拉起。0:常駐進程,進程若退出,init將重新拉起
                "importance" : 0,                                       # 是否為關鍵進程,1:是關鍵進程,若進程退出,init將會重啟單板。0:非關鍵進程,若進程退出,init不會重啟單板
                "caps" : [4294967295]
            }, 
            ......
        ]
    }
    
  3. vendor/company/product/init_configs/hals 解決方案廠商對OS的適配,需要實現的接口請見各個部件的readme說明文檔。

  4. vendor/company/product/config.json config.json為編譯構建的主入口,包含了開發板、OS部件和內核等配置信息。
    以基于hispark_taurus開發板的ipcamera產品為例,配置文件如下:

    {
         "product_name": "ipcamera",                       # 產品名稱
         "version": "3.0",                                 # config.json的版本號, 固定"3.0"
         "type": "small",                                  # 系統類型, 可選[mini, small, standard]
         "ohos_version": "OpenHarmony 1.0",                # 選擇的OS版本
         "device_company": "hisilicon",                    # 芯片廠商
         "board": "hispark_taurus",                        # 開發板名稱
         "kernel_type": "liteos_a",                        # 選擇的內核類型
         "kernel_version": "3.0.0",                        # 選擇的內核版本
         "subsystems": [                            
           {
             "subsystem": "aafwk",                         # 選擇的子系統
             "components": [
               { "component": "ability", "features":[ "enable_ohos_appexecfwk_feature_ability = true" ] }   # 選擇的部件和部件特性配置
             ]
           },
           {
            ......
           }
          ......
          更多子系統和部件
         }
     }
    
  5. vendor/company/product/fs.yml 該文件用于配置文件系統鏡像制作過程,將編譯產物打包成文件系統鏡像,比如用戶態根文件系統rootfs.img和可讀寫的userfs.img。它由多個列表組成,每個列表對應一個文件系統。字段說明如下:

    fs_dir_name: 必填,聲明文件系統文件名, 如rootfs、userfs
    fs_dirs:     選填,配置out下文件目錄與文件系統文件目錄的映射關系,每個文件目錄對應一個列表
    source_dir:  選填,out下目標文件目錄,若缺失則將根據target_dir在文件系統下創建空目錄
    target_dir:  必填,文件系統下對應文件目錄
    ignore_files:選填,聲明拷貝忽略文件
    dir_mode:    選填,文件目錄權限,默認755
    file_mode:   選填,該文件目錄下所有文件的權限,默認555
    fs_filemode: 選填,配置需要特殊聲明權限的文件,每個文件對應一個列表
    file_dir:    必填,文件系統下具體文件路徑
    file_mode:   必填,文件權限聲明
    fs_symlink:  選填,配置文件系統軟連接
    fs_make_cmd: 必填,配置需要制作文件系統腳本,OS提供的腳本在build/lite/make_rootfs下, 支持linux,liteos內核和ext4、jffs2、vfat格式。也支持芯片解決方案廠商自定義。   
    fs_attr:     選填,根據配置項動態調整文件系統
    

    其中fs_symlink、fs_make_cmd字段支持以下變量:

    • rootpath代碼根目錄,對應gn的{ohos_root_path}
    • outpath產品out目錄,對應gn的{root_out_dir}
    • ${fs_dir} 文件系統目錄,由以下變量拼接而成
    • ${root_path}
    • ${fs_dir_name}

icon-note.gif注意 :fs.yml是可選的,對于沒有文件系統的設備可不配置。

  1. vendor/company/product/BUILD.gn 產品編譯的入口,主要用于編譯解決方案廠商源碼和拷貝啟動配置文件。如果某個產品被選擇為要編譯的產品,那么對應產品目錄下的BUILD.gn會默認編譯。一個典型的產品編譯BUILD.gn應該如下:
    group("product") {               # target名稱需與product名稱即三級目錄名稱一致
      deps = []
      deps += [ "init_configs" ]     # 拷貝init配置
      ......                         # 其他
    }
    

新增并編譯產品

編譯構建支持芯片解決方案和部件的靈活拼裝,形成定制化的產品解決方案。具體步驟如下:

  1. 創建產品目錄 按照產品配置規則創建產品目錄,以基于“rtl8720“開發板的wifiiot模組為例,在代碼根目錄執行:

    mkdir -p vendor/my_company/wifiiot
    
  2. 拼裝產品 在新建的產品目錄下新建config.json文件,以步驟1中的wifiiot為例,vendor/my_company/wifiiot/config.json可以是:

    {
        "product_name": "wifiiot",                        # 產品名稱
        "version": "3.0",                                 # config.json的版本號, 固定"3.0"
        "type": "small",                                  # 系統類型, 可選[mini, small, standard]
        "ohos_version": "OpenHarmony 1.0",                # 使用的OS版本
        "device_company": "realtek",                      # 芯片解決方案廠商名稱
        "board": "rtl8720",                               # 開發板名稱
        "kernel_type": "liteos_m",                        # 選擇的內核類型
        "kernel_version": "3.0.0",                        # 選擇的內核版本
        "subsystems": [                            
          {
            "subsystem": "kernel",                        # 選擇的子系統
            "components": [
              { "component": "liteos_m", "features":[] }  # 選擇的部件和部件特性
            ]
          },
          ...
          {
             更多子系統和部件
          }
        ]
    }
    

    icon-note.gif注意 :編譯構建系統編譯前會對device_company,board,kernel_type,kernel_version、subsystem、component字段進行有效性檢查,其中device_company,board,kernel_type,kernel_version應與已知的芯片解決方案匹配,subsystem、component應與build/lite/components下的部件描述匹配。

  3. 適配OS接口 在產品目錄下創建hals目錄,并將產品解決方案對OS適配的源碼和編譯腳本放入該目錄下。

  4. 配置系統服務 在產品目錄下創建init_configs目錄,并在init_configs目錄下創建init.cfg文件,按需配置要啟動的系統服務。

  5. 配置init進程(僅linux內核需要) 在init_configs目錄下創建etc目錄,然后在etc下創建init.d文件夾和fstab文件。最后按產品需求在init.d文件下創建并編輯rcS文件和Sxxx文件。

  6. 配置文件系統鏡像(可選,僅支持文件系統的開發板需要) 在產品目錄下創建fs.yml文件。fs.yml需按產品實際情況配置,一個典型的fs.yml文件如下:

    -
      fs_dir_name: rootfs # 鏡像的名稱
      fs_dirs:
        -
          # 將編譯生成的out/my_board/my_product/bin目錄下的文件拷貝到rootfs/bin中,并忽略測試bin
          source_dir: bin
          target_dir: bin
          ignore_files:
            - Test.bin
            - TestSuite.bin
        -
          # 將編譯生成的out/my_board/my_product/libs目錄下的文件拷貝到rootfs/lib中,忽略所有.a文件,并設置文件和文件夾的權限為644和755
          source_dir: libs
          target_dir: lib
          ignore_files:
            - .a
          dir_mode: 755
          file_mode: 644
        -
          source_dir: usr/lib
          target_dir: usr/lib
          ignore_files:
            - .a
          dir_mode: 755
          file_mode: 644
        -
          source_dir: config
          target_dir: etc
        -
          source_dir: system
          target_dir: system
        -
          source_dir: sbin
          target_dir: sbin
        -
          source_dir: usr/bin
          target_dir: usr/bin
        -
          source_dir: usr/sbin
          target_dir: usr/sbin
        -
          # 創建一個proc空目錄
          target_dir: proc
        -
          target_dir: mnt
        -
          target_dir: opt
        -
          target_dir: tmp
        -
          target_dir: var
        -
          target_dir: sys
        -
          source_dir: etc
          target_dir: etc
        -
          source_dir: vendor
          target_dir: vendor
        -
          target_dir: storage
    
      fs_filemode:
        -
          file_dir: lib/ld-uClibc-0.9.33.2.so
          file_mode: 555
        -
          file_dir: lib/ld-2.24.so
          file_mode: 555
        -
          file_dir: etc/init.cfg
          file_mode: 400
      fs_symlink:
        -
          # 在rootfs/lib下創建軟連接ld-musl-arm.so.1 - > libc.so
          source: libc.so
          link_name: ${fs_dir}/lib/ld-musl-arm.so.1
        -
          source: mksh
          link_name: ${fs_dir}/bin/sh
        -
          source: mksh
          link_name: ${fs_dir}/bin/shell
      fs_make_cmd:
        # 使用腳本將rootfs制作為ext4格式的image
        - ${root_path}/build/lite/make_rootfs/rootfsimg_linux.sh ${fs_dir} ext4
    -
      fs_dir_name: userfs
      fs_dirs:
        -
          source_dir: storage/etc
          target_dir: etc
        -
          source_dir: data
          target_dir: data
      fs_make_cmd:
        - ${root_path}/build/lite/make_rootfs/rootfsimg_linux.sh ${fs_dir} ext4
    
  7. 配置產品Patch(可選,視產品涉及部件是否需要打補丁而定) 在產品目錄下創建patch.yml文件。patch.yml需按產品實際情況配置,一個典型的patch.yml文件如下:

    # 需要打patch的路徑
    foundation/communication/dsoftbus:
      # 該路徑下需要打的patch存放路徑
      - foundation/communication/dsoftbus/1.patch
      - foundation/communication/dsoftbus/2.patch
    third_party/wpa_supplicant:
      - third_party/wpa_supplicant/1.patch
      - third_party/wpa_supplicant/2.patch
      - third_party/wpa_supplicant/3.patch
    ...
    

    配置完成后,編譯時增加--patch參數,即可在產品編譯前將配置的Patch文件打到對應目錄中,再進行編譯:

    hb build -f --patch
    
  8. 編寫編譯腳本 在產品目錄下創建BUILD.gn文件,按產品實際情況編寫腳本。以步驟1中的wifiiot為例,BUILD.gn示例如下:

    group("wifiiot") {             # target名稱與產品名一致
      deps = []
      deps += [ "init_configs" ]   # 拷貝init配置
      deps += [ "hals" ]           # 將hals加入編譯
      ......                       # 其他
    }
    
    `HarmonyOS與OpenHarmony鴻蒙文檔籽料:mau123789是v直接拿`
    

搜狗高速瀏覽器截圖20240326151547.png

  1. 編譯產品。 主要有兩種編譯方式,[命令行方式和hb方式],這里以命令行方式為例,假設編譯的產品名是hispark_taurus_standard,則編譯命令是:
    ./build.sh --product-name hispark_taurus_standard --ccache
    

審核編輯 黃宇

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

    關注

    25

    文章

    5080

    瀏覽量

    97678
  • 鴻蒙
    +關注

    關注

    57

    文章

    2368

    瀏覽量

    42899
  • OpenHarmony
    +關注

    關注

    25

    文章

    3727

    瀏覽量

    16390
收藏 人收藏

    評論

    相關推薦

    OpenHarmony鴻蒙南向開發案例:【智能貓眼(基于Hi3518開發板)】

    基于Hi3518開發板,使用開源OpenHarmony開發的RTSP協議流媒體應用。達到將Hi3518開發板中攝像頭獲取的數據通過RTSP協議傳輸到手機并顯示 。
    的頭像 發表于 04-22 15:46 ?2062次閱讀
    <b class='flag-5'>OpenHarmony</b><b class='flag-5'>鴻蒙</b>南向<b class='flag-5'>開發</b>案例:【智能貓眼(基于Hi3518<b class='flag-5'>開發板</b>)】

    鴻蒙OpenHarmony南向/北向快速開發教程-迅為RK3568開發板

    大家期待已久的迅為RK3568開發板終于迎來了鴻蒙4.1系統的強勢支持!想知道如何實現快速開發學習嗎?跟著我們一起來探索吧! 迅為RK3568開發板: 想象一下,你手中的RK3568
    發表于 07-23 10:44

    迅為RK3568開發板鴻蒙OpenHarmony系統固件燒寫步驟

    1、迅為RK3568開發板鴻蒙OpenHarmony系統固件燒寫首先拷貝燒寫器(燒寫器在光盤資料“iTOP-3568 開發板\01_【iTOP-RK3568
    發表于 08-26 17:45

    openharmony開發openharmony開發板

    現在市面上支持OpenHarmony開發板已經非常多了,OpenHarmony不僅僅只能在海思系列芯片上運行,比較常見的有HiSpark、小熊派系列。這些開發板都是基于海思的Hi38
    的頭像 發表于 06-24 09:03 ?3688次閱讀

    OpenHarmony開發板適配經驗分享--王城

    OpenHarmony開發板適配經驗分享 審核編輯:金巧
    的頭像 發表于 12-28 14:46 ?1735次閱讀
    <b class='flag-5'>OpenHarmony</b><b class='flag-5'>開發板</b>適配經驗分享--王城

    開發板如何適配OpenHarmony 3.2

    科技基于RK3568設計的HCPAD-100開發板以及基于RK3566設計的中控屏HongzPad2022在OpenHarmony 3.2 Beta5版本上的適配過程。 涉及到開發板的添加/u-boot /linux-5.10/
    的頭像 發表于 04-04 01:35 ?1551次閱讀

    OpenHarmony鴻蒙南向開發案例:【智能貓眼(基于3516開發板)】

    基于Hi3516開發板,使用開源OpenHarmony開發的RTSP協議流媒體應用。達到將Hi3516開發板中攝像頭獲取的數據通過RTSP協議傳輸到手機并顯示 。
    的頭像 發表于 04-19 22:01 ?615次閱讀
    <b class='flag-5'>OpenHarmony</b><b class='flag-5'>鴻蒙</b>南向<b class='flag-5'>開發</b>案例:【智能貓眼(基于3516<b class='flag-5'>開發板</b>)】

    瑞芯微RK3566鴻蒙開發板OpenHarmony標準系統應用兼容性測試指導

    本文OpenHarmony標準系統應用兼容性測試指導,適用鴻蒙系統軟件開發測試的新手入門學習課程,設備為觸覺智能的瑞芯微RK3566開發板,型號Purple Pi OH。是Laval官
    的頭像 發表于 09-10 11:56 ?411次閱讀
    瑞芯微RK3566<b class='flag-5'>鴻蒙</b><b class='flag-5'>開發板</b><b class='flag-5'>OpenHarmony</b>標準系統應用兼容性測試指導

    瑞芯微RK3568鴻蒙開發板OpenHarmony系統修改cfg文件權限方法

    本文適用于OpenHarmony開源鴻蒙系統修改cfg文件權限方法,深圳觸覺智能研發的RK3566、RK3568、RK3588等開發板、主板等產品均適用此教程
    的頭像 發表于 09-11 13:26 ?949次閱讀
    瑞芯微RK3568<b class='flag-5'>鴻蒙</b><b class='flag-5'>開發板</b><b class='flag-5'>OpenHarmony</b>系統修改cfg文件權限方法

    觸覺智能Purple Pi OH鴻蒙開發板成功適配OpenHarmony5.0 Release,開啟新征程

    觸覺智能Purple Pi OH鴻蒙開發板,成功適配OpenHarmony5.0 Release版本!為大家帶來OpenHarmony5.0特性講解!關注觸覺智能,為大家帶來更多
    的頭像 發表于 10-25 10:51 ?424次閱讀
    觸覺智能Purple Pi OH<b class='flag-5'>鴻蒙</b><b class='flag-5'>開發板</b>成功適配<b class='flag-5'>OpenHarmony</b>5.0 Release,開啟新征程

    如何在開源鴻蒙OpenHarmony開啟SELinux模式?RK3566鴻蒙開發板演示

    本文介紹開源鴻蒙OpenHarmony系統下,開啟/關閉SELinux權限的方法,觸覺智能Purple Pi OH鴻蒙開發板演示,已適配全新Open
    的頭像 發表于 11-18 19:03 ?366次閱讀
    如何在開源<b class='flag-5'>鴻蒙</b><b class='flag-5'>OpenHarmony</b>開啟SELinux模式?RK3566<b class='flag-5'>鴻蒙</b><b class='flag-5'>開發板</b>演示

    OpenHarmony屬性信息怎么修改?觸覺智能RK3566鴻蒙開發板來演示

    本文介紹開源鴻蒙OpenHarmony系統下,修改產品屬性信息的方法,觸覺智能Purple Pi OH鴻蒙開發板演示,已適配全新
    的頭像 發表于 11-27 09:31 ?192次閱讀
    <b class='flag-5'>OpenHarmony</b>屬性信息怎么修改?觸覺智能RK3566<b class='flag-5'>鴻蒙</b><b class='flag-5'>開發板</b>來演示

    OpenHarmony默認30秒熄屏太麻煩?觸覺智能鴻蒙開發板教你輕松取消

    OpenHarmony系統開機后 30 秒會自動息屏,教大家兩招輕松取消自動息屏,觸覺智能Purple Pi OH鴻蒙開發板演示,已適配全新OpenHarmony5.0 Release
    的頭像 發表于 12-09 11:45 ?226次閱讀
    <b class='flag-5'>OpenHarmony</b>默認30秒熄屏太麻煩?觸覺智能<b class='flag-5'>鴻蒙</b><b class='flag-5'>開發板</b>教你輕松取消

    OpenHarmony怎么修改DPI密度值?觸覺智能RK3566鴻蒙開發板演示

    開源鴻蒙OpenHarmony系統下,修改DPI密度值的方法,觸覺智能Purple Pi OH鴻蒙開發板演示,搭載了瑞芯微RK3566四核處理器,Laval
    的頭像 發表于 12-24 11:46 ?209次閱讀
    <b class='flag-5'>OpenHarmony</b>怎么修改DPI密度值?觸覺智能RK3566<b class='flag-5'>鴻蒙</b><b class='flag-5'>開發板</b>演示

    OpenHarmony源碼編譯后燒錄鏡像教程,RK3566鴻蒙開發板演示

    本文介紹瑞芯微主板/開發板編譯OpenHarmony源碼后燒錄鏡像的教程,觸覺智能Purple Pi OH鴻蒙開發板演示。搭載了瑞芯微RK3566四核處理器,樹莓派卡片電腦設計,支持開
    的頭像 發表于 12-30 10:08 ?110次閱讀
    <b class='flag-5'>OpenHarmony</b>源碼編譯后燒錄鏡像教程,RK3566<b class='flag-5'>鴻蒙</b><b class='flag-5'>開發板</b>演示
    主站蜘蛛池模板: 中文字幕在线视频网站| 国产CHINESE HD精品| 国产在线亚洲v天堂a| 国产成人a v在线影院| 色综合久久88色综合天天提莫| 国产99热在线观看| 亚洲成人欧美| 麻豆出品国产AV在线观看| 北条麻妃久久99精品| 午夜一区二区三区| 久久天天躁狠狠躁夜夜呲| zoovideo人与驴mp4| 亚洲成色爱我久久| 美女张开腿露出尿口扒开来摸动漫 | 芭乐视频免费资源在线观看| 手机移动oa| 久久亚洲AV成人无码国产漫画| 菠萝菠萝蜜免费播放高清| 亚洲免费久久| 秋霞电影网视频一区二区三区 | 最近免费中文字幕大全免费| 日韩中文亚洲欧美视频二| 妓女嫖客叫床粗话对白| qvod在线电影| 亚洲中文无码AV在线观看| 人人啪日日观看在线| 久久免费精品视频| 国产精品96久久久久久AV网址| 69xx欧美| 亚洲人人为我我为人人| 欧美性猛交AAA片| 久久黄色网址| 国产精品爽爽久久久久久蜜桃网站 | 中国xxxxxxxxx孕交| 四虎国产精品永久免费入口| 美女被爆插| 韩国精品韩国专区久久| 穿着丝袜被男生强行啪啪| 自拍黄色片| 亚洲欧洲精品A片久久99| 色视频色露露永久免费观看|