国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

移植OpenHarmony 3.0到ARM單片機

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

[[428941]]

想了解更多內(nèi)容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com

9月30日,OpenHarmony 3.0 LTS版本發(fā)布。

本文將介紹如何移植OpenHarmony 3.0到星空派開發(fā)板上。

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

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

支持WiFi、4G、loRa等物聯(lián)通信接口。板載Flash、eeprom等,支持3.2寸的TFT - LCD屏幕。所有IO口均引出,可完整地進行外設(shè)開發(fā),包括:JTAG、RTC、I2C、UART、SPI、SDIO、EXMC、DAC、ADC、USB、TFT-LCD等。

移植OpenHarmony 3.0到ARM單片機-鴻蒙HarmonyOS技術(shù)社區(qū)

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

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

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

GD32F303系列器件是基于Arm® Cortex®-M4處理器的32位通用微控制器。所以我們使用的是內(nèi)核是LiteOS-M,對應(yīng)的是OpenHarmony輕量系統(tǒng)。

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

移植OpenHarmony 3.0到ARM單片機-鴻蒙HarmonyOS技術(shù)社區(qū)

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

(2)哈佛架構(gòu)

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

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

移植OpenHarmony 3.0到ARM單片機-鴻蒙HarmonyOS技術(shù)社區(qū)

(3)編譯結(jié)果分析

對于GD32F303而言,編譯出來的固件一般是bin格式、或者hex格式。通常編譯最后的結(jié)果會產(chǎn)生4種不同的內(nèi)容,有時我們也稱為4段:

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

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

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

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

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

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

移植OpenHarmony 3.0到ARM單片機-鴻蒙HarmonyOS技術(shù)社區(qū)

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

(4)程序如何啟動

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

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

(5)中斷向量表

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

接下來從0x8000000的第2個字節(jié)開始是中斷向量表,存放著所有中斷處理函數(shù)指針。前面16個是內(nèi)核中斷,其中第一個中斷指針存放的是Reset_Handler復(fù)位中斷處理函數(shù)。芯片一上電、或者復(fù)位,都會先從該中斷函數(shù)開始運行,所以這個函數(shù)是我們最重要的,我們需要在該函數(shù)中完成RW-data、ZI-data數(shù)據(jù)的操作,同時初始化好芯片時鐘、最后進入main函數(shù)。

移植OpenHarmony 3.0到ARM單片機-鴻蒙HarmonyOS技術(shù)社區(qū)

3. 移植GD32F303芯片到OpenHarmony3.0

這里提供移植好的相關(guān)代碼,下載鏈接:https://gitee.com/qidiyun/gd32-f303-for-open-harmony-3.0

