计算机技术论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

  • 欢迎访问 计算机技术论坛-电脑迷与初学者的家园!由于论坛管理严格,新注册会员可能遇到各种问题,无法解决的请发邮件 admin@jsjbbs.cn
查看: 1091|回复: 0

关于GD32构建软硬件自主可控的嵌入式实时控制系统的介绍和应用

[复制链接]
发表于 2021-4-8 04:58:23 | 显示全部楼层 |阅读模式
#111723#本文基于GD32微把持器和RT-Thread及时操纵体系,构建了一种软硬件自立可控的嵌入式及时把持体系。研讨了RT-Thread操纵体系在GD32芯片开辟板上的移植方式和驱动顺序改写,并编写多义务利用顺序测试了体系的运转稳固牢靠。为嵌入式把持体系的开展供给了一种技巧实现道路。
引 言
由微把持器和及时操纵体系独特形成的嵌入式及时把持体系在产业出产、交通运输、动力供应、国防设备等浩繁范畴被普遍应用,是实现主动化技巧的中心中枢。现在,海内所采取的嵌入式及时把持体系大多基于外洋的微把持器芯片和软件产物,在“棱镜门”和“Stuxnet病毒”变乱后要害范畴所采取的嵌入式体系保险成绩已被海内用户所器重,开展自立可控、保险牢靠的嵌入式及时把持体系已成为必定趋向。
随同微把持器芯片和及时操纵体系软件的一直开展和日益成熟,基于国产软、硬件产物构建自立可控的嵌入式及时把持体系曾经具有实现前提。本文彩器具有ARM Cortex-M3内核的微把持器GD32F207芯片和RT-Thread及时操纵体系树立了一套完整国产化的嵌入式及时把持体系,为国产自立可控嵌入式及时把持体系的树立及利用停止了技巧教训总结和有利摸索。
01
嵌入式及时把持体系的形成
嵌入式体系与通用盘算机体系在系统构造上存在类似性,都是由主把持器芯片和外围功效芯片形成硬件电路基本,再由可供给底层硬件操纵功效的软件作为操纵体系,用户终究通过操纵体系对硬件停止拜访和把持;嵌入式体系平日针对某个特定把持义务计划,因此存在及时处置才能、牢靠性的请求,通用盘算机的处置实用范畴广,因而更重视兼容性而及时处置才能较弱。
1.1 GD32F207微把持器与开辟板
GD32F2系列微把持器芯片为基于ARM Cortex-M3内核架构计划的产物,本文中采取的GD32F207ZET6芯片主频最高可达120MHz,存在128KB的SRAM和512KB的Flash存储容量,而且供给UART、ADC、以太网和LCD把持器等浩繁外设功效接口,能够很大水平增加所需的外围功效电路设置。Colibri-F207ZE开辟板是基于该芯片计划的一款“口袋试验室”范例产物,如图1所示,在板子上有与Arduino平台引脚规划兼容的引出IO接口以外,还包含TFT表现屏接口、2个用户按键、3个LED唆使灯、1个USB串口和板载GDLINK调试器功效。本文中将以此开辟板作为硬件平台构建嵌入式把持体系。

图1 Colibri-F207ZE开辟板

