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

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

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

3天內不再提示

如何移植OpenHarmony 3.0 到星空派開發板上

OpenHarmony技術社區 ? 來源:51CTO博客 ? 作者:連志安 ? 2021-10-19 09:08 ? 次閱讀

9 月 30 日,OpenHarmony 3.0 LTS 版本發布。本文將介紹如何移植 OpenHarmony 3.0 到星空派開發板上。

星空派開發板介紹

星空派(GD)開發板是由旗點科技推出的一款 gd32 開發板,板載 GD32F303ZET6 芯片,可直接替代 STM32F103 和 GD32F103 系列。

它支持 WiFi、4GloRa 等物聯通信接口。板載 Flash、eeprom 等,支持 3.2 寸的 TFT-LCD 屏幕。

所有 IO 口均引出,可完整地進行外設開發,包括:JTAG、RTC、I2CUART、SPI、SDIO、EXMC、DACADCUSB、TFT-LCD 等。

ARM 芯片移植輕量系統基礎知識

在做芯片移植工作之前,我們需要掌握一點點基礎知識。

①適配 LiteOS-M 輕量系統

GD32F303 系列器件是基于 Arm Cortex-M4 處理器的 32 位通用微控制器

所以我們使用的是內核是 LiteOS-M,對應的是 OpenHarmony 輕量系統。

事實上,OpenHarmony 已經做好了 Cortex-M4 核相關的通用移植工作,具體代碼可以查看文件夾:“kernelliteos_mkernelarcharm”。

可以看到目前已經支持了 cortex-m4 核。所以內核移植工作基本不需要,減少了我們很多工作量,但是我們仍然需要移植 GD32F303 芯片相關的。

②哈佛架構

GD32F303 采用的是哈佛架構,哈佛架構的特點是代碼指令和數據分開存儲。對于 GD32F303 而言,代碼是存放在片內 flash 上,地址是 0x8000000。

數據(也就是代碼中用到的各種變量、內存等)是存放在芯片內部內存 RAM 上,地址是 0x20000000,總共 64K,即 0x10000。

③編譯結果分析

對于 GD32F303 而言,編譯出來的固件一般是 bin 格式、或者 hex 格式。

通常編譯最后的結果會產生 4 種不同的內容,有時我們也稱為 4 段:

code:即程序代碼部分,該內容由所有程序指令組成,也是代碼運行的主體,通常是要燒錄到 GD32F303 片內 flash 上。

RO-data:只讀數據段,例如我們在程序中所定義的全局常量數據和字符串都位于此處。由于這些數據都是只讀,不會改變的,那這些只讀的全局就沒必要放到內存種,可以直接放到 flash 中,可以節省內存。

RW-data:已初始化的讀寫數據,程序中定義并且初始化的全局變量和靜態變量位于此處。由于內存剛上電后,內存上的數據是未知,所以我們需要事先把這些全局變量、靜態變量的初始值先存放到 flash 中,然后上電后,由 CPU 將 flash 中的初始值賦予到內存中的變量中。

ZI-data:未初始化的全局變量或者初始化為0的全局變量,這些變量默認都是 0,我們只需要 CPU 上電后,將這些內存都清零即可。

由上我們可以的出來 2 個結論:

1)我們編譯出來的固件要燒錄到 GD32F303 的片內 flash,需要由 3 段數據:code、RO-data、RW-data。

2)芯片上電后,GD32F303 需要將 RW-data 的內容復制到內存對應位置,從而保證初始化的全局變量和靜態變量的值正確;還要對內存中的 ZI-data 段進行清零操作,最后才能執行 main 函數。

④程序如何啟動

對于 ARM Cortex-M 系列的芯片而言,當芯片上電后,ARM 核會將地址為 0x8000000 的數據映射到 0 地址,然后從 0 地址開始讀取程序指令。

而 0x8000000 地址是芯片內部 flash 的起始地址。也就是編譯生成的固件最終要燒錄到的地址。所以我們的固件前面的代碼非常重要,它是我們芯片啟動后執行的第一條指令。