(1)先按官網(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路徑。

(2)下載上方移植好的代碼,文件夾如下:

將device文件夾下的gd文件夾復(fù)制到OpenHarmony3.0代碼的device文件夾下。

將vendor文件夾下的gd文件夾復(fù)制到OpenHarmony3.0代碼的vendor文件夾下。

復(fù)制后,OpenHarmony3.0的device文件夾內(nèi)容如下:

OpenHarmony3.0的vendor文件夾內(nèi)容如下:

(3)編譯

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

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

移植OpenHarmony 3.0到ARM單片機-鴻蒙HarmonyOS技術(shù)社區(qū)

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

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

移植OpenHarmony 3.0到ARM單片機-鴻蒙HarmonyOS技術(shù)社區(qū)

4. vendor文件夾

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

移植OpenHarmony 3.0到ARM單片機-鴻蒙HarmonyOS技術(shù)社區(qū)

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

移植OpenHarmony 3.0到ARM單片機-鴻蒙HarmonyOS技術(shù)社區(qū)

5. device代碼

(1)device文件夾:

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

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

(2)啟動文件

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

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

移植OpenHarmony 3.0到ARM單片機-鴻蒙HarmonyOS技術(shù)社區(qū)

(3)鏈接腳本

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

首先指定內(nèi)存地址為0x20000000,大小為64K。

片上flash地址為:0x8000000,大小為512K。

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

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

(4)固件生成規(guī)則。

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

移植OpenHarmony 3.0到ARM單片機-鴻蒙HarmonyOS技術(shù)社區(qū)

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

移植OpenHarmony 3.0到ARM單片機-鴻蒙HarmonyOS技術(shù)社區(qū)

接下來就是text,也就是代碼段。

還有rodata,只讀數(shù)據(jù)段。

后面還有其它定義,我們下一篇再細節(jié)。

至此我們的啟動文件、鏈接腳本中比較關(guān)鍵的部分已經(jīng)說明完。

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

進入“device\gd\gd32f303_qidian\liteos_m”文件夾,可以看到有這個文件“config.gni”。

該文件用于配置 liteos-m內(nèi)核。

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

移植OpenHarmony 3.0到ARM單片機-鴻蒙HarmonyOS技術(shù)社區(qū)

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

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

移植OpenHarmony 3.0到ARM單片機-鴻蒙HarmonyOS技術(shù)社區(qū)

好了~~~,初步移植要點講完了,下一篇文章講openharmony內(nèi)核配置文件、main函數(shù)啟動后如何進入鴻蒙輕量內(nèi)核。

想了解更多內(nèi)容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com

 

責(zé)任編輯:jianghua 來源: 鴻蒙社區(qū)
相關(guān)推薦

2021-07-08 09:15:20

單片機編程狀態(tài)機編程語言

2011-06-09 11:06:36

JVM

2022-06-21 11:30:22

littleVGL鴻蒙

2021-06-22 10:02:07

單片機語言代碼

2009-04-11 15:12:24

2010-06-19 13:32:36

TCP IP協(xié)議棧

2010-06-19 14:10:35

TCP IP協(xié)議棧

2022-06-21 11:02:27

系統(tǒng)移植鴻蒙

2010-09-08 15:18:54

單片機TCP IP協(xié)議棧

2021-12-31 10:00:30

鴻蒙HarmonyOS應(yīng)用

2010-09-27 16:26:09

JVMarm

2021-12-29 16:11:11

鴻蒙HarmonyOS應(yīng)用

2022-03-01 08:31:37

volatile變量編譯器

2022-01-26 08:31:25

聯(lián)合體單片機編程

2011-05-24 17:47:40

2009-04-22 17:18:29

PCB技術(shù)單片機

2021-07-05 08:04:46

Linux運行地址

2023-06-27 15:12:46

C++三方庫移植

2022-09-14 15:28:19

操作系統(tǒng)鴻蒙

2022-09-15 15:21:22

操作系統(tǒng)鴻蒙
點贊
收藏

51CTO技術(shù)棧公眾號

综合电影一区二区三区 | 亚洲黄色片网站| 国产黄色激情视频| 五月天久久网站| 久久久精品美女| 9191在线播放| 亚洲一级二级三级在线免费观看| 最近免费观看高清韩国日本大全| 欧美激情一区| 57pao成人永久免费视频| japanese23hdxxxx日韩| 欧美乱妇15p| 久草在线免费福利| 国产欧美日韩卡一| 免费看污污视频| 亚洲免费婷婷| 中文字幕一区二区三区色视频| 三级黄色的网站| 成人午夜短视频| 成人欧美在线观看| 尤物九九久久国产精品的特点| 嫩草影院发布页| 久久你懂得1024| 国产一区二区三区小说| 国风产精品一区二区| 麻豆av在线导航| 午夜精彩视频在线观看不卡| 午夜两性免费视频| 久久天堂av综合合色蜜桃网| 女人被男人躁得好爽免费视频| 蜜桃视频第一区免费观看| 久久综合色一本| 国产精品日韩| 免费成人在线观看av| 99精品国产一区二区青青牛奶| 国产精品视频yy9099| 欧美极品在线观看| 性日韩欧美在线视频| 人人精品久久| 久久精品免费电影| 2019年精品视频自拍| 一区二区三区视频免费| 日韩欧美少妇| 久久亚洲电影天堂| 精品视频一二| 91精品国产91久久久久久久久| 久久午夜影院| 国产精品电影网| 国产精品久久久乱弄| 91精品综合视频| 欧美激情综合| 色噜噜色狠狠狠狠狠综合色一| 日韩国产在线一| 日本黄网站色大片免费观看| av综合在线播放| 自拍偷拍21p| 亚洲成人手机在线| 国产精品视频地址| 久久国产情侣| 婷婷综合在线观看| 一本一道波多野毛片中文在线 | 天天爱天天操天天干| 国产亚洲精品bt天堂精选| 另类小说色综合| 五月天婷婷综合| 日本福利在线| 国产一区二区三区在线看 | 亚洲综合图片区| 日韩精品系列| 精品日韩一区二区| 一区二区三区日本视频| 日韩av免费在线播放| 欧美日韩一区自拍| 在线观看国产一区| 国产欧美日韩精品在线| 欧美捆绑视频| 亚洲国产精品女人久久久| 97久久中文字幕| 91手机视频在线观看| 老司机精品视频导航| 国产aaaaa毛片| 欧美日韩国产综合视频在线观看| 另类中文字幕国产精品| 国产精品爱啪在线线免费观看| 日韩视频在线一区二区三区 | 成人欧美一区二区三区视频网页| 偷拍自拍在线| 国产亚洲视频在线| 国产欧美日韩在线一区二区| 欧美日韩亚洲丝袜制服| 国产欧美日韩亚洲一区二区三区| 色哟哟一区二区| 毛片在线不卡| 久久成年人视频| 在线一区免费| 国产一区二区三区小说| 亚洲精品国产第一综合99久久| 91在线不卡| 欧美日本精品在线| 国产精品草草| 一区二区三区四区五区视频 | 尤物视频网站在线观看| 亚洲精品wwww| 日本电影一区二区| 中文字幕色呦呦| 精品日韩中文字幕| 国产a亚洲精品| 国产精品初高中精品久久| 91亚洲精品一区二区乱码| 国产精品一级伦理| 国产69精品久久久久99| 久久婷婷麻豆| 369你懂的电影天堂| 日韩免费观看高清完整版| 亚欧日韩另类中文欧美| 久久99国产精品| 亚洲男同1069视频| 成人看片网页| 久久精品日产第一区二区三区精品版| 国产情人综合久久777777| av激情在线| 91久久久国产精品| 2017欧美狠狠色| 深夜av在线| 国产精品综合久久久久久| 国产精品国产a| 成人精品一区二区三区电影| 欧美日韩精品久久| 黑人巨大精品欧美一区二区一视频 | 男人的天堂avav| 欧美日本在线一区| 精品国产一级毛片| 日韩网址在线观看| 亚洲欧美一区二区三区在线| 激情视频一区二区三区| 在线视频专区| 奇米四色中文综合久久| 国产日韩欧美一区二区三区乱码| 小h片在线观看| 色综合电影网| 91精品婷婷国产综合久久性色 | 欧美99在线视频观看| 99热最新网址| 色婷婷av一区二区三区在线观看 | 成人午夜两性视频| 亚洲激情图片小说视频| aaa国产精品视频| 92看片淫黄大片一级| 一夜七次郎国产精品亚洲| 另类综合日韩欧美亚洲| 在线heyzo| 欧美一级日本a级v片| 欧美视频一区二区三区在线观看| 91精品国产自产在线观看永久∴| 色视频在线播放| 91免费在线视频| 精品久久久久久久大神国产| 国产国产精品| 免费看男男www网站入口在线| 91精品久久久久久久久久入口 | 精品一区二区在线播放| 亚洲综合伊人久久大杳蕉| 精品国产乱码久久久久软件 | 日韩和欧美的一区二区| 欧美日韩国产乱码电影| 99热在线精品观看| 午夜国产福利在线| 久久久久久久免费| 亚洲精品国产成人| av中文字幕一区| 女同久久另类99精品国产| 成人黄色影视| 欧美性感一区二区三区| 一本久久综合亚洲鲁鲁| 亚洲第一区在线| 欧美浪妇xxxx高跟鞋交| 欧美精品影院| 国产精品国内视频| 一区二区三区在线观看欧美| 国产91精品对白在线播放| 国产视频青青| 91精品久久久久久久久| 欧美疯狂做受xxxx富婆| 国产一区二区剧情av在线| 四虎在线精品| 狠狠色一日本高清视频| 国产日韩欧美精品| 亚洲精品国产精品乱码不99按摩| 成人黄页在线观看| 亚洲素人在线| 日本中文字幕在线观看| 日韩中文字幕亚洲精品欧美| 久久久久久久久综合| 天天综合网天天综合色| 一区二区日韩免费看| 欧美日韩国产网站| 欧美艹逼视频| 亚洲高清视频在线观看| 久久久久久久成人| 欧美午夜精品理论片a级按摩|