91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

3天內不再提示

關于GD32構建軟硬件自主可控的嵌入式實時控制系統(tǒng)的介紹和應用

GD32MCU ? 來源:djl ? 作者:呂華溢 ? 2019-10-22 09:50 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本文基于GD32微控制器RT-Thread實時操作系統(tǒng),構建了一種軟硬件自主可控的嵌入式實時控制系統(tǒng)。研究了RT-Thread操作系統(tǒng)在GD32芯片開發(fā)板上的移植方法和驅動程序改寫,并編寫多任務應用程序測試了系統(tǒng)的運行穩(wěn)定可靠。為嵌入式控制系統(tǒng)的發(fā)展提供了一種技術實現(xiàn)途徑。

引 言

由微控制器和實時操作系統(tǒng)共同構成的嵌入式實時控制系統(tǒng)在工業(yè)生產、交通運輸、能源供給、國防裝備等眾多領域被廣泛使用,是實現(xiàn)自動化技術的核心中樞。目前,國內所采用的嵌入式實時控制系統(tǒng)大多基于國外的微控制器芯片和軟件產品,在“棱鏡門”和“Stuxnet病毒”事件后關鍵領域所采用的嵌入式系統(tǒng)安全問題已被國內用戶所重視,發(fā)展自主可控、安全可靠的嵌入式實時控制系統(tǒng)已成為必然趨勢。

伴隨微控制器芯片和實時操作系統(tǒng)軟件的不斷發(fā)展和日趨成熟,基于國產軟、硬件產品構建自主可控的嵌入式實時控制系統(tǒng)已經具備實現(xiàn)條件。本文采用具有ARM Cortex-M3內核的微控制器GD32F207芯片和RT-Thread實時操作系統(tǒng)建立了一套完全國產化的嵌入式實時控制系統(tǒng),為國產自主可控嵌入式實時控制系統(tǒng)的建立及應用進行了技術經驗總結和有益探索。

01

嵌入式實時控制系統(tǒng)的構成

嵌入式系統(tǒng)與通用計算機系統(tǒng)在體系結構上具有相似性,都是由主控制器芯片和外圍功能芯片構成硬件電路基礎,再由可提供底層硬件操作功能的軟件作為操作系統(tǒng),用戶最終通過操作系統(tǒng)對硬件進行訪問和控制;嵌入式系統(tǒng)通常針對某個特定控制任務設計,因而具有實時處理能力、可靠性的要求,通用計算機的處理適用范圍廣,因此更注重兼容性而實時處理能力較弱。

1.1 GD32F207微控制器與開發(fā)板

GD32F2系列微控制器芯片為基于ARM Cortex-M3內核架構設計的產品,本文中采用的GD32F207ZET6芯片主頻最高可達120MHz,具有128KB的SRAM和512KB的Flash存儲容量,并且提供UARTADC以太網和LCD控制器等眾多外設功能接口,可以很大程度減少所需的外圍功能電路配置。Colibri-F207ZE開發(fā)板是基于該芯片設計的一款“口袋實驗室”類型產品,如圖1所示,在板子上有與Arduino平臺引腳布局兼容的引出IO接口之外,還包括TFT顯示屏接口、2個用戶按鍵、3個LED指示燈、1個USB串口和板載GDLINK調試器功能。本文中將以此開發(fā)板作為硬件平臺構建嵌入式控制系統(tǒng)。

關于GD32構建軟硬件自主可控的嵌入式實時控制系統(tǒng)的介紹和應用

圖1 Colibri-F207ZE開發(fā)板

關于GD32構建軟硬件自主可控的嵌入式實時控制系統(tǒng)的介紹和應用

圖2 RT-Thread操作系統(tǒng)層次結構

1.2 RT-Thread實時操作系統(tǒng)