⑤中斷向量表

對于 ARM Cortex-M 系列的芯片而言,0x8000000 地址第一個字節是棧指針,由于棧是從高往下增長的,所以該棧指向芯片最大內存處即可。

接下來從 0x8000000 的第 2 個字節開始是中斷向量表,存放著所有中斷處理函數指針。

前面 16 個是內核中斷,其中第一個中斷指針存放的是 Reset_Handler 復位中斷處理函數。

芯片一上電、或者復位,都會先從該中斷函數開始運行,所以這個函數是我們最重要的,我們需要在該函數中完成 RW-data、ZI-data 數據的操作,同時初始化好芯片時鐘、最后進入 main 函數。

移植GD32F303到OpenHarmony 3.0

這里提供移植好的相關代碼,下載鏈接:

https://gitee.com/qidiyun/gd32-f303-for-open-harmony-3.0

①先按官網教程搭建好 Ubuntu 下的開發環境

下載arm交叉編譯器:git clone。

https://gitee.com/harylee/gcc-arm-none-eabi-10-2020-q4-major.git

將交叉編譯器環境變量 bin 目錄配置到 .bashrc 文件中或者配置 device/st/stm32l4r9i_disco/liteos_m/config.gni 文件中 board_toolchain_path 宏為交叉編譯器 bin 路徑。

②下載上方移植好的代碼

將 device 文件夾下的 gd 文件夾復制到 OpenHarmony 3.0 代碼的 device 文件夾下。

將 vendor 文件夾下的 gd 文件夾復制到 OpenHarmony 3.0 代碼的 vendor 文件夾下。

復制后,OpenHarmony 3.0 的 device 文件夾內容

OpenHarmony 3.0 的 vendor 文件夾內容

③編譯

進入 OpenHarmony 3.0 源碼根目錄,輸入 hb set 可以看到由 gd32f303_qidian 的編譯選項。選擇。

d6b27f3c-3051-11ec-82a8-dac502259ad0.png

輸入 hb build -f 開始全編譯:

d6f9374c-3051-11ec-82a8-dac502259ad0.png

有看到 [OHOS INFO] gd32f303_qidian build success 表示編譯成功。

編譯完成后,可以在“outgd32f303_qidiangd32f303_qidian”文件夾下看到編譯結果,其中“gd32f303_qidian_ninjia.hex”就是可以直接燒錄到開發板的固件。

d72da7fc-3051-11ec-82a8-dac502259ad0.png

vendor 文件夾

該文件下最重要的文件是“config.json”:

d78c17ba-3051-11ec-82a8-dac502259ad0.png

內如如下,主要是配置相關組件:

d7dbb2c0-3051-11ec-82a8-dac502259ad0.png

device 代碼解析:

device 文件夾:該文件夾下是星空派開發板的重要代碼部分,其中就有啟動文件、main 函數、中斷處理等。

d8136aa8-3051-11ec-82a8-dac502259ad0.png

由于移植內容較長,本文重點介紹啟動文件、鏈接腳本。

①啟動文件

啟動文件 startup_gd32f30x.s 。最重要的是將 RW-data 的內容復制到內存對應位置,從而保證初始化的全局變量和靜態變量的值正確;還要對內存中的 ZI-data 段進行清零操作,最后才能執行 main 函數。

代碼都是匯編,參考自 st 和 gd 相關啟動文件,重要代碼如下:

d859761a-3051-11ec-82a8-dac502259ad0.png

②鏈接腳本

鏈接腳本是“gd32f30x_qidian.ld”,用于指定code、RO-data、RW-data、ZI-data 如何分布。

首先指定內存地址為 0x20000000,大小為 64K、片上 flash 地址為:0x8000000,大小為 512K,這里跟芯片相關,需要正確修改,否則可能起不來。

d8a211f4-3051-11ec-82a8-dac502259ad0.png

