国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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
    

審核編輯 黃宇

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

    關注

    26

    文章

    6290

    瀏覽量

    118030
  • 鴻蒙
    +關注

    關注

    60

    文章

    2963

    瀏覽量

    45881
  • OpenHarmony
    +關注

    關注

    33

    文章

    3952

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

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

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

    openharmony開發openharmony開發板

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

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

    觸覺智能Purple Pi OH鴻蒙開發板,成功適配OpenHarmony5.0 Release版本!為大家帶來OpenHarmony5.0特性講解!關注觸覺智能,為大家帶來更多
    的頭像 發表于 10-25 10:51 ?1780次閱讀
    觸覺智能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 ?1464次閱讀
    如何在開源<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 ?1419次閱讀
    <b class='flag-5'>OpenHarmony</b>屬性信息怎么修改?觸覺智能RK3566<b class='flag-5'>鴻蒙</b><b class='flag-5'>開發板</b>來演示

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

    開源鴻蒙OpenHarmony系統下,修改DPI密度值的方法,觸覺智能Purple Pi OH鴻蒙開發板演示,搭載了瑞芯微RK3566四核處理器,Laval
    的頭像 發表于 12-24 11:46 ?1459次閱讀
    <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 ?2047次閱讀
    <b class='flag-5'>OpenHarmony</b>源碼編譯后燒錄鏡像教程,RK3566<b class='flag-5'>鴻蒙</b><b class='flag-5'>開發板</b>演示

    【北京迅為】itop-3568 開發板openharmony鴻蒙燒寫及測試-第1章 體驗OpenHarmony—燒寫鏡像

    【北京迅為】itop-3568 開發板openharmony鴻蒙燒寫及測試-第1章 體驗OpenHarmony—燒寫鏡像
    的頭像 發表于 03-04 16:31 ?1076次閱讀
    【北京迅為】itop-3568 <b class='flag-5'>開發板</b><b class='flag-5'>openharmony</b><b class='flag-5'>鴻蒙</b>燒寫及測試-第1章 體驗<b class='flag-5'>OpenHarmony</b>—燒寫鏡像

    【北京迅為】itop-3568 開發板openharmony鴻蒙燒寫及測試-第2章OpenHarmony v3.2-Beta4版本測試

    【北京迅為】itop-3568 開發板openharmony鴻蒙燒寫及測試-第2章OpenHarmony v3.2-Beta4版本測試
    的頭像 發表于 03-05 10:53 ?1059次閱讀
    【北京迅為】itop-3568 <b class='flag-5'>開發板</b><b class='flag-5'>openharmony</b><b class='flag-5'>鴻蒙</b>燒寫及測試-第2章<b class='flag-5'>OpenHarmony</b> v3.2-Beta4版本測試

    【北京迅為】iTOP-RK3568開發板鴻蒙OpenHarmony系統南向驅動開發實操-HDF驅動配置UART

    【北京迅為】iTOP-RK3568開發板鴻蒙OpenHarmony系統南向驅動開發實操-HDF驅動配置UART
    的頭像 發表于 03-25 11:02 ?1725次閱讀
    【北京迅為】iTOP-RK3568<b class='flag-5'>開發板</b><b class='flag-5'>鴻蒙</b><b class='flag-5'>OpenHarmony</b>系統南向驅動<b class='flag-5'>開發</b>實操-HDF驅動<b class='flag-5'>配置</b>UART

    鴻蒙北向開發OpenHarmony5.0 DevEco Studio開發工具安裝與配置

    本文介紹OpenHarmony5.0 DevEco Studio開發工具安裝與配置,鴻蒙北向開發入門必備!由觸覺智能Purple Pi OH
    的頭像 發表于 03-28 18:05 ?1620次閱讀
    <b class='flag-5'>鴻蒙</b>北向<b class='flag-5'>開發</b><b class='flag-5'>OpenHarmony</b>5.0 DevEco Studio<b class='flag-5'>開發</b>工具安裝與<b class='flag-5'>配置</b>

    貝啟BQ3568HM 開發板被選用為 OpenHarmony 明星開發板

    經開放原子開源基金會OpenHarmony社區官方測評評選,貝啟科技BQ3568HM開源鴻蒙開發板被正式選用為OpenHarmony明星開發板
    的頭像 發表于 05-25 00:22 ?1447次閱讀
    貝啟BQ3568HM <b class='flag-5'>開發板</b>被選用為 <b class='flag-5'>OpenHarmony</b> 明星<b class='flag-5'>開發板</b>

    開鴻開發板深度體驗:從開源鴻蒙開發到AI場景實踐

    的KaihongBoard-3588S-SBC和KaihongBoard-3576-SBC被評為“2025OpenHarmony明星開發板”,可實現設備快速開源鴻蒙化升級、分布式互聯協同、彈性部署等能力。
    的頭像 發表于 07-03 17:03 ?1604次閱讀
    開鴻<b class='flag-5'>開發板</b>深度體驗:從開源<b class='flag-5'>鴻蒙</b><b class='flag-5'>開發</b>到AI場景實踐

    觸覺智能RK3576開發板OpenHarmony開源鴻蒙系統USB控制傳輸功能示例

    本文介紹OpenHarmony開源鴻蒙系統的USB控制傳輸功能實現及相關代碼示例,基于觸覺智能RK3576開發板PurplePiOH2演示。OpenHarmony的USB通信介紹實現
    的頭像 發表于 09-30 16:31 ?1555次閱讀
    觸覺智能RK3576<b class='flag-5'>開發板</b><b class='flag-5'>OpenHarmony</b>開源<b class='flag-5'>鴻蒙</b>系統USB控制傳輸功能示例

    觸覺智能Purple Pi OH開發板率先適配OpenHarmony6.0 Release,鴻蒙明星開發板

    2025年9月19日,在官網上線開源鴻蒙OpenHarmony6.0Release僅13天,觸覺智能宣布旗下PurplePiOH開發板成功完成OpenHarmony6.0Release
    的頭像 發表于 10-29 08:00 ?822次閱讀
    觸覺智能Purple Pi OH<b class='flag-5'>開發板</b>率先適配<b class='flag-5'>OpenHarmony</b>6.0 Release,<b class='flag-5'>鴻蒙</b>明星<b class='flag-5'>開發板</b>