在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            博客專欄

            EEPW首頁 > 博客 > 串口DMA跑數(shù)據(jù)接收壓力測試的問題及其解決辦法

            串口DMA跑數(shù)據(jù)接收壓力測試的問題及其解決辦法

            發(fā)布人:dianlaotie 時(shí)間:2022-03-24 來源:工程師 發(fā)布文章

            做項(xiàng)目時(shí)使用官方串口DMA例程,在跑數(shù)據(jù)接收壓力測試時(shí)發(fā)現(xiàn)了一些細(xì)節(jié)問題,正是這些問題卡了我2天?,F(xiàn)在終于得到解決,在此立個(gè)貼做記錄。例程現(xiàn)象:

            1. 串口DMA在接收過程中,是不定長接收的。就算你上位只發(fā)送了1次,例程接收端總會(huì)給你2 - N段不定長數(shù)據(jù)給你。論壇上也有類似的帖子說是底層驅(qū)動(dòng)的某些特性。

            2. 串口DMA在接收線程中serial_thread_entry里面不可以做協(xié)議數(shù)據(jù)解析,盡管這是個(gè)獨(dú)立的線程,盡管你的數(shù)據(jù)解析函數(shù)沒有任何阻塞線程的動(dòng)作,都不行。你必須把接收到的數(shù)據(jù)通過其他途徑轉(zhuǎn)移到其他線程去處理(比如消息隊(duì)列)。否則會(huì)產(chǎn)生意想不到異常,現(xiàn)象是在運(yùn)行一段時(shí)間后tshell卡死,或者當(dāng)前接收線程直接在ps列表消失,但是依然可以接收數(shù)據(jù),無論哪樣最終都會(huì)讓tshell完全卡死加死機(jī),就連cmTraceback也救不了(不能百分百觸發(fā)異常播報(bào)),cmTraceback只會(huì)告訴你的shell串口在接收中斷處有問題,但是具體什么問題我看不出。個(gè)人懷疑是 rx_length = rt_device_read(msg.dev, 0, rx_buffer, msg.size); 這個(gè)函數(shù)有隱藏阻塞,如果在下文加上長延時(shí)的數(shù)據(jù)解析會(huì)導(dǎo)致跟tshell沖突。

            嘗試過,提高或降低tshell 或 syswork或其他線程優(yōu)先級(jí),增大串口或線程緩沖區(qū)。都不行。

            解決辦法:
            串口接收線程收到的數(shù)據(jù)只能再中轉(zhuǎn)到其他線程去做處理。 以下是我串口生產(chǎn)者,和消費(fèi)者代碼。

            小提示:
            消費(fèi)者線程的優(yōu)先級(jí)要高于生產(chǎn)者線程的優(yōu)先級(jí)(消息隊(duì)列應(yīng)用),否則會(huì)出現(xiàn)數(shù)據(jù)覆蓋的現(xiàn)象。比如,高優(yōu)先級(jí)生產(chǎn)者隊(duì)列入了3次數(shù)據(jù),低優(yōu)先級(jí)消費(fèi)者線程出隊(duì)列只能取到最后一條數(shù)據(jù)。這個(gè)我也很納悶。我覺得可能跟線程搶占有關(guān)或者優(yōu)先級(jí)翻轉(zhuǎn)之類的現(xiàn)象,解決辦法也許把消費(fèi)者和生產(chǎn)者加上互斥鎖后應(yīng)該就能解決,但是這樣的話,因?yàn)楸绘i了,生產(chǎn)者線程有可能不能及時(shí)接受到外來數(shù)據(jù)導(dǎo)致丟包。


            *博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。



            關(guān)鍵詞: 串口 DMA

            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