chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

如何移植OpenHarmony 3.0 到星空派開發(fā)板上

OpenHarmony技術(shù)社區(qū) ? 來源:51CTO博客 ? 作者:連志安 ? 2021-10-19 09:08 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

星空派開發(fā)板介紹

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

它支持 WiFi、4G、loRa 等物聯(lián)通信接口。板載 Flash、eeprom 等,支持 3.2 寸的 TFT-LCD 屏幕。

所有 IO 口均引出,可完整地進(jìn)行外設(shè)開發(fā),包括:JTAG、RTC、I2CUART、SPI、SDIO、EXMC、DAC、ADC、USB、TFT-LCD 等。

ARM 芯片移植輕量系統(tǒng)基礎(chǔ)知識(shí)

在做芯片移植工作之前,我們需要掌握一點(diǎn)點(diǎn)基礎(chǔ)知識(shí)。

①適配 LiteOS-M 輕量系統(tǒng)

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

所以我們使用的是內(nèi)核是 LiteOS-M,對(duì)應(yīng)的是 OpenHarmony 輕量系統(tǒng)。

事實(shí)上,OpenHarmony 已經(jīng)做好了 Cortex-M4 核相關(guān)的通用移植工作,具體代碼可以查看文件夾:“kernelliteos_mkernelarcharm”。

可以看到目前已經(jīng)支持了 cortex-m4 核。所以內(nèi)核移植工作基本不需要,減少了我們很多工作量,但是我們?nèi)匀恍枰浦?GD32F303 芯片相關(guān)的。

②哈佛架構(gòu)

GD32F303 采用的是哈佛架構(gòu),哈佛架構(gòu)的特點(diǎn)是代碼指令和數(shù)據(jù)分開存儲(chǔ)。對(duì)于 GD32F303 而言,代碼是存放在片內(nèi) flash 上,地址是 0x8000000。

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

③編譯結(jié)果分析

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

通常編譯最后的結(jié)果會(huì)產(chǎn)生 4 種不同的內(nèi)容,有時(shí)我們也稱為 4 段:

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

RO-data:只讀數(shù)據(jù)段,例如我們?cè)诔绦蛑兴x的全局常量數(shù)據(jù)和字符串都位于此處。由于這些數(shù)據(jù)都是只讀,不會(huì)改變的,那這些只讀的全局就沒必要放到內(nèi)存種,可以直接放到 flash 中,可以節(jié)省內(nèi)存。

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

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

由上我們可以的出來 2 個(gè)結(jié)論:

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

2)芯片上電后,GD32F303 需要將 RW-data 的內(nèi)容復(fù)制到內(nèi)存對(duì)應(yīng)位置,從而保證初始化的全局變量和靜態(tài)變量的值正確;還要對(duì)內(nèi)存中的 ZI-data 段進(jìn)行清零操作,最后才能執(zhí)行 main 函數(shù)。

④程序如何啟動(dòng)

對(duì)于 ARM Cortex-M 系列的芯片而言,當(dāng)芯片上電后,ARM 核會(huì)將地址為 0x8000000 的數(shù)據(jù)映射到 0 地址,然后從 0 地址開始讀取程序指令。

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

⑤中斷向量表

對(duì)于 ARM Cortex-M 系列的芯片而言,0x8000000 地址第一個(gè)字節(jié)是棧指針,由于棧是從高往下增長(zhǎng)的,所以該棧指向芯片最大內(nèi)存處即可。

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

前面 16 個(gè)是內(nèi)核中斷,其中第一個(gè)中斷指針存放的是 Reset_Handler 復(fù)位中斷處理函數(shù)。

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

移植GD32F303到OpenHarmony 3.0

這里提供移植好的相關(guān)代碼,下載鏈接:

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

①先按官網(wǎng)教程搭建好 Ubuntu 下的開發(fā)環(huán)境

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

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

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

②下載上方移植好的代碼

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

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

復(fù)制后,OpenHarmony 3.0 的 device 文件夾內(nèi)容

OpenHarmony 3.0 的 vendor 文件夾內(nèi)容

③編譯

進(jìn)入 OpenHarmony 3.0 源碼根目錄,輸入 hb set 可以看到由 gd32f303_qidian 的編譯選項(xiàng)。選擇。

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

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

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

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

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

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

vendor 文件夾

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

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

內(nèi)如如下,主要是配置相關(guān)組件:

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

device 代碼解析:

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

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

由于移植內(nèi)容較長(zhǎng),本文重點(diǎn)介紹啟動(dòng)文件、鏈接腳本。

①啟動(dòng)文件

啟動(dòng)文件 startup_gd32f30x.s 。最重要的是將 RW-data 的內(nèi)容復(fù)制到內(nèi)存對(duì)應(yīng)位置,從而保證初始化的全局變量和靜態(tài)變量的值正確;還要對(duì)內(nèi)存中的 ZI-data 段進(jìn)行清零操作,最后才能執(zhí)行 main 函數(shù)。

代碼都是匯編,參考自 st 和 gd 相關(guān)啟動(dòng)文件,重要代碼如下:

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