图2 RT-Thread操纵体系档次构造
1.2 RT-Thread及时操纵体系
RT-Thread嵌入式及时操纵体系的开辟始于2006年,而且遵守GPLv2+的版权允许协定。在经由多年的动力、仪表、车辆等行业普遍应用后,RT-Thread曾经被验证是一款稳固、牢靠的嵌入式及时操纵体系。从文献[6]中对RT-Thread与国际主流嵌入式及时操纵体系停止的比拟中,也可看出其存在优胜的机能。RT-Thread体系的构造档次框图如图2所示,此中内核层(Kernel)是RT-Thread的要害部份触及时钟治理、及时调理、义务切换等中心操纵;组件层(Components)重要供给Shell交互、文件体系、协定栈等附加操纵功效;在内核层与硬件之间是用于体系移植的软件接口部份(Porting),实在现了操纵体系对于硬件的种种详细操纵功效。在本文中以最新宣布的 RT-Thread 2.1.0版作为移植工具停止剖析、代码修正并终究实现与Colibri-F207ZE开辟板独特形成嵌入式及时把持体系。
02
RT-Thread在GD32微把持器上的移植
RT-Thread操纵体系曾经在GitHub上做了代码托管,因而可直接从GitHub高低载获得到RT-Thread 2.1.0版的源代码紧缩文件包[7]。本文中采取MDK 5.16a版本的ARM开辟东西停止移植任务,并须要在MDK的Pack Installer中装置GD32F2系列芯片的DFP支撑包。在移植任务中实现了RT-Thread操纵体系的串口通讯和LED灯驱动功效,可实现RT-Thread与主机之间的Shell交互操纵和对测试顺序中运转义务的直接视察。
2.1 RT-Thread目次构造的转换
翻开下载失掉的RT-Thread源代码文件包可看到按代码功效分类的目次构造,各文件夹所包括的内容和用处分辨为:
bsp文件夹:板级支撑包,包括针对特定型号微把持器板卡和外部装备的驱动顺序。
components:对应RT-Thread操纵体系的组件层,包括RT-Thread中心功效以外的大部份附加操纵功效以及硬件装备驱动模子。
documentation:RT-Thread编程作风阐明,对开辟职员和用户控制RT-Thread供给指引。
examples:针对RT-Thread操纵体系的利用和测试顺序示例。
include:RT-Thread操纵体系应用的头文件,可供外部利用顺序挪用。
libcpu:CPU支撑包,包括对种种罕见CPU的底层驱动顺序,大部份为汇编言语开辟。
src:对应RT-Thread操纵体系的内核层,包括RT-Thread及时调理、时钟治理、内存调配、线程治理等全体中心功效。
tools:Scons构建剧本文件,包括用于差别开辟东西的种种剧本履行文件。
依据RT-Thread源代码文件包中各个文件夹的用处,联合GD32芯片所供给的外设固件库、CMSIS设置文件和Colibri-F207ZE开辟板的板级支撑包构建基于GD32F207芯片和RT-Thread操纵体系的目次构造,如图3所示。此中App文件夹中包含RT-Thread的启动文件startup.c和用户开辟的利用顺序;GD32F207ZET6文件夹中包含硬件相干的两个子文件夹,Colibri_BSP中是开辟板的外设驱动顺序,GD32F20x_StdPeriph_Driver中是GD32芯片所供给的外设固件库,芯片驱动、设置和中止处置文件;Obj文件夹中为MDK所树立的工程文件和寄存编译后失掉的axf文件;RT-Thread210文件夹中包括RT-Thread操纵体系的各软件模块,其为直接从源代码文件包中相干内容复制而来。

图3 基于GD32芯片构建的RT-Thread体系目次构造
2.2 名目工程的树立与驱动顺序改写
在实现上述目次构造的构建后,须要应用MDK开辟东西将RT-Thread源代码和GD32芯片的相干文件无机联合起来,实现RT-Thread操纵体系在Colibri-F207ZE开辟板上的移植任务。在MDK东西外部各个文件依照逻辑关联停止分组治理,这里以GD32扫尾的组和嵌入式体系硬件相干,以RT扫尾的组和操纵体系软件相干,如图4所示。这类分组构造可无效实现软硬件断绝,便于往后硬件部份或软件部份代码的进级调换任务。
2.2.1 软硬件设置与代码修正
在RT-Thread和GD32的设置中采取宏界说方法实现对所需软件功效模块的前提编译和芯片机能参数设置,以到达对嵌入式体系软、硬件裁剪和设置的目标。因而,在移植进程中须要对这些宏界说停止有抉择的设置。
修正system_GD32f20x.c文件,该文件中重要实现GD32的体系时钟和AHB、APB总线上挂接各部件的时钟树设置,本文中将体系时钟设置为72MHz。
修正colibri_board.h文件,该文件重要用于设置GD32芯片内、外部RAM的容量,依据本文中所应用的GD32F207ZET6芯片,将外部RAM容量设置为128KB;开辟板未扩大外部RAM,将对应的宏界说GD32_EXT_SRAM设置为0。
修正rtconfig.h文件,该文件重要用于RT-Thread操纵体系的参数设置以及软件功效模块的裁剪。用户可依据须要设置,保存的软件功效模块越多,则编译后的HEX文件尺寸越大且须要的运转RAM越多。本文中将RT-Thread最大优先级RT_THREAD_PRIORITY_MAX设置为16;每秒节奏数RT_TICK_PER_SECOND设置为100;启用了把持台和Shell交互功效RT_USING_CONSOLE和RT_USING_FINSH以便利利用顺序调试。

