初探RT-Thread系統在GD32E103x晶片上的使用,點亮LED燈

前端人生發表於2020-10-24

前言

​ 隨著中美貿易戰的加劇,很多公司越來越重視使用國產技術的重要性。使用國產技術,一方面可規避國外對技術的封鎖造成產品核心技術的斷供,另一方面還可以支援國內技術的迭代和進步。

​ 兆易創新國內一家致力於開發先進儲存器技術和IC解決方案的公司,具有豐富的產品線,基於ARM核心開發了多款MCU,而在該篇文章中我們只介紹一款MCU的使用,其是GD32E103C8T6。官網地址:https://www.gigadevice.com/zh-hans/

​ RT-Thread 是國內完全自主開發的開源的實時作業系統,被廣泛應用於能源、車載、醫療、消費電子等多個行業,成為國人自主開發、國內最成熟穩定和裝機量最大的開源 RTOS。官網地址: https://www.rt-thread.org/index.html

GD32E103C8T6簡介

​ 該晶片是一款基於Cortex-M4開發的32bit處理器,最高主頻可達到120M,大大提高了程式的執行的速度,同時晶片整合了許多通訊介面和外設:GPIO、ADC、PWM、USART、I2C等。硬體引腳相容STM32F103C8T6,可方便從硬體上直接替換,無須修改硬體電路。GD32E103C8T6具有可觀的內部儲存空間,Flash:64KB,RAM:20KB

準備工作

  • 硬體準備

    市面上基於GD32系列晶片的開發板很少,此處,由於硬體介面相容STM32F103C8T6,所以我買了一塊基於ST的開發板,直接將原來的ST晶片替換成GD32晶片。

    燒寫工具使用ST-Link。

  • 軟體準備

    1、Keil整合開發環境

    2、GD32E10x標準韌體庫和keil支援包,下載地址:http://www.gd32mcu.com/cn/download/7?kw=GD32E1,檔案分別對應GD32E10x Firmware Library和GD32E10x_AddOn_V1.1.0.rar。

  • Keil開發準備工作

    1、Keil匯入GD32E10x軟體支援包,操作按照如下圖序號操作,在彈出檔案選擇框中選擇GigaDevice.GD32E10x_DFP.1.1.0.pack包進行安裝,該包存在下載GD32E10x_AddOn_V1.1.0.rar壓縮包中。

    2、Keil下載RT-Thread核心,安裝選擇如下圖所示。此處選擇安裝最新版本3.1.1。

    完成上述準備工作,則可進行接下來的開發了。

開發工作

  • 建立工程

    依次選擇,選單欄->Project->New uVersion Project->GigaDevice->GD32E103->GD32E103C8;接著在Manage Run-Time Environment視窗中選擇系統核心RTOS->kernel。在建立的工程目錄下新建以下資料夾:

    User、Drivers、Out。

  • 載入GD標準韌體庫

    將之前下載的標準韌體庫GD32E10x Firmware Library的解壓檔案放到Drivers目錄下,該庫中包含外部裝置庫,啟動彙編程式碼、第三方庫以及示例工程程式碼。將GD32E10x_Firmware_Library\Template目錄下的全部c檔案和h檔案複製到User資料夾下(main,systick相關檔案除外)。

  • 完善工程

    右擊Keil工程顯示欄中的工程選擇Manage Project Items,可在管理中修改工程名稱,新加組,以及新增組檔案。修改完成之後,顯示如下圖所示。

    在Drivers中新增Drivers\GD32E10x_Firmware_Library\Firmware\GD32E10x_standard_peripheral\Source下的所有C檔案和Drivers\GD32E10x_Firmware_Library\Firmware\CMSIS\GD\GD32E10x\Source\system_gd32e10x.c檔案。

    在User中新增User目錄下的所有C檔案。

    在Startup中新增Drivers\GD32E10x_Firmware_Library\Firmware\CMSIS\GD\GD32E10x\Source\ARM\startup_gd32e10x.s

    右擊Keil工程顯示欄中的工程選擇Optins for Target,在Output選項卡中點選Select Folder for Objects...按鈕選擇將編譯目標儲存到Out資料夾中,並選擇Create HEX File。在Listing選項卡中點選Select Folder for Listings...按鈕選擇將編譯中間生成的檔案儲存到Out資料夾中。

    C/C++選項卡Define欄定義以下巨集USE_STDPERIPH_DRIVER,GD32E10X,GD32E103V_EVAL,Include Paths中包含所有工程用到的H檔案所屬目錄或者資料夾。

    Debug選項卡中選擇ST-Link Debugger

  • 定製RT-Thread

​ 因RT-Thread系統核心已經實現了針對Cortex-M3和Cortex-M4 處理器的移植,只需要簡單修改程式碼即可使用。刪除gd32e10x_it.c檔案中PendSV_HandlerSysTick_Handler函式,因為RT-Thread重新定義了這兩個中斷函式。在此點亮LED燈的應用中,選擇在空閒程式中的鉤子函式中更新看門狗重灌載計數器(喂狗操作),所以在rtconfig.h#define RT_USING_IDLE_HOOK字串前面的註釋符號去掉,使得空閒鉤子使能。該應用中選擇開啟動態分配記憶體,所以在rtconfig.h#define RT_USING_HEAP去掉,開啟該功能。

  • 編寫應用

    該專案的應用程式碼全部放在了User資料夾中,詳細程式碼工程下載地址:

    https://gitee.com/awesomeoy/gd32-e103-c8-t6_-demo

  • 燒寫韌體執行

    編譯完成即可通過ST-link工具將程式碼燒寫至晶片執行。

總結

GD系列晶片很多硬體上是完全相容STM系列的,從硬體上更換完全不需要重新調整電路板佈線。如果將產品完整的從STM晶片移植到GD只需要調整軟體底層程式碼,而GD也提供標準庫,該庫在一定程度上可以加快移植。
該測試專案使用的是國產MCU和國產實時嵌入式作業系統,在很大程度上實現了完全國產化(MCU核心使用的ARM的IP)。衷心希望國內很多核心方面的技術早日突破國外的封鎖,甚至優於國外!

注意:關於GD晶片韌體庫和軟體支援下載地址:http://www.gd32mcu.com/cn/download/6?kw=GD32E1

相關文章