②鏈接腳本

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

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

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

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

③固件生成規(guī)則

同時(shí)鏈接腳本也指定了固件的生成規(guī)則:

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

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

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

接下來就是 text,也就是代碼段,還有 rodata,只讀數(shù)據(jù)段。后面還有其它定義,我們下一篇再細(xì)節(jié)。至此我們的啟動(dòng)文件、鏈接腳本中比較關(guān)鍵的部分已經(jīng)說明完。

liteos-m 內(nèi)核配置

進(jìn)入“devicegdgd32f303_qidianliteos_m”文件夾,可以看到有這個(gè)文件“config.gni”,該文件用于配置 liteos-m 內(nèi)核。

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

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

我們使用的交叉編譯工具鏈?zhǔn)?“arm-none-eabi-”。

下面還配置了相關(guān)宏定義和 gd 標(biāo)準(zhǔn)庫頭文件路徑,需要大家修改。

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

好了,初步移植要點(diǎn)講完了,下一篇文章講 OpenHarmony 內(nèi)核配置文件、main 函數(shù)啟動(dòng)后如何進(jìn)入鴻蒙輕量?jī)?nèi)核~

責(zé)任編輯:haq

聲明:本文內(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)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6075

    文章

    45466

    瀏覽量

    667811
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    7388

    瀏覽量

    129096
  • HarmonyOS
    +關(guān)注

    關(guān)注

    80

    文章

    2153

    瀏覽量

    35886
  • OpenHarmony
    +關(guān)注

    關(guān)注

    33

    文章

    3946

    瀏覽量

    20950

原文標(biāo)題:OpenHarmony 3.0移植到ARM單片機(jī)