图4 对GD32芯片和RT-Thread体系文件的分组治理
2.2.2 装备驱动顺序的改写
编写驱动顺序是操纵体系移植进程中的主要一步,其用于实现软件对硬件的终究操纵。在RT-Thread中驱动顺序属于Porting层采取了同一的装备驱动模子框架,能够被利用顺序通过尺度接口函数拜访和挪用,在文献[6,8,9]中对RT-Thread装备驱动框架的形成停止了阐明。因为GD32F2系列微把持器与STM32微把持器在体系构造上存在类似性,因而在本文中通过对RT-Thread源代码文件包中/bsp/stm32f10x/drivers子文件夹内驱动顺序停止改写的方式实现Colibri-F207ZE开辟板上串口通讯和LED灯的驱动顺序。对于GD32芯片上别的功效接口的驱动顺序,都可依据需要而参考此种方式停止改写。


图5 利用顺序操纵底层装备的接口函数映照
芯片STM32GD32界说地位构造体USART_TypeDefUSART_InitParagd32f20x_usart.hGPIO_InitTypeDefGPIO_InitParagd32f20x_gpio.hNVIC_InitTypeDefNVIC_InitParagd32f20x_misc.h函数USART_CmdUSART_Enablegd32f20x_usart.hUSART_ITConfigUSART_INT_SetUSART_GetITStatusUSART_GetIntBitStateUSART_ClearITPendingBitUSART_ClearIntBitStateUSART_GetFlagStatusUSART_GetBitStateRCC_APB2PeriphClockCmdRCC_APB2PeriphClock_Enablegd32f20x_rcc.h表1 串口驱动顺序中须要修正的构造体和函数称号
2.3 RT-Thread测试利用顺序编写
开辟板在上电后GD32芯片复位,通过文件startup_gd32f20x_cl.s中复位地点处的加载指令挪用RT-Thread体系main()函数(位于startup.c文件中),在实现开辟板、RT-Thread体系内核、准时器、用户义务和闲暇义务等的初始化后,通过rt_system_scheduler_start()函数启动RT-Thread调理器实现对各个用户义务的及时调理。为验证RT-Thread在Colibri-F207ZE开辟板上的移植能否胜利,应用rt_thread_init()函数树立两个用户义务分辨把持两个LED灯依照0.5秒和1秒的周期闪耀。
03
嵌入式及时把持体系的测试
在实现RT-Thread在Colibri-F207ZE开辟板上的移植和测试顺序编写后,将经由MDK编译失掉的axf文件下载到开辟板上运转。通过上位机的串口通讯东西能够和RT-Thread供给的Shell停止交互操纵,并应用响应指令视察RT-Thread体系运转和RAM的应用情形,如图6所示。能够看到共有4个义务在运转,此中LED_GREE和LED_RED是把持LED灯闪耀的用户义务,tshell和tidle分辨是体系的shell交互义务和闲暇义务;在RT-Thread中注册有一个装备,就是供给Shell功效的uart1串口。通过该测试顺序,标明RT-Thread曾经在Colibri-F207ZE开辟板上稳固运转,实现了预期的移植后果。

图6 RT-Thread体系Shell交互界面
结 语
本文基于GD32微把持器和RT-Thread及时操纵体系构建了一种嵌入式及时把持体系,其存在软硬件自立可控、保险牢靠的特色为产业出产、国防设备等军平易近利用的要害范畴供给了无效处理计划。通过本文的研讨和摸索,在自立可控嵌入式及时把持体系的构建方面积聚了技巧测验,为前期配套利用开辟奠基了坚固基本。
更多内容阅读推荐:热水器显f4怎么办
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

无图版|手机版|计算机技术论坛 JSJBBS.CN @ 2008-2024 ( 鲁ICP备17021708号 )

技术支持 : 北京康盛新创科技有限责任公司

快速回复 返回顶部 返回列表