吴忠躺衫网络科技有限公司

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

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

3天內不再提示

【XR806開發板試用】實戰OpenHarmony固件編譯

冬至子 ? 來源:還沒吃飯 ? 作者:還沒吃飯 ? 2023-11-29 11:44 ? 次閱讀

固件編譯是一種將源代碼轉化為可執行文件的過程,其中涉及了多個環節和工具的使用。在這次的學習過程中,我主要了解了設置編譯工具鏈、對代碼工程進行配置、關鍵步驟說明等方面的內容,下面我將結合自己的學習經歷和感受,談談自己的心得體會。

在深入了解XR806和OpenHarmony的過程中,我領略到了輕量級系統在嵌入式解決方案中的獨特地位和潛力。OpenHarmony作為一種通用的輕量級系統,尤其適用于MCU處理器,如Arm Cortex-M和RISC-V 32位設備。在硬件資源極其有限的情況下,它提供了豐富的功能和工具,如多種輕量級網絡協議、輕量級的圖形框架,以及豐富的IOT總線讀寫部件等。這樣的系統非常適合于智能家居領域的連接類模組、傳感器設備、穿戴類設備等產品的開發。

image.png

XR806_OpenHarmony代碼的構成部分包括device和vendor兩部分。其中,device目錄主要包含芯片層驅動,負責承接Harmony系統和芯片驅動庫。這部分代碼結構清晰,包括適配器、編譯腳本、指導文檔、動態配置編譯環境的腳本、編譯工具、例程以及rtos接口層等。而vendor目錄則主要包含方案設置,其中,Harmony的主要特點之一是組件的插拔,這是通過vendor/config.json對方案進行裁剪實現的。

獲取源碼的過程也給我留下了深刻的印象。除了安裝碼云repo工具,還可以使用pip3安裝requests庫,并設置鏡像源以加快下載速度。這些步驟都展示了在開源社區中獲取和使用資源的便捷性。

Device目錄主要包括芯片層驅動,負責承接Harmony系統和芯片驅動庫。其結構如下:

  • adapter: Harmony接口適配
  • BUILD.gn: gn編譯腳本
  • build.sh: 編譯腳本,用于搭橋Harmony與原生SDK
  • doc: 指導文檔
  • libcopy.py: 編譯腳本,用于動態配置編譯環境
  • liteos_m: 編譯工具,編譯選項設置
  • ohosdemo: 例程
  • os: rtos接口層,通過接口層方便后續移植其他rtos
  • target_config.h: liteos系統裁剪
  • xr_skylark: 芯片原生驅動

Vendor目錄主要為方案設置,Harmony主要特點之一為組件的插拔,通過vendor/config.json對方案進行裁剪。其結構如下:

  • BUILD.gn: 編譯腳本
  • config.json: 方案裁剪
  • hals: 系統信息

獲取源碼:
安裝碼云repo工具,可以執行如下命令:

curl -s https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > /usr/local/bin/repo 
#如果沒有權限,可下載至其他目錄,并將其配置到環境變量中
chmod a+x /usr/local/bin/repo
pip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests

設置鏡像源(可選):

vim ~/.bashrc
#在文件的最后輸入以下內容
export PATH=~/bin:$PATH
export REPO_URL=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/
#設置完成后重啟shell
#設置為清華鏡像源后,下載源碼時如果提示server certificate verification failed,輸入export GIT_SSL_NO_VERIFY=1后重新下載即可。

下載源碼:

# OpenHarmony通用于各種系統,導致整個系統文件比較多,XR806把部分不必要的代碼倉在xml中刪除了。
# 如果想要減少或增加需要下載的代碼倉,請把manifest倉fork到本地后,自行裁剪。
repo init -u https://gitee.com/awol/open-harmony_-xr806_manifest.git -b master --no-repo-verify -m devboard_xr806.xml 
repo sync -c 
repo forall -c 'git lfs pull'

