使用情況
芯片:SMT32F429
操作系統(tǒng):RTT 5.0.0
文件系統(tǒng):littlefs + romfs
flashdb:kvdb + 文件模式 使用
使用場(chǎng)景
分配5個(gè)扇區(qū)情況
創(chuàng)建一個(gè)線程,1秒寫入一次當(dāng)前時(shí)間戳至kvdb數(shù)據(jù)庫(kù)中
發(fā)現(xiàn)如果分配五個(gè)扇區(qū),前四個(gè)扇區(qū)都可以正常讀寫。
當(dāng)五個(gè)扇區(qū)都寫滿的時(shí)候,需要搬運(yùn)數(shù)據(jù)到第0扇區(qū)去。
日志如下,沒有空扇區(qū)了。
The remain empty sector is 1, GC threshold is 1.
這個(gè)日志已出現(xiàn),系統(tǒng)就會(huì)卡死,看門狗復(fù)位
嘗試debug調(diào)試,總是調(diào)到?jīng)]有使用的函數(shù)里面,函數(shù)地址0x00000xx開頭。
解決方法
經(jīng)過不斷嘗試,ps打印當(dāng)前線程狀態(tài)時(shí),發(fā)現(xiàn)時(shí)間戳保存線程的最大使用率高達(dá)81%.一般來說都要控制在75%左右合適。
分析是不是應(yīng)該堆棧不夠?qū)е孪到y(tǒng)卡死
將該線程從2048改為4096后,不會(huì)出現(xiàn)卡死問題了。線程的最大使用率變?yōu)?1%
分析
flshdb在扇區(qū)都滿的情況下,會(huì)進(jìn)行Collect操作。這個(gè)操作是在當(dāng)前線程完成的,會(huì)增加占用率。
然而這個(gè)運(yùn)行操作并不是會(huì)頻繁出現(xiàn)的,所以很難判斷到是堆棧不夠?qū)е碌膯栴}。
建議
能否增加一個(gè)異步模式來專門執(zhí)行g(shù)c與Collect操作?
就像ulog的異步線程的方式那樣。
寫入數(shù)據(jù)庫(kù)并不要求實(shí)時(shí)性,只需要確保數(shù)據(jù)的準(zhǔn)確就好了。
異步方式需要一個(gè)緩沖區(qū),緩沖區(qū)滿了才能傳入數(shù)據(jù),可能導(dǎo)致緩沖區(qū)未滿時(shí)掉電,導(dǎo)致數(shù)據(jù)缺失了一部分。
但是這個(gè)情況,可以添加一個(gè)函數(shù),立刻刷新緩沖區(qū)。然后給用戶使用。 用戶自己實(shí)現(xiàn)掉電保存與硬件。所以可以增加一個(gè)異步線程的選項(xiàng),提供用戶使用。看用戶是選擇實(shí)時(shí),還是效率。
-
看門狗
+關(guān)注
關(guān)注
10文章
566瀏覽量
70951 -
STM32F429
+關(guān)注
關(guān)注
0文章
40瀏覽量
10796 -
RTThread
+關(guān)注
關(guān)注
8文章
132瀏覽量
41003
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
外部中斷誤觸發(fā)的原因分析和解決方法
![外部中斷誤<b class='flag-5'>觸發(fā)</b>的原因分析和<b class='flag-5'>解決方法</b>](https://file1.elecfans.com/web2/M00/B2/66/wKgZomVfFo2AITbPAABvg_kBiSg988.jpg)
一種優(yōu)雅解決MySQL驅(qū)動(dòng)中虛引用導(dǎo)致GC耗時(shí)較長(zhǎng)問題的方法
接地網(wǎng)阻值偏大的原因及解決方法
CC2640的SPI使用導(dǎo)致程序卡死?
請(qǐng)問為什么AM3352 SD卡 mmcblk0: retrying using single block read導(dǎo)致系統(tǒng)卡死?
EasyFlash 1CR墨盒的資料分享
SPI Flash使用flashdb無法進(jìn)行讀寫操作怎么辦
RK3399系統(tǒng)經(jīng)常卡死的問題及其解決方法
flashDB / Easyflash觸發(fā)GC導(dǎo)致系統(tǒng)卡死的解決方法分享
ISP串口下載時(shí)卡死的解決方法
光驅(qū)讀盤能力差的解決方法一則
導(dǎo)致開關(guān)電源嘯叫的六種情況及解決方法
![<b class='flag-5'>導(dǎo)致</b>開關(guān)電源嘯叫的六種情況及<b class='flag-5'>解決方法</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
Systick_Handler B.卡死處理方法
![Systick_Handler B.<b class='flag-5'>卡死</b>處理<b class='flag-5'>方法</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
舵機(jī)使用外部電源供電導(dǎo)致舵機(jī)不轉(zhuǎn)或者向一個(gè)方向轉(zhuǎn)動(dòng)直到卡死的原因和解決方法
![舵機(jī)使用外部電源供電<b class='flag-5'>導(dǎo)致</b>舵機(jī)不轉(zhuǎn)或者向一個(gè)方向轉(zhuǎn)動(dòng)直到<b class='flag-5'>卡死</b>的原因和<b class='flag-5'>解決方法</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評(píng)論