RT-Thread嵌入式實時操作系統(tǒng)的開發(fā)始于2006年,并且遵循GPLv2+的版權許可協(xié)議。在經過多年的能源、儀表、車輛等行業(yè)廣泛使用后,RT-Thread已經被驗證是一款穩(wěn)定、可靠的嵌入式實時操作系統(tǒng)。從文獻[6]中對RT-Thread與國際主流嵌入式實時操作系統(tǒng)進行的比較中,也可看出其具有優(yōu)越的性能。RT-Thread系統(tǒng)的結構層次框圖如圖2所示,其中內核層(Kernel)是RT-Thread的關鍵部分涉及時鐘管理、實時調度、任務切換等核心操作;組件層(Components)主要提供Shell交互、文件系統(tǒng)、協(xié)議棧等附加操作功能;在內核層與硬件之間是用于系統(tǒng)移植的軟件接口部分(Porting),其實現(xiàn)了操作系統(tǒng)對于硬件的各種具體操作功能。在本文中以最新發(fā)布的 RT-Thread 2.1.0版作為移植對象進行分析、代碼修改并最終實現(xiàn)與Colibri-F207ZE開發(fā)板共同構成嵌入式實時控制系統(tǒng)。

02

RT-Thread在GD32微控制器上的移植

RT-Thread操作系統(tǒng)已經在GitHub上做了代碼托管,因此可直接從GitHub上下載獲取到RT-Thread 2.1.0版的源代碼壓縮文件包[7]。本文中采用MDK 5.16a版本的ARM開發(fā)工具進行移植工作,并需要在MDK的Pack Installer中安裝GD32F2系列芯片的DFP支持包。在移植工作中完成了RT-Thread操作系統(tǒng)的串口通信LED燈驅動功能,可實現(xiàn)RT-Thread與主機之間的Shell交互操作和對測試程序中運行任務的直接觀察。

2.1 RT-Thread目錄結構的轉換

打開下載得到的RT-Thread源代碼文件包可看到按代碼功能分類的目錄結構,各文件夾所包含的內容和用途分別為:

bsp文件夾:板級支持包,包含針對特定型號微控制器板卡和外部設備的驅動程序。

components:對應RT-Thread操作系統(tǒng)的組件層,包含RT-Thread核心功能之外的大部分附加操作功能以及硬件設備驅動模型。

documentation:RT-Thread編程風格說明,對開發(fā)人員和用戶掌握RT-Thread提供指引。

examples:針對RT-Thread操作系統(tǒng)的應用和測試程序示例。

include:RT-Thread操作系統(tǒng)使用的頭文件,可供外部應用程序調用。

libcpu:CPU支持包,包含對各種常見CPU的底層驅動程序,大部分為匯編語言開發(fā)。

src:對應RT-Thread操作系統(tǒng)的內核層,包含RT-Thread實時調度、時鐘管理、內存分配、線程管理等全部核心功能。

tools:Scons構建腳本文件,包含用于不同開發(fā)工具的各種腳本執(zhí)行文件。

根據RT-Thread源代碼文件包中各個文件夾的用途,結合GD32芯片所提供的外設固件庫、CMSIS配置文件和Colibri-F207ZE開發(fā)板的板級支持包構建基于GD32F207芯片和RT-Thread操作系統(tǒng)的目錄結構,如圖3所示。其中App文件夾中包括RT-Thread的啟動文件startup.c和用戶開發(fā)的應用程序;GD32F207ZET6文件夾中包括硬件相關的兩個子文件夾,Colibri_BSP中是開發(fā)板的外設驅動程序,GD32F20x_StdPeriph_Driver中是GD32芯片所提供的外設固件庫,芯片驅動、配置和中斷處理文件;Obj文件夾中為MDK所建立的工程文件和存放編譯后得到的axf文件;RT-Thread210文件夾中包含RT-Thread操作系統(tǒng)的各軟件模塊,其為直接從源代碼文件包中相關內容復制而來。

關于GD32構建軟硬件自主可控的嵌入式實時控制系統(tǒng)的介紹和應用

圖3 基于GD32芯片構建的RT-Thread系統(tǒng)目錄結構

2.2 項目工程的建立與驅動程序改寫

在完成上述目錄結構的構建后,需要使用MDK開發(fā)工具將RT-Thread源代碼和GD32芯片的相關文件有機結合起來,實現(xiàn)RT-Thread操作系統(tǒng)在Colibri-F207ZE開發(fā)板上的移植工作。在MDK工具內部各個文件按照邏輯關系進行分組管理,這里以GD32開頭的組和嵌入式系統(tǒng)硬件相關,以RT開頭的組和操作系統(tǒng)軟件相關,如圖4所示。這種分組結構可有效實現(xiàn)軟硬件隔離,便于日后硬件部分或軟件部分代碼的升級替換工作。

2.2.1 軟硬件配置與代碼修改