首先,設置編譯工具鏈是進行固件編譯的前提條件。在XR806_SDK中,推薦使用gcc-arm-none-eabi-10-2020-q4-major進行編譯。為了方便后續的操作,我們需要將編譯工具鏈下載并保存到“~/tools”目錄下。如果該目錄不存在,我們還需要先創建它。這個環節讓我明白了在編譯之前,一定要先確保編譯工具鏈的正確安裝和配置。

使用文本格式來模擬魚骨圖的結構。

XR806支持的OpenHarmony系統

├── 輕量系統(Mini System)
│ ├── 硬件資源有限
│ ├── 支持最小內存:128KiB
│ ├── 提供輕量級網絡協議
│ ├── 提供輕量級圖形框架
│ ├── 提供豐富的IOT總線讀寫部件
│ └── 可用于智能家居領域的連接類模組、傳感器設備、穿戴類設備等
├── XR806_OpenHarmony代碼
│ ├── device目錄:芯片層驅動,承接Harmony系統和芯片驅動庫
│ │ ├── adapter:Harmony接口適配
│ │ ├── BUILD.gn:gn編譯腳本
│ │ ├── build.sh:編譯腳本,用于搭橋Harmony與原生SDK
│ │ ├── doc:指導文檔
│ │ ├── libcopy.py:編譯腳本,用于動態配置編譯環境
│ │ ├── liteos_m:編譯工具,編譯選項設置
│ │ ├── ohosdemo:例程
│ │ ├── os:rtos接口層,方便后續移植其他rtos
│ │ ├── target_config.h:liteos系統裁剪
│ │ └── xr_skylark:芯片原生驅動
│ └── vendor目錄:方案設置,通過vendor/config.json對方案進行裁剪
└── 其他操作:獲取源碼、固件編譯等步驟

其次,OpenHarmony的編譯分為兩部分,一部分是編譯OpenHarmony的系統庫,另一部分是芯片驅動的編譯,也叫原生庫。這兩部分分別使用gn腳本和makefile腳本進行編譯。在配置代碼工程時,我們需要進入原生SDK目錄,并復制配置文件。然后通過圖形化界面配置生成靜態庫和全局頭文件。這個過程需要仔細認真,避免出現錯誤導致編譯失敗。

最后,關鍵步驟說明中涉及了一些命令和操作,這些步驟需要按照一定的順序進行,否則可能會遇到問題。比如在執行make menuconfig命令后,我們需要獲取目錄下的.config文件并生成圖形化配置界面;在hb set命令后,我們需要選擇指定的工程并確認;在hb build -f命令后,如果出現了異常提示,可能是因為舊的flash分配方案不再使用,我們需要自動生成文件image_auto_cal.cfg并覆蓋image_wlan_ble.cfg或者image.cfg。這些步驟需要我們認真按照說明進行操作,才能確保固件編譯的順利進行。

對固件編譯的過程進行詳細的講解,主要包括以下步驟:

  1. 設置編譯工具鏈 :首先需要下載適合編譯的gcc編譯器,并且推薦使用gcc-arm-none-eabi-10-2020-q4-major版本。下載完成后保存在“~/tools”目錄下。
  2. 編譯OpenHarmony的系統庫 :OpenHarmony的編譯分為兩部分,一部分是編譯OpenHarmony的系統庫,這個過程使用gn腳本進行。在OpenHarmony的編譯工具配置文件(device/xradio/xr806/liteos_m/config.gni)中設置編譯器前綴(board_toolchain_prefix)和編譯器類型(board_toolchain_type)。
  3. 編譯芯片驅動的原生庫 :另一部分是芯片驅動的編譯,也叫原生庫,這個過程使用makefile腳本進行。原生庫的編譯工具在device/xradio/xr806/xr_skylark/gcc.mk設置。
  4. 對代碼工程進行配置 :首次編譯工程,需要對原生庫進行配置,否則無法編譯通過。配置步驟包括進入原生SDK目錄,復制配置文件,通過圖形化界面配置,清除舊配置,根據配置生成靜態庫和全局頭文件。
  5. 選擇工程并編譯 :選擇指定的工程進行編譯。常見的編譯命令包括hb set用于選擇工程,hb build -f用于編譯。

