【工控研究】嵌入式系统中高实时性CAN通信方案对比研究

北京国科环宇科技股份有限公司

2天前

在嵌入式系统领域,控制器局域网络(CAN)协议广泛应用于工业自动化、汽车电子及其他需要高实时性的环境。

在嵌入式系统领域,控制器局域网络(CAN)协议广泛应用于工业自动化、汽车电子及其他需要高实时性的环境。传统CAN通信方案通常依赖于Linux用户态下的通用Socket CAN编程。这种方式的优点在于其使用了标准的Socket API,易于理解和使用。然而,其缺点也是显而易见的,尤其在需要严格实时性的应用场合。

本文将分析传统Socket CAN方案存在的局限性,并探讨基于用户态直接读写硬件寄存器的解决方案,以应对严格实时性需求。

传统Socket CAN方案

使用Socket CAN的主要问题在于其实时性。Socket API调用依赖操作系统调度,频繁的系统调用会增加内核态与用户态切换的资源开销,从而导致消息延迟。在高频率数据交互场景中(如1ms周期通信),这种延迟可能影响系统稳定性。例如,当系统负载较高时,消息传递的延迟与抖动现象会更加显著。因此,在对实时性要求严格的场景中,传统Socket CAN方案可能无法满足应用需求。

望获实时Linux系统方案:用户态下直接读写硬件寄存器

为了提升Socket CAN方案的实时性,望获实时Linux提出了一种优化方法,允许用户态程序直接与硬件交互。该方案通过绕过操作系统的中间层,使应用程序能够直接访问硬件寄存器,从而消除了系统调用带来的延迟和资源开销。

在该方案下,开发者可以在应用程序中直接控制CAN接口,通过硬件寄存器完成数据传输。这种方式减少了数据传输的延迟,提升了交互的稳定性,确保信息的快速与准确传递。此外,该方案支持多种硬件平台的适配,能够灵活应对不同应用场景的需求变化。

测试环境

本次测试采用创龙3576板卡,通过连接CAN0和CAN1接口,验证两种方案CAN通信性能

传统方案

测试工具:使用cansend和candump命令。

发送周期:设定为1毫秒,同时在施加hackbench压力的条件下进行测试,测试持续时间为1小时。

数据交互测试:记录从发送到接收的最短时间、最长时间以及最大抖动值。

测试结果:

hackbench压力测试下,Socket CAN的测试结果如下:

最短时间:374微秒

最长时间:1900000

最大抖动:144059微秒

在无压力测试条件下,结果如下:

最短时间:281微秒

最长时间:993微秒

最大抖动:127微秒

望获实时Linux优化方案

测试方案:采用望获实时Linux专用CAN程序,运行在绑定的隔离核心上,并将中断绑定至指定的CPU。

发送周期:设定1毫秒,在hackbench压力下进行为期1小时的测试。

数据交互测试:记录从发送到接收的最短时间、最长时间以及最大抖动值。

1805041438064a44584f96d93ce43735(1)(1)(2).jpg

测试结果:

最短时间:128微秒

最长时间:147微秒

最大抖动:12微秒

从测试结果来看,基于用户态直接与硬件交互的CAN通信方案在实时性上显著优于传统的Socket CAN方案。该方案通过绕过操作系统直接访问硬件寄存器,减少了上下文切换和资源开销,从而降低数据传输延迟。这种性能提升对工业自动化、汽车电子和机器人系统等需要快速响应的应用至关重要。这些领域要求系统在极短时间内处理事件,以确保正常运行和安全性。

该方案将数据交互控制权置于用户态程序,减少了系统调用开销,提升了效率和系统可靠性。测试数据显示,该方案在最短消息传递时间和最大抖动等关键指标上优于传统方案,适用于高性能需求场景。

研究为更高效的CAN通信系统提供了新的视角与解决方案,推动了嵌入式系统中CAN通信技术的发展,并为未来在其他领域的应用创造了新的可能性。随着行业对实时性能需求的提升,该方案有望在更多领域得到验证。

为了让更多企业用户亲身体验望获实时Linux带来的卓越性能和实时性优势,望获实时Linux官网特别推出了限时免费下载镜像试用活动。立即点击下方链接https://www.onewos.com/,只需简单几步操作,即可获得望获实时Linux V2正式版的软件功能体验。