在RT-Thread和GD32的配置中采用宏定義方式實現(xiàn)對所需軟件功能模塊的條件編譯和芯片性能參數設置,以達到對嵌入式系統(tǒng)軟、硬件裁剪和配置的目的。因此,在移植過程中需要對這些宏定義進行有選擇的設置。

修改system_GD32f20x.c文件,該文件中主要實現(xiàn)GD32的系統(tǒng)時鐘和AHB、APB總線上掛接各部件的時鐘樹配置,本文中將系統(tǒng)時鐘設置為72MHz。

修改colibri_board.h文件,該文件主要用于設置GD32芯片內、外部RAM的容量,根據本文中所使用的GD32F207ZET6芯片,將內部RAM容量設置為128KB;開發(fā)板未擴展外部RAM,將對應的宏定義GD32_EXT_SRAM設置為0。

修改rtconfig.h文件,該文件主要用于RT-Thread操作系統(tǒng)的參數配置以及軟件功能模塊的裁剪。用戶可根據需要設置,保留的軟件功能模塊越多,則編譯后的HEX文件尺寸越大且需要的運行RAM越多。本文中將RT-Thread最大優(yōu)先級RT_THREAD_PRIORITY_MAX設置為16;每秒節(jié)拍數RT_TICK_PER_SECOND設置為100;啟用了控制臺和Shell交互功能RT_USING_CONSOLE和RT_USING_FINSH以方便應用程序調試。

關于GD32構建軟硬件自主可控的嵌入式實時控制系統(tǒng)的介紹和應用

圖4 對GD32芯片和RT-Thread系統(tǒng)文件的分組管理

2.2.2 設備驅動程序的改寫

編寫驅動程序是操作系統(tǒng)移植過程中的重要一步,其用于實現(xiàn)軟件對硬件的最終操作。在RT-Thread中驅動程序屬于Porting層采用了統(tǒng)一的設備驅動模型框架,可以被應用程序通過標準接口函數訪問和調用,在文獻[6,8,9]中對RT-Thread設備驅動框架的構成進行了說明。由于GD32F2系列微控制器與STM32微控制器在系統(tǒng)結構上具有相似性,因此在本文中通過對RT-Thread源代碼文件包中/bsp/stm32f10x/drivers子文件夾內驅動程序進行改寫的方法實現(xiàn)Colibri-F207ZE開發(fā)板上串口通信和LED燈的驅動程序。對于GD32芯片上其它功能接口的驅動程序,都可根據需求而參考此種方法進行改寫。

以實現(xiàn)串口通信功能的驅動程序改寫為例,應用程序通過I/O設備模塊中的標準接口函數和設備驅動程序中的函數二者之間映射關系實現(xiàn)對底層I/O設備控制,如圖5所示。其中標準接口函數不需修改,由RT_DeviceDrivers分組中的serial.c文件實現(xiàn);而串口驅動程序則由GD32_BSP分組中的colibri_board_usart.c文件實現(xiàn),需要對相應的功能函數和配置進行修改。改寫的內容主要包括替換片上外設訪問層頭文件、實現(xiàn)串口通信功能的芯片管腳定義、rt_hw_usart_init()函數中的串口參數設置和通過rt_hw_serial_register()函數將串口設備注冊到RT-Thread設備驅動框架中,即實現(xiàn)標準接口函數與串口設備之間的關聯(lián)。需要注意的是GD32與STM32兩種芯片在各自外設固件庫中提供的結構體定義和函數功能是類似的但是名稱不一致,需要在移植過程中進行修改,表1列出了串口驅動程序colibri_board_usart.c文件中需要修改的結構體和函數名稱。得益于Cortex內核遵循的CMSIS接口標準和RT-Thread所采用的設備驅動框架機制,對設備驅動程序只需做上述少量改寫即可完成不同芯片間的移植工作。

關于GD32構建軟硬件自主可控的嵌入式實時控制系統(tǒng)的介紹和應用

圖5 應用程序操作底層設備的接口函數映射

芯片 STM32 GD32 定義位置
結構體 USART_TypeDef USART_InitPara gd32f20x_usart.h
GPIO_InitTypeDef GPIO_InitPara gd32f20x_gpio.h
NVIC_InitTypeDef NVIC_InitPara gd32f20x_misc.h
函數 USART_Cmd USART_Enable gd32f20x_usart.h
USART_ITConfig USART_INT_Set
USART_GetITStatus USART_GetIntBitState
USART_ClearITPendingBit USART_ClearIntBitState
USART_GetFlagStatus USART_GetBitState
RCC_APB2PeriphClockCmd RCC_APB2PeriphClock_Enable gd32f20x_rcc.h

