1.前言
GD32E230 系列是 GD 的 Cortex_M23 系列產品,GD32F330 系列是 GD 的 Cortex_M4 系列產品,這兩個系列的兼容度非常高。客戶會有從 GD32E230 系列移植到 GD32F330 系列的需求,本文檔專門針對既有的 GD32E230 代碼如何移植到 GD32F330 做一個詳細的介紹;
2.硬件差異
GD32E230 系列的封裝類型有:TSSOP20、LGA20、QFN28、QFN32、LQFP32、LQFP48,GD32F330系列的封裝類型有:TSSOP20、QFN28、QFN32、LQFP48、LQFP64,兩個系列相同封裝的芯片引腳是兼容的。
注意:
1. TSSOP20和QFN28的封裝中,GD32E230系列PA9、PA10可以映射為PA11、PA12,GD32F330系列不具備此功能。
2. LQFP48封裝管腳1在GD32E230系列上面是VDD,在GD32F330上是VBAT,也就是說E230不支持掉電運行RTC;




3.資源及外設地址對比

以上斜杠“/”代表有多種情況,需要根據具體芯片型號區分。


1. GD32F330 增加了 TIMER1,但裁剪掉了 TIMER5(在 350 系列上有保留),GD32E230 裁剪掉了 TIMER1;
2. GD32E230 系列有一路比較器,GD32F330 沒有該資源,GD32F350 系列配置兩路比較器;
3. GD32E230 系列新增了 1K 的 OTP 區域,GD32F330 沒有該資源。
4.開發工具對比
1. GD32F330可使用MDK for ARM的KEIL4及KEIL5進行開發,使用Keil 4建議安裝4.74及以上;使用Keil 5建議安裝5.20以上版本。也可以使用IAR for ARM開發,建議安裝IAR 6.3及以上版本。

2. GD32F330 可以使用 JLINK、ULINK、GDLINK 等調試工具進行開發。

5.軟件環境設置
5.1 使用 Keil 開發 GD32F330
目前市面通用的MDK for ARM版本有Keil 4和Keil 5:使用Keil 4建議安裝4.74及以上,使用Keil 5建議安裝5.20以上版本。
5.1.1. 在 Keil4 中添加 GD32F3x0 MCU Device
1. 從GD32MCU官網下載相關的GD32F3x0系列插件

2. 雙擊安裝文件,把插件安裝至Keil 4的目錄,一般都會默認選擇,如若同時安裝了Keil 4和Keil 5才需要手動選擇。

3. 安裝成功后,重新打開Keil 4,則可以在File->Device Database中出現Gigadevice的下拉選項,點擊可以查看到相應的型號。

4. 為了后續debug工作的順利進行,建議檢查一下安裝路徑下是否有下載算法,可以通過如下方式查看:打開一個工程,將型號選為GD32F3x0的型號,然后Options for Target -> Debug->Settings -> Flash Download-> Add,如果下拉選項中有GD32F3x0的下載算法則完全安裝成功。

5.1.2. 在 Keil5 中添加 GD32F3x0 MCU Device
1. 從GD32MCU官網下載相關的GD32F3x0系列插件。

2. 解壓并安裝至Keil 5的目錄,一般都會默認選擇。

3. 安裝完后重新打開keil5工程,即可在Device中出現Gigadevice的型號。

4. 在Options for Target -> Debug ->Settings ->Flash Download 中添加flash算法,會出現GD32F3X0的算法,即說明安裝成功。根據相應的芯片選擇合適的算法,即可下載仿真。

5. 用Keil 5打開Keil 4工程,如果報找不到器件信息等錯誤,將Keil 4的插件安裝在Keil 5的目錄下,具體操作方式參考Keil 4插件相關內容。
5.2 使用 GD-Link 開發 GD32F330
GD32F3x0的開發板自帶GD-link,可以用電路板上的GD-link調試仿真代碼,操作方法如下。
1. 在Options for Target -> Debug 中選擇“CMSIS-DAP Debugger”,部分客戶反饋找不到這一驅動器選項,那是因為MDK版本過低,只有Keil4.74以上的版本和Keil5才支持CMSIS-DAPDebugger選項。

2. 在Options for Target -> Utilities,也要選擇“CMSIS-DAP Debugger”。

3. 在 Options for Target -> Debug ->Settings 勾 選 SWJ 、 Port 選 擇 SW 。 右 框 IDcode 會 出現”0xXBAXXXXX”。

