【工控研究】嵌入式系統(tǒng)中高實(shí)時(shí)性CAN通信方案對(duì)比研究
在嵌入式系統(tǒng)領(lǐng)域,控制器局域網(wǎng)絡(luò)(CAN)協(xié)議廣泛應(yīng)用于工業(yè)自動(dòng)化、汽車電子及其他需要高實(shí)時(shí)性的環(huán)境。傳統(tǒng)CAN通信方案通常依賴于Linux用戶態(tài)下的通用Socket CAN編程。這種方式的優(yōu)點(diǎn)在于其使用了標(biāo)準(zhǔn)的Socket API,易于理解和使用。然而,其缺點(diǎn)也是顯而易見(jiàn)的,尤其在需要嚴(yán)格實(shí)時(shí)性的應(yīng)用場(chǎng)合。
本文將分析傳統(tǒng)Socket CAN方案存在的局限性,并探討基于用戶態(tài)直接讀寫硬件寄存器的解決方案,以應(yīng)對(duì)嚴(yán)格實(shí)時(shí)性需求。
傳統(tǒng)Socket CAN方案
使用Socket CAN的主要問(wèn)題在于其實(shí)時(shí)性。Socket API調(diào)用依賴操作系統(tǒng)調(diào)度,頻繁的系統(tǒng)調(diào)用會(huì)增加內(nèi)核態(tài)與用戶態(tài)切換的資源開(kāi)銷,從而導(dǎo)致消息延遲。在高頻率數(shù)據(jù)交互場(chǎng)景中(如1ms周期通信),這種延遲可能影響系統(tǒng)穩(wěn)定性。例如,當(dāng)系統(tǒng)負(fù)載較高時(shí),消息傳遞的延遲與抖動(dòng)現(xiàn)象會(huì)更加顯著。因此,在對(duì)實(shí)時(shí)性要求嚴(yán)格的場(chǎng)景中,傳統(tǒng)Socket CAN方案可能無(wú)法滿足應(yīng)用需求。
望獲實(shí)時(shí)Linux系統(tǒng)方案:用戶態(tài)下直接讀寫硬件寄存器
為了提升Socket CAN方案的實(shí)時(shí)性,望獲實(shí)時(shí)Linux提出了一種優(yōu)化方法,允許用戶態(tài)程序直接與硬件交互。該方案通過(guò)繞過(guò)操作系統(tǒng)的中間層,使應(yīng)用程序能夠直接訪問(wèn)硬件寄存器,從而消除了系統(tǒng)調(diào)用帶來(lái)的延遲和資源開(kāi)銷。
在該方案下,開(kāi)發(fā)者可以在應(yīng)用程序中直接控制CAN接口,通過(guò)硬件寄存器完成數(shù)據(jù)傳輸。這種方式減少了數(shù)據(jù)傳輸?shù)难舆t,提升了交互的穩(wěn)定性,確保信息的快速與準(zhǔn)確傳遞。此外,該方案支持多種硬件平臺(tái)的適配,能夠靈活應(yīng)對(duì)不同應(yīng)用場(chǎng)景的需求變化。
測(cè)試環(huán)境
本次測(cè)試采用創(chuàng)龍3576板卡,通過(guò)連接CAN0和CAN1接口,驗(yàn)證兩種方案下的CAN通信性能。
傳統(tǒng)方案
測(cè)試工具:使用cansend和candump命令。
發(fā)送周期:設(shè)定為1毫秒,同時(shí)在施加hackbench壓力的條件下進(jìn)行測(cè)試,測(cè)試持續(xù)時(shí)間為1小時(shí)。
數(shù)據(jù)交互測(cè)試:記錄從發(fā)送到接收的最短時(shí)間、最長(zhǎng)時(shí)間以及最大抖動(dòng)值。
測(cè)試結(jié)果:
在hackbench壓力測(cè)試下,Socket CAN的測(cè)試結(jié)果如下:
最短時(shí)間:374微秒
最長(zhǎng)時(shí)間:1900000微秒
最大抖動(dòng):144059微秒
在無(wú)壓力測(cè)試條件下,結(jié)果如下:
最短時(shí)間:281微秒
最長(zhǎng)時(shí)間:993微秒
最大抖動(dòng):127微秒
望獲實(shí)時(shí)Linux優(yōu)化方案
測(cè)試方案:采用望獲實(shí)時(shí)Linux專用CAN程序,運(yùn)行在綁定的隔離核心上,并將中斷綁定至指定的CPU。
發(fā)送周期:設(shè)定為1毫秒,在hackbench壓力下進(jìn)行為期1小時(shí)的測(cè)試。
數(shù)據(jù)交互測(cè)試:記錄從發(fā)送到接收的最短時(shí)間、最長(zhǎng)時(shí)間以及最大抖動(dòng)值。
測(cè)試結(jié)果:
最短時(shí)間:128微秒
最長(zhǎng)時(shí)間:147微秒
最大抖動(dòng):12微秒
從測(cè)試結(jié)果來(lái)看,基于用戶態(tài)直接與硬件交互的CAN通信方案在實(shí)時(shí)性上顯著優(yōu)于傳統(tǒng)的Socket CAN方案。該方案通過(guò)繞過(guò)操作系統(tǒng)直接訪問(wèn)硬件寄存器,減少了上下文切換和資源開(kāi)銷,從而降低數(shù)據(jù)傳輸延遲。這種性能的提升對(duì)工業(yè)自動(dòng)化、汽車電子和機(jī)器人系統(tǒng)等需要快速響應(yīng)的應(yīng)用至關(guān)重要。這些領(lǐng)域要求系統(tǒng)在極短時(shí)間內(nèi)處理事件,以確保正常運(yùn)行和安全性。
該方案將數(shù)據(jù)交互控制權(quán)置于用戶態(tài)程序,減少了系統(tǒng)調(diào)用開(kāi)銷,提升了效率和系統(tǒng)可靠性。測(cè)試數(shù)據(jù)顯示,該方案在最短消息傳遞時(shí)間和最大抖動(dòng)等關(guān)鍵指標(biāo)上優(yōu)于傳統(tǒng)方案,適用于高性能需求場(chǎng)景。
該研究為更高效的CAN通信系統(tǒng)提供了新的視角與解決方案,推動(dòng)了嵌入式系統(tǒng)中CAN通信技術(shù)的發(fā)展,并為未來(lái)在其他領(lǐng)域的應(yīng)用創(chuàng)造了新的可能性。隨著行業(yè)對(duì)實(shí)時(shí)性能需求的提升,該方案有望在更多領(lǐng)域得到驗(yàn)證。
為了讓更多企業(yè)用戶親身體驗(yàn)望獲實(shí)時(shí)Linux帶來(lái)的卓越性能和實(shí)時(shí)性優(yōu)勢(shì),望獲實(shí)時(shí)Linux官網(wǎng)特別推出了限時(shí)免費(fèi)下載鏡像試用活動(dòng)。立即點(diǎn)擊下方鏈接https://www.onewos.com/,只需簡(jiǎn)單幾步操作,即可獲得望獲實(shí)時(shí)Linux V2正式版的軟件功能體驗(yàn)。

提交
【工控資訊】實(shí)時(shí)操作系統(tǒng)中功能安全的必要性與意義
【工業(yè)資訊】工業(yè)實(shí)時(shí)操作系統(tǒng)的特性與發(fā)展趨勢(shì)
【工控福利】限時(shí)免費(fèi)獲取望獲實(shí)時(shí)Linux正式版授權(quán)
【工控資訊】微秒級(jí)實(shí)時(shí)在無(wú)人機(jī)控制中的重要性
【工控咨詢】望獲實(shí)時(shí)linux系統(tǒng)在低空視頻傳輸上的應(yīng)用