文章出處:【微信號(hào):gh_834c4b3d87fe,微信公眾號(hào):OpenHarmony技術(shù)社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    迅為驅(qū)動(dòng)開發(fā)實(shí)戰(zhàn):iTOP-RK3568開發(fā)板eDP屏幕移植全攻略

    迅為驅(qū)動(dòng)開發(fā)實(shí)戰(zhàn):iTOP-RK3568開發(fā)板eDP屏幕移植全攻略
    的頭像 發(fā)表于 12-30 15:42 ?755次閱讀
    迅為驅(qū)動(dòng)<b class='flag-5'>開發(fā)</b>實(shí)戰(zhàn):iTOP-RK3568<b class='flag-5'>開發(fā)板</b>eDP屏幕<b class='flag-5'>移植</b>全攻略

    將經(jīng)典射擊游戲移植芯科科技MG24 Matter開發(fā)板

    開發(fā)板之后,我們迎來了新的挑戰(zhàn):將另一款經(jīng)典第一人稱射擊游戲-毀滅公爵3D(Duke Nukem 3D)的完整體驗(yàn)帶到我們的超低功耗平臺(tái)MG24的開發(fā)板,以實(shí)現(xiàn)包括游戲音樂、多人連線模式等完整的游戲玩法。
    的頭像 發(fā)表于 11-30 10:46 ?899次閱讀
    將經(jīng)典射擊游戲<b class='flag-5'>移植</b><b class='flag-5'>到</b>芯科科技MG24 Matter<b class='flag-5'>開發(fā)板</b>

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

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

    如何移植rt-thread野火imx6ull開發(fā)板

    求助如何將rt-thread移植野火imx6ull(coretex-A7)開發(fā)板,官方的bsp中沒有imx6ull
    發(fā)表于 09-29 06:25

    如何移植EtherCAT Igh--基于米爾RK3576開發(fā)板

    本文將介紹基于米爾電子MYD-LR3576開發(fā)板(米爾基于瑞芯微RK3576開發(fā)板)的移植EtherCATIgh方案的開發(fā)測(cè)試。摘自優(yōu)秀
    的頭像 發(fā)表于 09-26 08:04 ?9746次閱讀
    如何<b class='flag-5'>移植</b>EtherCAT Igh--基于米爾RK3576<b class='flag-5'>開發(fā)板</b>

    貝啟BQ3568HM 開發(fā)板被選用為 OpenHarmony 明星開發(fā)板

    經(jīng)開放原子開源基金會(huì)OpenHarmony社區(qū)官方測(cè)評(píng)評(píng)選,貝啟科技BQ3568HM開源鴻蒙開發(fā)板被正式選用為OpenHarmony明星開發(fā)板。BQ3568HM開源鴻蒙
    的頭像 發(fā)表于 05-25 00:22 ?1355次閱讀
    貝啟BQ3568HM <b class='flag-5'>開發(fā)板</b>被選用為 <b class='flag-5'>OpenHarmony</b> 明星<b class='flag-5'>開發(fā)板</b>

    基于小凌RK2206開發(fā)板OpenHarmony如何使用IoT接口控制FLASH外設(shè)

    1、實(shí)驗(yàn)簡(jiǎn)介本實(shí)驗(yàn)將演示如何在小凌-RK2206開發(fā)板使用IOT庫的FLASH接口,進(jìn)行FLASH編程開發(fā)。例程將創(chuàng)建一個(gè)任務(wù),實(shí)現(xiàn)FLASH讀寫操作。例程源代碼:https
    的頭像 發(fā)表于 04-22 14:49 ?833次閱讀
    基于小凌<b class='flag-5'>派</b>RK2206<b class='flag-5'>開發(fā)板</b>:<b class='flag-5'>OpenHarmony</b>如何使用IoT接口控制FLASH外設(shè)

    基于小凌RK2206開發(fā)板OpenHarmony如何使用IoT接口控制UART外設(shè)

    1、實(shí)驗(yàn)簡(jiǎn)介本實(shí)驗(yàn)將演示如何在小凌-RK2206開發(fā)板使用IOT庫的UART接口,進(jìn)行UART編程開發(fā)。例程將創(chuàng)建一個(gè)任務(wù),通過配置UART引腳,實(shí)現(xiàn)UART讀寫操作。例程源代碼:
    的頭像 發(fā)表于 04-22 14:22 ?960次閱讀
    基于小凌<b class='flag-5'>派</b>RK2206<b class='flag-5'>開發(fā)板</b>:<b class='flag-5'>OpenHarmony</b>如何使用IoT接口控制UART外設(shè)

    基于小凌RK2206開發(fā)板OpenHarmony如何使用IoT接口控制GPIO中斷

    1、實(shí)驗(yàn)簡(jiǎn)介本實(shí)驗(yàn)將演示如何在小凌-RK2206開發(fā)板使用IOT庫的GPIO中斷模式,進(jìn)行GPIO編程開發(fā)。例程將創(chuàng)建一個(gè)任務(wù),通過配置GPIO引腳為中斷模式,實(shí)現(xiàn)GPIO中斷操作
    的頭像 發(fā)表于 04-21 10:39 ?1031次閱讀
    基于小凌<b class='flag-5'>派</b>RK2206<b class='flag-5'>開發(fā)板</b>:<b class='flag-5'>OpenHarmony</b>如何使用IoT接口控制GPIO中斷

    基于小凌RK2206開發(fā)板OpenHarmony如何使用IoT接口控制GPIO外設(shè)

    1、案例簡(jiǎn)介本案例主要是如何在小凌-RK2206開發(fā)板使用IOT庫的GPIO接口,進(jìn)行GPIO編程開發(fā)。例程將創(chuàng)建一個(gè)任務(wù),通過配置GPIO引腳,實(shí)現(xiàn)GPIO讀寫操作。例程源代碼:
    的頭像 發(fā)表于 04-11 15:36 ?1851次閱讀
    基于小凌<b class='flag-5'>派</b>RK2206<b class='flag-5'>開發(fā)板</b>:<b class='flag-5'>OpenHarmony</b>如何使用IoT接口控制GPIO外設(shè)

    基于小凌RK2206開發(fā)板OpenHarmony如何使用IoT接口控制ADC外設(shè)

    1、案例簡(jiǎn)介本案例主要講解如何在小凌-RK2206開發(fā)板使用IoT庫的ADC接口,進(jìn)行ADC編程開發(fā)。例程內(nèi)容為創(chuàng)建一個(gè)任務(wù),讀取按鍵的ADC值,并打印到串口。例程源代碼:http
    的頭像 發(fā)表于 04-10 16:00 ?828次閱讀
    基于小凌<b class='flag-5'>派</b>RK2206<b class='flag-5'>開發(fā)板</b>:<b class='flag-5'>OpenHarmony</b>如何使用IoT接口控制ADC外設(shè)

    基于小凌RK2206開發(fā)板OpenHarmony如何使用IoT接口控制PWM外設(shè)

    1、案例簡(jiǎn)介本案例是在小凌-RK2206開發(fā)板使用IoT庫PWM接口,進(jìn)行PWM編程開發(fā)。例程將創(chuàng)建一個(gè)任務(wù),每隔5秒將PWM0~10依次啟用,輸出1000Hz。
    的頭像 發(fā)表于 04-09 08:59 ?2435次閱讀
    基于小凌<b class='flag-5'>派</b>RK2206<b class='flag-5'>開發(fā)板</b>:<b class='flag-5'>OpenHarmony</b>如何使用IoT接口控制PWM外設(shè)

    北京迅為RK3568開發(fā)板OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開發(fā)內(nèi)核HDF驅(qū)動(dòng)框架架構(gòu)

    北京迅為RK3568開發(fā)板OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開發(fā)內(nèi)核HDF驅(qū)動(dòng)框架架構(gòu)
    的頭像 發(fā)表于 03-11 14:13 ?1732次閱讀
    北京迅為RK3568<b class='flag-5'>開發(fā)板</b><b class='flag-5'>OpenHarmony</b>系統(tǒng)南向驅(qū)動(dòng)<b class='flag-5'>開發(fā)</b>內(nèi)核HDF驅(qū)動(dòng)框架架構(gòu)

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

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

    【北京迅為】itop-3568 開發(fā)板openharmony鴻蒙燒寫及測(cè)試-第1章 體驗(yàn)OpenHarmony—燒寫鏡像

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