4. 在Options for Target -> Debug ->Settings -> Flash Download中添加GD32的flash算法。

5. 單擊下圖的快捷方式“debug”,即可使用GD-Link進行仿真。

5.3 使用 J-Link 開發 GD32F330
使用J-Link來debug GD MCU,具體配置如下:
1. 在Options for Target -> Debug中選擇“J-LINK/J-Trace Cortex”

2. 在Options for Target -> Debug ->Utilities,也要選擇“J-LINK/J-Trace Cortex”。

3. 在Options for Target -> Debug ->Settings勾選SWJ,Port選擇 SW。右框IDcode會出現“0xXBAXXXXX”。

4. 在Options for Target -> Debug ->Settings -> Flash Download中添加GD32的flash算法。

5. 單擊下圖的快捷方式“debug”,即可使用J-Link進行仿真。

5.4 使用 IAR 開發 GD32F3x0
IAR版本眾多,版本之間的兼容性并不好,如果初次使用建議安裝7.3以上的版本,安裝好IAR以后再根據該文檔來添加GD的器件型號,進行相關的debug工作。
5.4.1. 在 IAR 中添加 GD32F3x0 MCU Device
1. 從相關網站下載相應的GD32F3x0系列插件:IAR_GD32F3x0_ADDON_2.0.0.exe:
2. 運行IAR_GD32F3x0_ADDON_2.0.0.exe,單擊start開始安裝插件。

3. 安裝成功后單擊Finish,結束插件安裝。

5.4.2 在 IAR 中編譯調試 GD32F3x0
在上一小節中我們已經添加了GD32F3x0系列的插件,這一小節我們介紹應如何使用它。
1. 使用IAR編譯GD的型號,有兩個辦法,一種是使用現有的工程進行修改,還有就是重新建立工程,這里就不細說具體工程應該如何建立,GD的工程建立和別的平臺都一致,建立工程時選擇GD的相應型號。

2. 6.1版本以后的IAR不需要添加CMSIS文件(core_cm3.c和core_cm3.h),但是需要勾選General Options->Library Configuration的Use CMSIS,如果軟件代碼有使用到printf函數,還需要修改Library為FULL。

3. 芯片的Link文件建立工程時會默認根據型號選定,但是編譯前還是要有檢查的習慣,檢查一下ICF文件是否有配置,是否正確。

4. 配置Debugger->Setup選項,新建立的工程默認是Simulator模擬,如果需要調試那么需要根據實際情況來選擇:使用GD-Link選擇CMSIS DAP(兼容性不好,不建議在IAR下使用)或使用J-Link選擇J-Link/J-Trace。

5. 配置Debugger->Download選項,新建的工程有可能沒有配置download選項,如果我們需要調試代碼那么務必要勾選User flash loader選項,且保證board file準確,否則程序無法正常下載至芯片內部。

6 GD32E23x_Firmware_Library_V1.1.1 移植步驟
本章將使用GD32E23x_Firmware_Library_V1.1.1固件庫文件Template里的工程做示例。
1. 打開Keil工程

2. 打開工程后,Options for Target -> Device,選擇對應的GD32F330型號。

3. 在Options for Target -> Debug ->Settings -> Flash Download中添加GD32F330的flash算法。

4. 拷貝Cortex M4 內核支持文件至x:\ GD32E23x_Firmware_Library_V1.1.1\Firmware\CMSIS。

5. 修改“gd32e23x.h”頭文件的內容。
圖 6-5 修改“gd32e23x.h”頭文件的內容

表 6-1 修改“gd32e23x.h”頭文件的內容

6. GD32E230不支持中斷分組,所以固件庫中沒有void nvic_priority_group_set(uint32_tnvic_prigroup)函數,需要在固件庫添加相應的內容。
表 6-2 修改“gd32e23x_misc.h”頭文件的內容

表 6-3 修改“gd32e23x_misc.c”頭文件的內容

7. GD32E230僅支持4級搶占優先級,不支持子優先級,GD32F330既支持搶占優先級也支持子優先級,需要在固件庫里修改相應的內容。
表 6-4 修改“gd32e23x_misc.h”頭文件的內容

表 6-5 修改“gd32e23x_misc.c”頭文件的內容

8. GD32F330的Flash是零等待的,GD32E230系列需要配置Flash插入等待周期,因此可去掉插入等待周期的函數。
表 6-5 去掉插入等待周期的函數