這里跟芯片相關,需要正確修改,否則可能起不來。

③固件生成規則

同時鏈接腳本也指定了固件的生成規則:

d8ee6c02-3051-11ec-82a8-dac502259ad0.png

這里只截取了部分,可以看到生成的固件最開始存放的 isr_vector,這個是中斷向量表,在啟動文件中定義:

d949d056-3051-11ec-82a8-dac502259ad0.png

接下來就是 text,也就是代碼段,還有 rodata,只讀數據段。后面還有其它定義,我們下一篇再細節。至此我們的啟動文件、鏈接腳本中比較關鍵的部分已經說明完。

liteos-m 內核配置

進入“devicegdgd32f303_qidianliteos_m”文件夾,可以看到有這個文件“config.gni”,該文件用于配置 liteos-m 內核。

其中比較重要部分是指定我們的處理器架構和交叉編譯工具鏈,如下:

d9a674fa-3051-11ec-82a8-dac502259ad0.png

我們使用的交叉編譯工具鏈是 “arm-none-eabi-”。

下面還配置了相關宏定義和 gd 標準庫頭文件路徑,需要大家修改。

da00f45c-3051-11ec-82a8-dac502259ad0.png

好了,初步移植要點講完了,下一篇文章講 OpenHarmony 內核配置文件、main 函數啟動后如何進入鴻蒙輕量內核~

責任編輯:haq

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

    關注

    6035

    文章

    44554

    瀏覽量

    634692
  • 操作系統
    +關注

    關注

    37

    文章

    6807

    瀏覽量

    123285
  • HarmonyOS
    +關注

    關注

    79

    文章

    1974

    瀏覽量

    30147
  • OpenHarmony
    +關注

    關注

    25

    文章

    3715

    瀏覽量

    16257

原文標題:OpenHarmony 3.0移植到ARM單片機

