CH32V208以太網(wǎng)+rtthread跑飛進(jìn)hardfault

以太網(wǎng)的主循環(huán)需要不斷輪詢放在一個線程里會大量占用cpu,所以加了一個信號量,在eth中斷里釋放信號量,但是這樣之后只要不斷發(fā)送或者接收數(shù)據(jù)過一會兒就會跑飛,可能幾分鐘可能幾十分鐘,打印了mepc也找不到對應(yīng)的函數(shù),代碼是這樣:

image.png

image.png

3e5530930f18fc42118bbe052209fa5.png

aa9aadf98aa7d86239c66abb39fa97a.png

56af7c1c101f41975d1fc48b5f2c2c4.png

找了很久也找不到原因,但是有發(fā)現(xiàn)這些規(guī)律:跑飛的時候di這個線程的sp不正常,不啟動di線程不會跑飛,只連接socket不收發(fā)數(shù)據(jù)也不會跑飛,以太網(wǎng)循環(huán)輪詢線程里不獲取信號量,而是使用rt_thread_mdelay(1)也不會跑飛,看了你們發(fā)的hardfault教程.lst里也找不到mepc對應(yīng)的函數(shù),也沒找到內(nèi)存越界訪問的情況,想問下對于這種情況有什么排查的辦法嗎?

您好,可以按照下圖介紹解決方法試一下。若不行可將工程發(fā)至郵箱(lzs@wch.cn)具體看一下

image.png



這個文檔是在哪里看到的呢?我這邊看rtthread的官方文檔里是推薦使用信號量來同步中斷和線程的,在中斷中釋放信號量,在線程中阻塞獲取信號量,rtt官方的finsh也是這樣用的,如果不用信號量用一個標(biāo)志位來記錄,那還是需要在線程中輪詢,沒法保證實(shí)時性的,這是RTT官方的文檔說明https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/programming-manual/ipc1/ipc1?id=%e4%bf%a1%e5%8f%b7%e9%87%8f

image.png


您好,這是瀏覽器搜索時給的結(jié)論,若方便可以把工程發(fā)至我的郵箱(lzs@wch.cn)具體看一下做一下驗(yàn)證測試


只有登錄才能回復(fù),可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频