9. GD32E230的Flash支持32位和64位編程,GD32F330的Flash支持32位字和半字編程。如過應用代碼中使用了64位編程需要修改成32位字或半字編程,GD32E230固件庫中需要添加半字編程的內容。
表 6-6 在“gd32e23x_fmc.h”中添加半字編程的內容

表 6-7 在“gd32e23x_fmc.c”中添加半字編程的內容

7 GD32E23x 項目底層 Library 替換成 GD32F3x0 Library 步驟
本章將使用GD32E23x_Firmware_Library_V1.1.1固件庫文件Template里的工程以及GD32F3x0_Firmware_Library_V2.1.2\Template做示例。
1. 復制GD32F3x0_Firmware_Library_V2.1.2\Firmware\CMSIS下的.h文件替換到GD32E23x_Firmware_Library_V1.1.1\Firmware\CMSIS文件夾下,如圖7-1所示,

2. 復制GD32F3x0_Firmware_Library_V2.1.2\Firmware\CMSIS\GD\GD32F3x0里的Iclude和Source兩個文件夾替換到GD32E23x_Firmware_Library_V1.1.1\Firmware\CMSIS\GD\GD32E23x文件夾下,如圖 7-2所示

3. 復制GD32F3x0_Firmware_Library_V2.1.2\Firmware\GD32F3x0_standard_peripheral里的Iclude和Source兩個文件夾替換到GD32E23x_Firmware_Library_V1.1.1\Firmware\GD32E23x_standard_peripheral文件夾下,如下圖7-3所示

6. 復制GD32F3x0_Firmware_Library_V2.1.2\Template下的gd32f3x0_libopt.h(圖7-4)到E230的相應文件夾路徑下D:\GD32E23x_Firmware_Library_V1.1.1\Template

7. 打開GD32E23x項目,會看到左側有黃色三角標記,表示原文件已經不存在,原因是前面的文件替換步驟已經把舊文件替換掉。如圖7-5(1)、7-5(2)所示:


8. 此時只需要把黃色標記的文件全部移除,gd32e230c_eval.c為開發板配套配置,實際項目不使用,可以移植,然后再添加相應的3x0文件。如圖7-6所示:

9. 將項目應用的.C文件里包含的頭文件#include "gd32e23x.h"修改為#include "gd32f3x0.h",并刪除#include "gd32e230c_eval.h"。然后重新選擇芯片型號,以及FLASH算法,如圖7-7所示:



10. 項目應用代碼中有使用中斷的配置時需要做修改。GD32E230不支持中斷分組,所以移植GD32F330庫之后,應用代碼需要添加以下函數:
/***中斷分組****/
void nvic_priority_group_set(uint32_t nvic_prigroup)
而且GD32E230僅支持4級搶占優先級,不支持子優先級,所以移植之后,優先級需要更改成以下函數:
/***中斷搶占與子優先級****/
void nvic_irq_enable(uint8_t nvic_irq, uint8_t nvic_irq_pre_priority, uint8_t nvic_irq_sub_priority)
11. 如項目中使用到TIMER5定時器,由于GD32F330剪裁掉此定時器(在350系列上有保留),則相關TIMER5的代碼需要更改為其它時鐘, 比如GD32F3x0增加的TIMER1,或者其它未使用的定時器。
12. 編譯項目,如有報錯,則根據提示做修改,通常提示為項目上層應該邏輯代碼的.C文件里包含的#include "gd32e23x.h"沒有修改為#include "gd32f3x0.h",根據提示修改即可。至此,項目移植成功。
-
單片機
+關注
關注
6055文章
44792瀏覽量
643515 -
嵌入式
+關注
關注
5119文章
19397瀏覽量
312180 -
STM32
+關注
關注
2281文章
10976瀏覽量
360683 -
開發板
+關注
關注
25文章
5305瀏覽量
100314 -
GD32
+關注
關注
7文章
417瀏覽量
24919
發布評論請先 登錄
相關推薦
gd32e230 flash 模擬eeprom
【GD32 MCU 移植教程】6、從GD32F1x0和GD32F3x0移植到GD32E230

【GD32 MCU 移植教程】7、從 GD32F10x 移植到 GD32E103

【GD32 MCU 移植教程】8、從 STM32F4xx 系列移植到 GD32F4xx 系

【GD32 MCU 移植教程】9、從 STM32F10x 系列移植到 GD32F30x 系列

【GD32 MCU 移植教程】10、從STM32F030系列移植到GD32E230系列

AN169 從GD32E230系列移植到GD32E235系列

評論