表1 串口驅動程序中需要修改的結構體和函數名稱

2.3 RT-Thread測試應用程序編寫

開發(fā)板在上電后GD32芯片復位,通過文件startup_gd32f20x_cl.s中復位地址處的加載指令調用RT-Thread系統(tǒng)main()函數(位于startup.c文件中),在完成開發(fā)板、RT-Thread系統(tǒng)內核、定時器、用戶任務和空閑任務等的初始化后,通過rt_system_scheduler_start()函數啟動RT-Thread調度器實現(xiàn)對各個用戶任務的實時調度。為驗證RT-Thread在Colibri-F207ZE開發(fā)板上的移植是否成功,使用rt_thread_init()函數建立兩個用戶任務分別控制兩個LED燈按照0.5秒和1秒的周期閃爍。

03

嵌入式實時控制系統(tǒng)的測試

在完成RT-Thread在Colibri-F207ZE開發(fā)板上的移植和測試程序編寫后,將經過MDK編譯得到的axf文件下載到開發(fā)板上運行。通過上位機的串口通信工具可以和RT-Thread提供的Shell進行交互操作,并使用相應指令觀察RT-Thread系統(tǒng)運行和RAM的使用情況,如圖6所示??梢钥吹焦灿?個任務在運行,其中LED_GREE和LED_RED是控制LED燈閃爍的用戶任務,tshell和tidle分別是系統(tǒng)的shell交互任務和空閑任務;在RT-Thread中注冊有一個設備,就是提供Shell功能的uart1串口。通過該測試程序,表明RT-Thread已經在Colibri-F207ZE開發(fā)板上穩(wěn)定運行,實現(xiàn)了預期的移植效果。

關于GD32構建軟硬件自主可控的嵌入式實時控制系統(tǒng)的介紹和應用

圖6 RT-Thread系統(tǒng)Shell交互界面

結 語