在編譯過程中可能會遇到一些異常情況,例如舊的flash分配方案不再使用。此時需要在自動生成的image_auto_cal.cfg文件中覆蓋image_wlan_ble.cfg或者image.cfg的內容。

通過這次學習,我深刻認識到了固件編譯的復雜性和細節性。在編譯過程中,不僅需要選擇合適的編譯器和編譯選項,還需要根據項目需求進行正確的配置和調試。此外,對于出現的問題需要及時進行處理和解決,否則可能會影響整個編譯過程的順利進行。因此,在進行固件編譯時,我們需要有充分的準備和耐心,并不斷學習和積累經驗。

總之,這次學習讓我對固件編譯有了更深入的了解和認識。通過設置編譯工具鏈、對代碼工程進行配置、關鍵步驟說明等方面的學習,我不僅掌握了固件編譯的基本流程和方法,還學會了如何處理和解決編譯過程中可能出現的問題。這些知識將對我今后的學習和工作產生積極的影響。

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

    關注

    68

    文章

    19408

    瀏覽量

    231187
  • RTOS
    +關注

    關注

    22

    文章

    819

    瀏覽量

    119888
  • Cortex-M
    +關注

    關注

    2

    文章

    229

    瀏覽量

    29841
  • OpenHarmony
    +關注

    關注

    25

    文章

    3747

    瀏覽量

    16582
  • xr806
    +關注

    關注

    0

    文章

    14

    瀏覽量

    1338