在嵌入式系统领域,控制器局域网络(CAN)协议广泛应用于工业自动化、汽车电子及其他需要高实时性的环境。

在嵌入式系统领域,控制器局域网络(CAN)协议广泛应用于工业自动化、汽车电子及其他需要高实时性的环境。传统CAN通信方案通常依赖于Linux用户态下的通用Socket CAN编程。这种方式的优点在于其使用了标准的Socket API,易于理解和使用。然而,其缺点也是显而易见的,尤其在需要严格实时性的应用场合。

本文将分析传统Socket CAN方案存在的局限性,并探讨基于用户态直接读写硬件寄存器的解决方案,以应对严格实时性需求。

传统Socket CAN方案

使用Socket CAN的主要问题在于其实时性。Socket API调用依赖操作系统调度,频繁的系统调用会增加内核态与用户态切换的资源开销,从而导致消息延迟。在高频率数据交互场景中(如1ms周期通信),这种延迟可能影响系统稳定性。例如,当系统负载较高时,消息传递的延迟与抖动现象会更加显著。因此,在对实时性要求严格的场景中,传统Socket CAN方案可能无法满足应用需求。

望获实时Linux系统方案:用户态下直接读写硬件寄存器

为了提升Socket CAN方案的实时性,望获实时Linux提出了一种优化方法,允许用户态程序直接与硬件交互。该方案通过绕过操作系统的中间层,使应用程序能够直接访问硬件寄存器,从而消除了系统调用带来的延迟和资源开销。

在该方案下,开发者可以在应用程序中直接控制CAN接口,通过硬件寄存器完成数据传输。这种方式减少了数据传输的延迟,提升了交互的稳定性,确保信息的快速与准确传递。此外,该方案支持多种硬件平台的适配,能够灵活应对不同应用场景的需求变化。

测试环境

本次测试采用创龙3576板卡,通过连接CAN0和CAN1接口,验证两种方案CAN通信性能

传统方案

测试工具:使用cansend和candump命令。

发送周期:设定为1毫秒,同时在施加hackbench压力的条件下进行测试,测试持续时间为1小时。

数据交互测试:记录从发送到接收的最短时间、最长时间以及最大抖动值。

测试结果:

hackbench压力测试下,Socket CAN的测试结果如下:

最短时间:374微秒

最长时间:1900000

最大抖动:144059微秒

在无压力测试条件下,结果如下:

最短时间:281微秒

最长时间:993微秒

最大抖动:127微秒

望获实时Linux优化方案

测试方案:采用望获实时Linux专用CAN程序,运行在绑定的隔离核心上,并将中断绑定至指定的CPU。

发送周期:设定1毫秒,在hackbench压力下进行为期1小时的测试。

数据交互测试:记录从发送到接收的最短时间、最长时间以及最大抖动值。

1805041438064a44584f96d93ce43735(1)(1)(2).jpg

测试结果:

最短时间:128微秒

最长时间:147微秒

最大抖动:12微秒

从测试结果来看,基于用户态直接与硬件交互的CAN通信方案在实时性上显著优于传统的Socket CAN方案。该方案通过绕过操作系统直接访问硬件寄存器,减少了上下文切换和资源开销,从而降低数据传输延迟。这种性能提升对工业自动化、汽车电子和机器人系统等需要快速响应的应用至关重要。这些领域要求系统在极短时间内处理事件,以确保正常运行和安全性。

该方案将数据交互控制权置于用户态程序,减少了系统调用开销,提升了效率和系统可靠性。测试数据显示,该方案在最短消息传递时间和最大抖动等关键指标上优于传统方案,适用于高性能需求场景。

研究为更高效的CAN通信系统提供了新的视角与解决方案,推动了嵌入式系统中CAN通信技术的发展,并为未来在其他领域的应用创造了新的可能性。随着行业对实时性能需求的提升,该方案有望在更多领域得到验证。

为了让更多企业用户亲身体验望获实时Linux带来的卓越性能和实时性优势,望获实时Linux官网特别推出了限时免费下载镜像试用活动。立即点击下方链接https://www.onewos.com/,只需简单几步操作,即可获得望获实时Linux V2正式版的软件功能体验。

展开
打开“财经头条”阅读更多精彩资讯
APP内打开