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

[复制链接]
楼主: lxs0026
手机看帖
扫描二维码
随时随地手机跟帖
lxs0026|  楼主 | 2018-10-23 11:53 | 显示全部楼层
对于GD32芯片上其它功能接口的驱动程序,都可根据需求而参考此种方法进行改写。

使用特权

评论回复
lxs0026|  楼主 | 2018-10-23 11:53 | 显示全部楼层
以实现串口通信功能的驱动程序改写为例,应用程序通过I/O设备模块中的标准接口函数和设备驱动程序中的函数二者之间映射关系实现对底层I/O设备控制,如图5所示。

使用特权

评论回复
lxs0026|  楼主 | 2018-10-23 11:54 | 显示全部楼层
其中标准接口函数不需修改,由RT_DeviceDrivers分组中的serial.c文件实现;而串口驱动程序则由GD32_BSP分组中的colibri_board_usart.c文件实现,需要对相应的功能函数和配置进行修改。

使用特权

评论回复
lxs0026|  楼主 | 2018-10-23 11:54 | 显示全部楼层
改写的内容主要包括替换片上外设访问层头文件、实现串口通信功能的芯片管脚定义、

使用特权

评论回复
lxs0026|  楼主 | 2018-10-23 11:54 | 显示全部楼层
rt_hw_usart_init()函数中的串口参数设置和通过rt_hw_serial_register()函数将串口设备注册到RT-Thread设备驱动框架中,即实现标准接口函数与串口设备之间的关联。

使用特权

评论回复
lxs0026|  楼主 | 2018-10-23 11:55 | 显示全部楼层
需要注意的是GD32与STM32两种芯片在各自外设固件库中提供的结构体定义和函数功能是类似的但是名称不一致,需要在移植过程中进行修改,表1列出了串口驱动程序colibri_board_usart.c文件中需要修改的结构体和函数名称。

使用特权

评论回复
lxs0026|  楼主 | 2018-10-23 11:55 | 显示全部楼层
得益于Cortex内核遵循的CMSIS接口标准和RT-Thread所采用的设备驱动框架机制,对设备驱动程序只需做上述少量改写即可完成不同芯片间的移植工作。

使用特权

评论回复
lxs0026|  楼主 | 2018-10-23 11:55 | 显示全部楼层
图5 应用程序操作底层设备的接口函数映射

使用特权

评论回复
lxs0026|  楼主 | 2018-10-23 11:56 | 显示全部楼层
表1 串口驱动程序中需要修改的结构体和函数名称

使用特权

评论回复
lxs0026|  楼主 | 2018-10-23 11:56 | 显示全部楼层
2.3 RT-Thread测试应用程序编写 开发板在上电后GD32芯片复位,通过文件startup_gd32f20x_cl.s中复位地址处的加载指令调用RT-Thread系统main()函数(位于startup.c文件中),在完成开发板、RT-Thread系统内核、定时器、用户任务和空闲任务等的初始化后,通过rt_system_scheduler_start()函数启动RT-Thread调度器实现对各个用户任务的实时调度。

使用特权

评论回复
lxs0026|  楼主 | 2018-10-23 11:56 | 显示全部楼层
为验证RT-Thread在Colibri-F207ZE开发板上的移植是否成功,使用rt_thread_init()函数建立两个用户任务分别控制两个LED灯按照0.5秒和1秒的周期闪烁。

使用特权

评论回复
lxs0026|  楼主 | 2018-10-23 11:56 | 显示全部楼层
嵌入式实时控制系统的测试 在完成RT-Thread在Colibri-F207ZE开发板上的移植和测试程序编写后,将经过MDK编译得到的axf文件下载到开发板上运行。

使用特权

评论回复
lxs0026|  楼主 | 2018-10-23 11:57 | 显示全部楼层
通过上位机的串口通信工具可以和RT-Thread提供的Shell进行交互操作,并使用相应指令观察RT-Thread系统运行和RAM的使用情况,如图6所示。

使用特权

评论回复
lxs0026|  楼主 | 2018-10-23 11:57 | 显示全部楼层
可以看到共有4个任务在运行,其中LED_GREE和LED_RED是控制LED灯闪烁的用户任务,tshell和tidle分别是系统的shell交互任务和空闲任务;在RT-Thread中注册有一个设备,就是提供Shell功能的uart1串口。

使用特权

评论回复
lxs0026|  楼主 | 2018-10-23 11:57 | 显示全部楼层
通过该测试程序,表明RT-Thread已经在Colibri-F207ZE开发板上稳定运行,实现了预期的移植效果。

使用特权

评论回复
lxs0026|  楼主 | 2018-10-23 11:58 | 显示全部楼层
图6 RT-Thread系统Shell交互界面

使用特权

评论回复
lxs0026|  楼主 | 2018-10-23 11:58 | 显示全部楼层
结 语 本文基于GD32微控制器和RT-Thread实时操作系统构建了一种嵌入式实时控制系统,其具有软硬件自主可控、安全可靠的特点为工业生产、国防装备等军民应用的关键领域提供了有效解决方案。

使用特权

评论回复
lxs0026|  楼主 | 2018-10-23 11:58 | 显示全部楼层
通过本文的研究和探索,在自主可控嵌入式实时控制系统的构建方面积累了技术检验,为后期配套应用开发奠定了坚实基础。

使用特权

评论回复
lxs0026|  楼主 | 2018-10-23 11:59 | 显示全部楼层
作者简介 吕华溢(工程师),主要从事力学传感器设计、智能化仪器及测控系统的研究工作;谢政(硕士研究生),研究方向为仪表测控系统设计、嵌入式系统开发。

使用特权

评论回复
lxs0026|  楼主 | 2018-10-23 11:59 | 显示全部楼层
作者简介 吕华溢(工程师),主要从事力学传感器设计、智能化仪器及测控系统的研究工作;谢政(硕士研究生),研究方向为仪表测控系统设计、嵌入式系统开发。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则