本文基于GD32微控制器和RT-Thread實時操作系統(tǒng)構建了一種嵌入式實時控制系統(tǒng),其具有軟硬件自主可控、安全可靠的特點為工業(yè)生產、國防裝備等軍民應用的關鍵領域提供了有效解決方案。通過本文的研究和探索,在自主可控嵌入式實時控制系統(tǒng)的構建方面積累了技術檢驗,為后期配套應用開發(fā)奠定了堅實基礎。

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

    關注

    48

    文章

    8381

    瀏覽量

    164614
  • 嵌入式系統(tǒng)

    關注

    41

    文章

    3747

    瀏覽量

    133644
  • 計算機
    +關注

    關注

    19

    文章

    7807

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    什么是嵌入式應用開發(fā)?

    概述 所謂的嵌入式應用開發(fā)就是在嵌入式操作系統(tǒng)下進行開發(fā)、軟硬件綜合開發(fā) ?嵌入式應用開發(fā)?是指在嵌入
    發(fā)表于 01-12 16:13

    嵌入式系統(tǒng)應用熱門的原因主要有幾個方面

    求其功能設計及實現(xiàn)上過于復雜,這樣一方面利于控制系統(tǒng)成本,同時也利于實現(xiàn)系統(tǒng)安全。4. 高實時性的系統(tǒng)軟件(OS)是嵌入式軟件的基本要求。而
    發(fā)表于 01-08 06:37

    2026年度《嵌入式系統(tǒng)軟硬件可靠性設計》公開課,助您提升專業(yè)能力!

    課程名稱:《嵌入式系統(tǒng)軟硬件可靠性設計》講師:武老師時間地點:深圳4月24-25日主辦單位:賽盛技術課程背景隨著嵌入式系統(tǒng)在工業(yè)
    的頭像 發(fā)表于 12-28 10:03 ?959次閱讀
    2026年度《<b class='flag-5'>嵌入式</b><b class='flag-5'>系統(tǒng)</b><b class='flag-5'>軟硬件</b>可靠性設計》公開課,助您提升專業(yè)能力!

    從小白到大牛:Linux嵌入式系統(tǒng)開發(fā)的完整指南

    是 **“在嵌入式硬件上運行 Linux 系統(tǒng)并開發(fā)應用”**,其本質是軟硬件協(xié)同的工程實踐。入門階段需完成三大核心任務:? 系統(tǒng)認知
    發(fā)表于 12-16 10:42

    C語言在嵌入式開發(fā)中的應用

    C 語言在汽車電子控制系統(tǒng)開發(fā)中的主導地位。 2、設備驅動程序 設備驅動程序是嵌入式系統(tǒng)中連接硬件和軟件的橋梁,它負責實現(xiàn)嵌入式
    發(fā)表于 11-21 08:09

    嵌入式系統(tǒng)的定義和應用領域

    。盡管有些嵌入式系統(tǒng)可能包含操作系統(tǒng),但大多數情況下,它們僅由一個程序來控制整個邏輯。 從更專業(yè)的角度來看,嵌入式
    發(fā)表于 11-17 06:49

    嵌入式開發(fā)的關鍵點介紹

    。 嵌入式開發(fā)的關鍵點: 1. 硬件限制: 嵌入式系統(tǒng)通常具有嚴格的硬件限制,例如處理器速度、內存和存儲容量等。因此,
    發(fā)表于 11-13 08:12

    嵌入式實時操作系統(tǒng)的特點

    實時嵌入式操作系統(tǒng)(Real-Time Embedded Operating System)是專門設計用于嵌入式系統(tǒng)
    發(fā)表于 11-13 06:30

    嵌入式需要掌握哪些核心技能?

    嵌入式需要掌握哪些核心技能? 若想通過學習嵌入式技術提升就業(yè)競爭力,需重點掌握C語言、嵌入式硬件架構、RTOS/Linux開發(fā)、通信協(xié)議四大核心技能,并結合行業(yè)需求積累項目經驗。
    發(fā)表于 10-21 16:25

    嵌入式和單片機,是同一個東西嗎?

    ,嵌入式系統(tǒng)的設計和實現(xiàn)需要考慮功耗、尺寸、成本和性能以外的其他因素,如可靠性、安全性和實時性。此外,嵌入式系統(tǒng)通常不具備頻繁升級
    發(fā)表于 07-09 10:20

    嵌入式單片機在電機控制系統(tǒng)中的應用

    長時間處于良好的工作狀態(tài),其穩(wěn)定性也得到了顯著的提升。嵌入式單片機在電機控制系統(tǒng)中的應用可以分為軟件應用和硬件應用,硬件提供基本的物理框架支撐,軟件提供基本的信息、數據處理渠道,也只有
    發(fā)表于 06-11 15:07

    100%器件全國產化認證:ZMC432HG系列EtherCAT運動控制器通過全國產化認證!

    正運動軟硬件全國產ZMC432HG助您構建軟硬件自主可控的解決方案
    的頭像 發(fā)表于 05-27 10:27 ?733次閱讀
    100%器件全國產化認證:ZMC432HG系列EtherCAT運動<b class='flag-5'>控制</b>器通過全國產化認證!

    【書籍評測活動NO.61】Yocto項目實戰(zhàn)教程:高效定制嵌入式Linux系統(tǒng)

    用的嵌入式 Linux 構建工具之一是 Buildroot。盡管 Buildroot 能在較短時間內提供簡單的嵌入式系統(tǒng),但它的局限性在于對復雜項目和頻繁變化的
    發(fā)表于 05-21 10:00

    嵌入式適合自學嗎?

    嵌入式適合自學嗎?其實并不建議大家自學嵌入式,主要有以下原因。 一)學習難度大 1)知識體系復雜:嵌入式系統(tǒng)是一個復雜的領域,涉及到計算機、電子、通信等多學科知識,需要學習者具備扎實的
    發(fā)表于 04-27 09:54

    為什么選擇嵌入式軟硬件方案公司?看完這篇我直接簽了九鼎創(chuàng)展?

    在智能家居、工業(yè)控制、汽車電子等領域,嵌入式系統(tǒng)已成為創(chuàng)新的核心驅動力。但許多企業(yè)發(fā)現(xiàn),自研嵌入式軟硬件看似省錢,實則暗藏陷阱——開發(fā)周期長
    的頭像 發(fā)表于 04-08 14:31 ?934次閱讀
    為什么選擇<b class='flag-5'>嵌入式</b><b class='flag-5'>軟硬件</b>方案公司?看完這篇我直接簽了九鼎創(chuàng)展?