收藏 人收藏

    評論

    相關推薦

    XR806開發板適用】基于多源信息融合的糧食霉變檢測系統設計

    XR806開發板具有強大的數據處理和傳輸能力,廣泛應用于物聯網和嵌入式系統開發。
    的頭像 發表于 10-27 17:06 ?991次閱讀
    【<b class='flag-5'>XR806</b><b class='flag-5'>開發板</b>適用】基于多源信息融合的糧食霉變檢測系統設計

    基于全志XR806開發板的家用環境監測傳感器設計

    本文來自全志XR806開發板評測活動文章,作者使用XR806開發板制作一個簡單的家用環境監測傳感器,可以獲取當前的溫度、濕度、氣壓、海拔這四個參數,同時能夠通過外部的屏幕實時顯示刷新。
    的頭像 發表于 12-03 10:20 ?719次閱讀
    基于全志<b class='flag-5'>XR806</b><b class='flag-5'>開發板</b>的家用環境監測傳感器設計

    XR806開發板試用】+4.OpenHarmony編譯順序

    首先呢,得看看這個"vendor/xradio/xr806/config.json",這可是個關鍵角色。
    的頭像 發表于 12-11 14:02 ?800次閱讀

    如何使用XR806開發板來設計一個糧食霉變檢測系統?

    XR806開發板具有強大的數據處理和傳輸能力,廣泛應用于物聯網和嵌入式系統開發
    的頭像 發表于 01-05 17:30 ?879次閱讀
    如何使用<b class='flag-5'>XR806</b><b class='flag-5'>開發板</b>來設計一個糧食霉變檢測系統?

    OpenHarmony南向嵌入式:【XR806開發板指導文檔】

    XR806_OpenHarmony開發板是基于XR806芯片設計開發的參考評估,身集成了XR806
    的頭像 發表于 04-14 09:25 ?811次閱讀
    <b class='flag-5'>OpenHarmony</b>南向嵌入式:【<b class='flag-5'>XR806</b><b class='flag-5'>開發板</b>指導文檔】

    XR806芯片、XR806開源鴻蒙開發板簡介

    ??蓮V泛滿足 智能家居、智慧樓宇、工業互聯、兒童玩具、電子競賽、極客DIY 等領域的無線連接需求。芯片框圖芯片參數XR806開源鴻蒙開發板介紹XR806開發板是基于
    發表于 11-15 17:08

    XR806芯片、XR806開源鴻蒙開發板簡介

    ??蓮V泛滿足 智能家居、智慧樓宇、工業互聯、兒童玩具、電子競賽、極客DIY 等領域的無線連接需求。芯片框圖芯片參數XR806開源鴻蒙開發板介紹XR806開發板是基于
    發表于 11-15 18:32

    【資料釋放】全志XR806開發板全資料釋放,連bomlist都給出來了

    ://www.openharmony.cn/#/supportDevices/XR8061.硬件bomlist包含核心和底板兩個部分核心:底板:完整excel文檔下載:
    發表于 12-06 14:06

    XR806開發板下載代碼時遇到錯誤fatal: Cannot get該怎么辦

    XR806開發板試用】下載代碼時遇到如下錯誤 fatal: Cannot get https://gerrit.googlesource.com/git-repo/clone.bundle請問大家
    發表于 12-28 06:21

    【直播預告】全志XR806芯片應用實戰分享

    /joinXR806優秀開發例程《基于OpenHarmony的棋子分揀機》《用全志XR806開源鴻蒙開發板做一個四足行走機器狗》《【
    發表于 02-28 17:39

    【直播預告】全志XR806芯片應用實戰分享會!

    /joinXR806優秀開發例程《基于OpenHarmony的棋子分揀機》《用全志XR806開源鴻蒙開發板做一個四足行走機器狗》《【
    發表于 03-01 09:27

    用deepin進行xr806開發板開發

    為了防止后面一些玄學問題,就放棄在deepin上進行xr806開發了,還是老老實實的在ubuntu上吧.相同的操作,在ubuntu20是,就沒有問題。由于下載源碼時,正好原官方倉庫不可用,就使用了臨時
    發表于 11-17 10:50

    XR806開發板試用】留言功能開發

    XR806開源鴻蒙開發板是一款基于XR806芯片設計,高度集成WiFi/BLE/常用外設,可供開發者進行方案評估、DIY或小規模產品研發,可廣泛應用于智能家居、智能樓宇、智能城市和工業
    的頭像 發表于 10-08 10:58 ?738次閱讀

    XR806開發板試用】FreeRTOS創建任務測試

    這篇來學習下,XR806開發板在FreeRTOS系統下創建兩個任務測試,由于沒有找到學習的文檔,試著參考例程來測試。
    的頭像 發表于 10-10 11:47 ?679次閱讀
    【<b class='flag-5'>XR806</b><b class='flag-5'>開發板</b><b class='flag-5'>試用</b>】FreeRTOS創建任務測試

    全志XR806開發板原理圖

    全志XR806開發板原理圖
    發表于 10-19 15:11 ?12次下載
    百家乐网络赌城| 百家乐高档筹码| 百家乐官网视频游戏视频| 澳门永利赌场| 百家乐真人玩下载| 百樂坊百家乐官网的玩法技巧和规则| 百家乐官网有人赢过吗| 网上投注| 百家乐太阳城菲律宾| 五张百家乐官网的玩法技巧和规则| 百家乐官网娱乐城博彩| 网络百家乐游戏| 威尼斯人娱乐网送38元彩金| 澳门百家乐怎么| 澳门百家乐官网怎么玩| 百家乐官网专业豪华版| 百家乐官网出租平台| 38坊| 足球百家乐系统| 百家乐线上| 百家乐闲拉长龙| 三公百家乐官网在线哪里可以玩| 百家乐官网在发牌技巧| TT娱乐城投注,| 大发888手机版下载| 盐城百家乐的玩法技巧和规则| 有百家乐的游戏平台| 罗盘24山八卦| 缅甸百家乐官网娱乐场开户注册| 菲律百家乐官网太阳城| 来博百家乐官网现金网| 松潘县| 新利88网上娱乐| 大发888游戏注册送98| 战神百家乐的玩法技巧和规则| 百家乐台布21点| 百家乐资金注码| 百家乐官网桌子黑色| 自贡百家乐官网赌场娱乐网规则 | 百家乐国际娱乐| 百家乐官网贴士介绍|