转基于GD32微控制器和RT-Thread实时操作

[复制链接]
5119|64
 楼主| lxs0026 发表于 2018-10-17 21:07 来自手机 | 显示全部楼层 |阅读模式
本文基于GD32微控制器和RT-Thread实时操作系统,构建了一种软硬件自主可控的嵌入式实时控制系统。研究了RT-Thread操作系统在GD32芯片开发板上的移植方法和驱动程序改写,并编写多任务应用程序测试了系统的运行稳定可靠。为嵌入式控制系统的发展提供了一种技术实现途径。
 楼主| lxs0026 发表于 2018-10-17 21:08 来自手机 | 显示全部楼层
引 言 由微控制器和实时操作系统共同构成的嵌入式实时控制系统在工业生产、交通运输、能源供给、国防装备等众多领域被广泛使用,是实现自动化技术的核心中枢。目前,国内所采用的嵌入式实时控制系统大多基于国外的微控制器芯片和软件产品,在“棱镜门”和“Stuxnet病毒”事件后关键领域所采用的嵌入式系统安全问题已被国内用户所重视,发展自主可控、安全可靠的嵌入式实时控制系统已成为必然趋势。
 楼主| lxs0026 发表于 2018-10-17 21:08 来自手机 | 显示全部楼层
伴随微控制器芯片和实时操作系统软件的不断发展和日趋成熟,基于国产软、硬件产品构建自主可控的嵌入式实时控制系统已经具备实现条件。本文采用具有ARM Cortex-M3内核的微控制器GD32F207芯片和RT-Thread实时操作系统建立了一套完全国产化的嵌入式实时控制系统,为国产自主可控嵌入式实时控制系统的建立及应用进行了技术经验总结和有益探索。
 楼主| lxs0026 发表于 2018-10-17 21:08 来自手机 | 显示全部楼层
01 嵌入式实时控制系统的构成 嵌入式系统与通用计算机系统在体系结构上具有相似性,都是由主控制器芯片和外围功能芯片构成硬件电路基础,再由可提供底层硬件操作功能的软件作为操作系统,用户最终通过操作系统对硬件进行访问和控制;嵌入式系统通常针对某个特定控制任务设计,因而具有实时处理能力、可靠性的要求,通用计算机的处理适用范围广,因此更注重兼容性而实时处理能力较弱。
 楼主| lxs0026 发表于 2018-10-17 21:09 来自手机 | 显示全部楼层
1.1 GD32F207微控制器与开发板 GD32F2系列微控制器芯片为基于ARM Cortex-M3内核架构设计的产品,本文中采用的GD32F207ZET6芯片主频最高可达120MHz,具有128KB的SRAM和512KB的Flash存储容量,并且提供UART、ADC、以太网和LCD控制器等众多外设功能接口,可以很大程度减少所需的外围功能电路配置。
 楼主| lxs0026 发表于 2018-10-17 21:09 来自手机 | 显示全部楼层
Colibri-F207ZE开发板是基于该芯片设计的一款“口袋实验室”类型产品,如图1所示,在板子上有与Arduino平台引脚布局兼容的引出IO接口之外,还包括TFT显示屏接口、2个用户按键、3个LED指示灯、1个USB串口和板载GDLINK调试器功能。本文中将以此开发板作为硬件平台构建嵌入式控制系统。
 楼主| lxs0026 发表于 2018-10-17 21:09 来自手机 | 显示全部楼层
图1 Colibri-F207ZE开发板
 楼主| lxs0026 发表于 2018-10-17 21:10 来自手机 | 显示全部楼层
图2 RT-Thread操作系统层次结构
 楼主| lxs0026 发表于 2018-10-17 21:10 来自手机 | 显示全部楼层
1.2 RT-Thread实时操作系统 RT-Thread嵌入式实时操作系统的开发始于2006年,并且遵循GPLv2+的版权许可协议。在经过多年的能源、仪表、车辆等行业广泛使用后,RT-Thread已经被验证是一款稳定、可靠的嵌入式实时操作系统。从文献[6]中对RT-Thread与国际主流嵌入式实时操作系统进行的比较中,也可看出其具有优越的性能。
 楼主| lxs0026 发表于 2018-10-17 21:10 来自手机 | 显示全部楼层
RT-Thread系统的结构层次框图如图2所示。
 楼主| lxs0026 发表于 2018-10-17 21:11 来自手机 | 显示全部楼层
其中内核层(Kernel)是RT-Thread的关键部分涉及时钟管理、实时调度、任务切换等核心操作;
 楼主| lxs0026 发表于 2018-10-17 21:11 来自手机 | 显示全部楼层
组件层(Components)主要提供Shell交互、文件系统、协议栈等附加操作功能;在内核层与硬件之间是用于系统移植的软件接口部分(Porting),其实现了操作系统对于硬件的各种具体操作功能。
 楼主| lxs0026 发表于 2018-10-17 21:11 来自手机 | 显示全部楼层
在本文中以最新发布的 RT-Thread 2.1.0版作为移植对象进行分析、代码修改并最终实现与Colibri-F207ZE开发板共同构成嵌入式实时控制系统。
 楼主| lxs0026 发表于 2018-10-17 21:12 来自手机 | 显示全部楼层
02 RT-Thread在GD32微控制器上的移植 RT-Thread操作系统已经在GitHub上做了代码托管,因此可直接从GitHub上下载获取到RT-Thread 2.1.0版的源代码压缩文件包[7]。
 楼主| lxs0026 发表于 2018-10-17 21:12 来自手机 | 显示全部楼层
本文中采用MDK 5.16a版本的ARM开发工具进行移植工作,并需要在MDK的Pack Installer中安装GD32F2系列芯片的DFP支持包。在移植工作中完成了RT-Thread操作系统的串口通信和LED灯驱动功能,可实现RT-Thread与主机之间的Shell交互操作和对测试程序中运行任务的直接观察。
 楼主| lxs0026 发表于 2018-10-17 21:13 来自手机 | 显示全部楼层
2.1 RT-Thread目录结构的转换 打开下载得到的RT-Thread源代码文件包可看到按代码功能分类的目录结构,各文件夹所包含的内容和用途分别为:
 楼主| lxs0026 发表于 2018-10-17 21:13 来自手机 | 显示全部楼层
bsp文件夹:板级支持包,包含针对特定型号微控制器板卡和外部设备的驱动程序。
 楼主| lxs0026 发表于 2018-10-17 21:13 来自手机 | 显示全部楼层
components:对应RT-Thread操作系统的组件层,包含RT-Thread核心功能之外的大部分附加操作功能以及硬件设备驱动模型。
 楼主| lxs0026 发表于 2018-10-17 21:13 来自手机 | 显示全部楼层
documentation:RT-Thread编程风格说明,对开发人员和用户掌握RT-Thread提供指引。
 楼主| lxs0026 发表于 2018-10-17 21:14 来自手机 | 显示全部楼层
examples:针对RT-Thread操作系统的应用和测试程序示例。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

143

主题

1448

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部
0