文章出處:【微信號:gh_834c4b3d87fe,微信公眾號:OpenHarmony技術社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    ARM開發板與樹莓的比較

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

    OpenHarmony 明星開發板和應用招募啟動,等你來!

    優秀標桿,活動將圍繞OpenHarmony開發板和應用展開,歷經報名、初選、復選、公示四個階段,最終評選出的優秀開發板和應用將在社區進行重點推廣。 報名時間 活動報名時間從即日開始, 截止
    發表于 09-14 15:21

    樹莓和arm開發板的區別

    樹莓(Raspberry Pi)和ARM開發板都是基于ARM架構的微型計算機,但它們之間存在一些關鍵區別。 一、歷史背景 樹莓(Raspberry Pi) 樹莓是由英國樹莓
    的頭像 發表于 08-30 15:36 ?992次閱讀

    linux開發板與樹莓的區別

    定義和用途 Linux開發板:Linux開發板是一種基于Linux操作系統的嵌入式開發板,通常用于工業自動化、物聯網、智能家居等領域。 樹莓:樹莓
    的頭像 發表于 08-30 15:34 ?938次閱讀

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

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

    鴻蒙OpenHarmony【集成三方SDK】 (基于Hi3861開發板

    OpenHarmony致力于打造一套更加開放完善的IoT生態系統,為此OpenHarmony規劃了一組目錄,用于將各廠商的SDK集成OpenHarmony中。本文檔基于Hi3861
    的頭像 發表于 04-24 15:11 ?1105次閱讀
    鴻蒙<b class='flag-5'>OpenHarmony</b>【集成三方SDK】 (基于Hi3861<b class='flag-5'>開發板</b>)

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

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

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

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

    【七】Purple Pi OH開發板帶你7天入門OpenHarmony

    OpenHarmonyOS。一.PurplePiOH開發板的使用體驗1.1USB首先,讓我們談談PurplePiOH開發板。作為一款與樹莓兼容的
    的頭像 發表于 03-22 08:31 ?410次閱讀
    【七】Purple Pi OH<b class='flag-5'>開發板</b>帶你7天入門<b class='flag-5'>OpenHarmony</b>!

    OpenHarmony鴻蒙實戰】在RK3399開發板實現智能門禁人臉識別

    基于RK3399開發板,使用OpenHarmony3.0-LTS開發的應用。通過定時獲取攝像頭數據,實現人臉識別比對等功能。
    的頭像 發表于 03-20 17:38 ?1330次閱讀
    【<b class='flag-5'>OpenHarmony</b>鴻蒙實戰】在RK3399<b class='flag-5'>開發板</b>實現智能門禁人臉識別

    移植libmodbus庫米爾-全志T113-i開發板

    測試開發板在工業領域的應用,modbus作為工業領域的一個重要協議,那好就移植libmodbus庫。
    的頭像 發表于 03-05 22:37 ?2431次閱讀
    <b class='flag-5'>移植</b>libmodbus庫<b class='flag-5'>到</b>米爾-全志T113-i<b class='flag-5'>開發板</b>

    ELF 1技術貼|如何將Python3.6.9移植開發板

    如何進行交叉編譯并移植ELF1開發板。在網址:https://www.python.org/ftp/python/下載Python-3.6.9.tar.xz壓縮
    的頭像 發表于 02-22 14:06 ?429次閱讀
    ELF 1技術貼|如何將Python3.6.9<b class='flag-5'>移植</b><b class='flag-5'>到</b><b class='flag-5'>開發板</b><b class='flag-5'>上</b>

    飛騰開發板評測獲獎名單公布!!!

    恭喜以上小伙伴!經過飛騰專家評選,前三名小伙伴可保留飛騰開發板,其余小伙伴需退回開發板,有問題請微信聯系工作人員(微信號:elecfans123) 飛騰
    發表于 01-30 17:02

    使用愛芯Pro開發板部署人體姿態估計模型

    在經過之前對于開發板的使用,以及通過幾個愛芯官方給出的示例demo(mobilenet/yolov5)在開發板的部署之后,筆者也逐漸了解了愛芯
    的頭像 發表于 01-09 09:50 ?1413次閱讀
    使用愛芯<b class='flag-5'>派</b>Pro<b class='flag-5'>開發板</b>部署人體姿態估計模型

    【飛騰4G版免費試用】飛騰開發板運行Ubuntu系統

    支持國內OpenKylin、OpenHarmony、SylixOS、RT-Thread等國產操作系統。 飛騰4G版開發板運行Ubuntu系統,來自于網絡的資料,給大家整
    發表于 01-08 22:40
    主站蜘蛛池模板: 久久久久久久伊人电影| 亚色九九九全国免费视频| 中文字幕成人在线观看| 国产亚洲日韩在线播放不卡| 三级黄色在线视频| 啊灬啊灬啊灬快高潮视频| 美女被日出水| 怡春院院日本一区二区久久| 国内精品一级毛片免费看| 久久囯产精品777蜜桃传媒| 亚洲成人黄色片| 国产精品人妻无码77777| 男女后进式猛烈xx00动态图片| 忘忧草秋观看未满十八| 东京热影院| 日韩人妻无码精品-专区| 成人国产精品玖玖热色欲| 欧美肥婆性生活| 99久久精品互换人妻AV| 男女又黄又刺激B片免费网站| 91精品国产色综合久久不| 脔到她哭H粗话HWWW男男动漫| 中文字幕一区二区三区在线不卡| 久久精品亚洲国产AV涩情| 在线观看亚洲 日韩 国产| 久久亚洲国产精品亚洲| 在线看片成人免费视频| 就操成人网| 99视频导航| 日本xxxxxxx| 国产 亚洲 中文字幕 在线| 私人玩物在线观看| 国产午夜福利100集发布| 亚洲精品久久无码AV片WWW| 国产成人99久久亚洲综合精品| 色小姐电影qvod播放| FREE17一18外女破| 日本漫画大全无翼乌| 国产AV天堂一区二区三区| 校花的奶好大好浪| 黄色直接观看|