本發(fā)明涉及國(guó)產(chǎn)控制器,具體涉及一種can報(bào)文處理方法、裝置、電子設(shè)備及存儲(chǔ)介質(zhì)。
背景技術(shù):
1、gw作為汽車整車電子電氣架構(gòu)中的核心部件,實(shí)現(xiàn)各網(wǎng)段內(nèi)總線上信息的共享,當(dāng)前汽車領(lǐng)域最廣泛的通信總線為can,網(wǎng)關(guān)控制器的can控制器數(shù)量及其接收/發(fā)送mb直接決定了網(wǎng)關(guān)的性能。
2、目前汽車行業(yè)內(nèi)主流的網(wǎng)關(guān)控制器主控芯片為英飛凌?aurixtm?tcxxx系列、nxps32k系列等,均為國(guó)外芯片,其集成的can內(nèi)核最多支持256個(gè)mb用于配置收發(fā)報(bào)文。國(guó)內(nèi)具有完全自主知識(shí)產(chǎn)權(quán)的適用于做汽車網(wǎng)關(guān)的芯片選擇性相對(duì)比較少,例如海威華芯hhd32f107vch,具有6路can控制器,但各can控制器內(nèi)部只有1組驗(yàn)收過(guò)濾器用于接收?qǐng)?bào)文和1個(gè)發(fā)送數(shù)據(jù)緩沖區(qū)用于發(fā)送報(bào)文。
3、基于國(guó)產(chǎn)芯片,工程實(shí)現(xiàn)中通過(guò)can中斷實(shí)現(xiàn)對(duì)接收?qǐng)?bào)文的解析、處理及路由轉(zhuǎn)發(fā)到目的網(wǎng)段。該技術(shù)方案在整車電氣架構(gòu)較為簡(jiǎn)單、通信報(bào)文信號(hào)量較少的情況下可以正常工作,采用500kbps通信速率,理想情況下接收完整報(bào)文為3.6幀/ms,當(dāng)系統(tǒng)任務(wù)增多或信號(hào)量增多情況下,容易出現(xiàn):1)丟幀,即來(lái)不及及時(shí)處理接收ram中緩存報(bào)文而導(dǎo)致被下一幀報(bào)文覆蓋;2)內(nèi)部報(bào)文優(yōu)先級(jí)反轉(zhuǎn),即低優(yōu)先級(jí)報(bào)文競(jìng)爭(zhēng)總線失敗占據(jù)txmb,導(dǎo)致高優(yōu)先級(jí)報(bào)文無(wú)法進(jìn)入txmb。因此,現(xiàn)有技術(shù)中存在對(duì)國(guó)產(chǎn)控制器的can報(bào)文處理容易丟幀和高優(yōu)先級(jí)報(bào)文不能及時(shí)發(fā)送的技術(shù)問(wèn)題。
技術(shù)實(shí)現(xiàn)思路
1、有鑒于此,有必要提供一種can報(bào)文處理方法、裝置、電子設(shè)備及存儲(chǔ)介質(zhì),用以解決現(xiàn)有技術(shù)中對(duì)國(guó)產(chǎn)控制器的can報(bào)文處理容易丟幀和高優(yōu)先級(jí)報(bào)文不能及時(shí)發(fā)送的技術(shù)問(wèn)題。
2、為了解決上述技術(shù)問(wèn)題,一方面,本發(fā)明提供了can報(bào)文處理方法,包括:
3、在控制器的驅(qū)動(dòng)層設(shè)置一接收環(huán)行緩沖區(qū)和發(fā)送緩沖區(qū),并對(duì)發(fā)送緩沖區(qū)進(jìn)行編號(hào),得到編號(hào)后的發(fā)送緩沖區(qū);
4、當(dāng)驅(qū)動(dòng)層接收到報(bào)文,將報(bào)文存儲(chǔ)到接收環(huán)行緩沖區(qū);
5、讀取環(huán)行緩沖區(qū)的報(bào)文,得到多個(gè)待發(fā)送報(bào)文,并將多個(gè)待發(fā)送報(bào)文存儲(chǔ)到編號(hào)后的發(fā)送緩沖區(qū),得到多個(gè)待發(fā)送報(bào)文對(duì)應(yīng)的編號(hào),基于多個(gè)待發(fā)送報(bào)文對(duì)應(yīng)的編號(hào)進(jìn)行計(jì)算,得到多個(gè)待發(fā)送報(bào)文的優(yōu)先級(jí),基于多個(gè)待發(fā)送報(bào)文的優(yōu)先級(jí),確定當(dāng)前待發(fā)送報(bào)文并發(fā)送。
6、在一種可能的實(shí)現(xiàn)方式中,所述將報(bào)文存儲(chǔ)到接收環(huán)行緩沖區(qū),包括:
7、基于環(huán)行鏈表設(shè)計(jì)算法將報(bào)文存儲(chǔ)到接收環(huán)行緩沖區(qū)。
8、在一種可能的實(shí)現(xiàn)方式中,所述方法,還包括:
9、在當(dāng)前待發(fā)送報(bào)文未成功發(fā)送時(shí),獲取當(dāng)前待發(fā)送報(bào)文的發(fā)送時(shí)間,將當(dāng)前待發(fā)送報(bào)文的發(fā)送時(shí)間與預(yù)設(shè)的時(shí)間閾值進(jìn)行匹配,在當(dāng)前待發(fā)送報(bào)文時(shí)間大于預(yù)設(shè)的時(shí)間閾值時(shí),將當(dāng)前待發(fā)送報(bào)文丟棄,并基于多個(gè)待發(fā)送報(bào)文的優(yōu)先級(jí),重新確定當(dāng)前待發(fā)送報(bào)文。
10、在一種可能的實(shí)現(xiàn)方式中,所述將當(dāng)前待發(fā)送報(bào)文丟棄,并基于多個(gè)待發(fā)送報(bào)文的優(yōu)先級(jí),重新確定當(dāng)前待發(fā)送報(bào)文,包括:
11、將當(dāng)前待發(fā)送報(bào)文丟棄,并對(duì)多個(gè)待發(fā)送報(bào)文的優(yōu)先級(jí)進(jìn)行更新操作,得到更新后的多個(gè)待發(fā)送報(bào)文的優(yōu)先級(jí),基于更新后的多個(gè)待發(fā)送報(bào)文的優(yōu)先級(jí)重新確定當(dāng)前待發(fā)送報(bào)文。
12、在一種可能的實(shí)現(xiàn)方式中,所述基于多個(gè)待發(fā)送報(bào)文對(duì)應(yīng)的編號(hào)進(jìn)行計(jì)算,得到待發(fā)送報(bào)文的優(yōu)先級(jí),包括:
13、基于多個(gè)待發(fā)送報(bào)文對(duì)應(yīng)的編號(hào),得到待發(fā)送報(bào)文對(duì)應(yīng)的編號(hào)表,基于待發(fā)送報(bào)文對(duì)應(yīng)的編號(hào)表進(jìn)行計(jì)算,得到待發(fā)送報(bào)文的優(yōu)先級(jí)。
14、在一種可能的實(shí)現(xiàn)方式中,所述基于待發(fā)送報(bào)文對(duì)應(yīng)的編號(hào)表進(jìn)行計(jì)算,得到待發(fā)送報(bào)文的優(yōu)先級(jí),包括:
15、基于優(yōu)先級(jí)查找算法對(duì)待發(fā)送報(bào)文對(duì)應(yīng)的編號(hào)表進(jìn)行計(jì)算,得到待發(fā)送報(bào)文的優(yōu)先級(jí)。
16、在一種可能的實(shí)現(xiàn)方式中,所述方法,還包括:
17、通過(guò)中斷回調(diào)函數(shù)發(fā)送當(dāng)前待發(fā)送報(bào)文。
18、另一方面,本發(fā)明還提供了一種can報(bào)文處理裝置,包括:
19、驅(qū)動(dòng)模塊,用于在控制器的驅(qū)動(dòng)層設(shè)置一接收環(huán)行緩沖區(qū)和發(fā)送緩沖區(qū),并對(duì)發(fā)送緩沖區(qū)進(jìn)行編號(hào),得到編號(hào)后的發(fā)送緩沖區(qū);
20、存儲(chǔ)模塊,用于當(dāng)驅(qū)動(dòng)層接收到報(bào)文,將所述報(bào)文存儲(chǔ)到接收環(huán)行緩沖區(qū);
21、讀取模塊,用于讀取環(huán)行緩沖區(qū)的報(bào)文,得到多個(gè)待發(fā)送報(bào)文,并將多個(gè)待發(fā)送報(bào)文存儲(chǔ)到編號(hào)后的發(fā)送緩沖區(qū),得到多個(gè)待發(fā)送報(bào)文對(duì)應(yīng)的編號(hào),基于多個(gè)待發(fā)送報(bào)文對(duì)應(yīng)的編號(hào)進(jìn)行計(jì)算,得到多個(gè)待發(fā)送報(bào)文的優(yōu)先級(jí),基于多個(gè)待發(fā)送報(bào)文的優(yōu)先級(jí),確定當(dāng)前待發(fā)送報(bào)文并發(fā)送。
22、另一方面,本發(fā)明還提供了一種電子設(shè)備,包括存儲(chǔ)器和處理器,其中,
23、所述存儲(chǔ)器,用于存儲(chǔ)程序;
24、所述處理器,與所述存儲(chǔ)器耦合,用于執(zhí)行所述存儲(chǔ)器中存儲(chǔ)的所述程序,以實(shí)現(xiàn)上述任意實(shí)現(xiàn)方式中所述can報(bào)文處理方法中的步驟。
25、另一方面,本發(fā)明還提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),用于存儲(chǔ)計(jì)算機(jī)可讀取的程序或指令,所述程序或指令被處理器執(zhí)行時(shí)能夠?qū)崿F(xiàn)上述任意實(shí)現(xiàn)方式中所述can報(bào)文處理方法中的步驟。
26、本發(fā)明的有益效果是:本發(fā)明提供的can報(bào)文處理方法,包括:在控制器的驅(qū)動(dòng)層設(shè)置一接收環(huán)行緩沖區(qū)和發(fā)送緩沖區(qū),并對(duì)發(fā)送緩沖區(qū)進(jìn)行編號(hào),得到編號(hào)后的發(fā)送緩沖區(qū);當(dāng)驅(qū)動(dòng)層接收到報(bào)文,將所述報(bào)文存儲(chǔ)到接收環(huán)行緩沖區(qū),這樣做的目的是為了通過(guò)環(huán)行緩沖區(qū)緩存報(bào)文,這樣可以避免報(bào)文接收被覆蓋;讀取環(huán)行緩沖區(qū)的報(bào)文,得到多個(gè)待發(fā)送報(bào)文,并將多個(gè)待發(fā)送報(bào)文存儲(chǔ)到編號(hào)后的發(fā)送緩沖區(qū),得到多個(gè)待發(fā)送報(bào)文對(duì)應(yīng)的編號(hào),基于多個(gè)待發(fā)送報(bào)文對(duì)應(yīng)的編號(hào)進(jìn)行計(jì)算,得到多個(gè)待發(fā)送報(bào)文的優(yōu)先級(jí),基于多個(gè)待發(fā)送報(bào)文的優(yōu)先級(jí),確定當(dāng)前待發(fā)送報(bào)文并發(fā)送,這樣做的目的是為了通過(guò)對(duì)多個(gè)待發(fā)送報(bào)文進(jìn)行編號(hào),并對(duì)編號(hào)后的多個(gè)待發(fā)送報(bào)文進(jìn)行計(jì)算優(yōu)先級(jí),得到最高優(yōu)先級(jí),并基于最高優(yōu)先級(jí)確定當(dāng)前待發(fā)送的報(bào)文,這樣做可以動(dòng)態(tài)調(diào)度can發(fā)生器發(fā)送頻率,使得高優(yōu)先級(jí)報(bào)文及時(shí)發(fā)送。
1.一種can報(bào)文處理方法,其特征在于,包括:
2.根據(jù)權(quán)利要求1所述的can報(bào)文處理方法,其特征在于,所述將報(bào)文存儲(chǔ)到接收環(huán)行緩沖區(qū),包括:
3.根據(jù)權(quán)利要求1所述的can報(bào)文處理方法,其特征在于,所述方法,還包括:
4.根據(jù)權(quán)利要求3所述的can報(bào)文處理方法,其特征在于,所述將當(dāng)前待發(fā)送報(bào)文丟棄,并基于多個(gè)待發(fā)送報(bào)文的優(yōu)先級(jí),重新確定當(dāng)前待發(fā)送報(bào)文,包括:
5.根據(jù)權(quán)利要求1所述的can報(bào)文處理方法,其特征在于,所述基于多個(gè)待發(fā)送報(bào)文對(duì)應(yīng)的編號(hào)進(jìn)行計(jì)算,得到待發(fā)送報(bào)文的優(yōu)先級(jí),包括:
6.根據(jù)權(quán)利要求5所述的can報(bào)文處理方法,其特征在于,所述基于待發(fā)送報(bào)文對(duì)應(yīng)的編號(hào)表進(jìn)行計(jì)算,得到待發(fā)送報(bào)文的優(yōu)先級(jí),包括:
7.根據(jù)權(quán)利要求1所述的can報(bào)文處理方法,其特征在于,所述方法,還包括:
8.一種can報(bào)文處理裝置,其特征在于,包括:
9.一種電子設(shè)備,其特征在于,包括存儲(chǔ)器和處理器,其中,
10.一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,用于存儲(chǔ)計(jì)算機(jī)可讀取的程序或指令,所述程序或指令被處理器執(zhí)行時(shí)能夠?qū)崿F(xiàn)上述權(quán)利要求1至7中任意一項(xiàng)所述的can報(bào)文處理方法中的步驟。