【RT-Thread作品秀】AFDX端系统实现与时间调度算法时间
作者:shenkh
概述
新一代航空电子系统随着飞行条件复杂和对安全飞行、舒适旅行等要求,数据传输已由传统的音频通信扩大为图像、多媒体、确定性控制信号等多数据流业务航空电子全双工交换以太网(AFDX)在此多元化应用背景下应用而生。基于IEEE 802.3标准,结合航空电子应用背景下对协议MAC部分进行适应性修改,使其成为新的具有高速和确定性的航空以太网数据标准网络。
ADFX协议主要包括端系统、交换机、应用系统。本次大赛主要实现端系统和交换机的通信、以及交换机的基于时间的同步算法。
开发环境
RT-Thread版本:4.03
开发工具及版本:RT Thread Stdio最新版本,MDK5.25
RT-Thread使用情况概述
ART-Pi开发板作为交换机,使用的RT-Thread内核未作修改,组件部分使用了finsh、SAL、LWIP、DFS、串口、Pin。
其中finsh和串口用于调试,LWIP作为AFDX协议层,SAL用于实现AFDX数据发送和接受。
硬件框架
硬件使用的是ART-PI开发板。
软件框架说明
软件模块说明
软件实现的关键点在于
1:AFDX协议内容部分实现, AFDX应用数据包括虚电路符和交换数据;虚电路控制模块VLcblk则包括基本控制信息,地址端口映射信息、配置信息等。
2:时间调度:端系统和交换机异步上电,各自都采用高精度的时钟用于周期性计数0~24ms,交换机在读取本地时间后发送给端系统,端系统在接收到时间后本地同步,且在下次时间计数到来时,发送本地时间帧给交换机,交换机将收到的时间帧和本地做对比,只当时间计数保持一致后,才开始数据交换。
演示效果
同步失败时,一直尝试同步。
同步成功后打印接收的端系统数据
比赛感悟
本次比赛最大的收获就是熟悉和实操了RTThread操作系统。第一次接触到RTThread操作系统时,就被其配置的简单所惊艳。menuconfig的配置方式更是将需要的外设、内核等内容图形化显示出来,方便了开发者的使用,不需要像其它RTOS那样去代码里手动改代码。不经感叹,国产操作系统也能做到很出色的。
对于个人而言,本次比赛最大的收获就是加深了对LWIP协议和SAL的理解。纸上得来终觉浅,绝知此事要躬行,以往看协议栈的书籍时,过于注重理论的理解,实际对于开发者而言,真正的实操是非常重要的。
最后感谢大赛组织方给了我们这次机会,也祝RTThread团队将这款操作系统发挥更大的光和热。