日韩在线不卡免费视频一区,日韩欧美精品一区二区三区经典,日产精品码2码三码四码区,人妻无码一区二区三区免费,日本feerbbwdh少妇丰满

阿飛的秘術(shù)屋
認(rèn)證:VIP會員
作者動態(tài)
運(yùn)放電路中基準(zhǔn)電源溫漂對輸出的影響
2024-12-25 15:38
關(guān)于使用串口ISP方式進(jìn)行程序下載
2024-12-19 21:56
emc防護(hù)原理
2024-01-14 21:20
關(guān)于使用LVDS芯片進(jìn)行屏幕通信過程中遇到的EMC問題
2023-12-25 13:15
RT-Thread 串口DMA發(fā)送代碼解析
2023-12-21 16:58

關(guān)于FreeRTOS堆棧溢出檢測的幾個問題

1、問題:

在移植、使用安富萊的FreeRTOS堆棧溢出檢測例程的過程中,出現(xiàn)如下情況

串口數(shù)據(jù)并沒有打印完成,直接進(jìn)入了硬件報錯。同時在仿真過程中,溢出檢測的vApplicationStackOverflowHook也沒有進(jìn)入。

2、解決方案:

通過修改vTaskDelay(1);改成vTaskDelay(10);之后,串口數(shù)據(jù)會全部打印,并且進(jìn)入vApplicationStackOverflowHook。

/*
*********************************************************************************************************
*	函 數(shù) 名: StackOverflowTest
*	功能說明: 任務(wù)棧溢出測試
*	形    參: 無
*	返 回 值: 無
*********************************************************************************************************
*/
static void StackOverflowTest(void)
{
	int16_t i;
	uint8_t buf[2048];
	
	(void)buf; /* 防止警告 */
	
	/*
	  1. 為了能夠模擬任務(wù)棧溢出,并觸發(fā)任務(wù)棧溢出函數(shù),這里強(qiáng)烈建議使用數(shù)組的時候逆著賦值。
	     因為對于M3和M4內(nèi)核的MCU,堆棧生長方向是向下生長的滿棧。即高地址是buf[2047], 低地址
	     是buf[0]。如果任務(wù)棧溢出了,也是從高地址buf[2047]到buf[0]的某個地址開始溢出。
	        因此,如果用戶直接修改的是buf[0]開始的數(shù)據(jù)且這些溢出部分的數(shù)據(jù)比較重要,會直接導(dǎo)致
	     進(jìn)入到硬件異常。
	  2. 棧溢出檢測是在任務(wù)切換的時候執(zhí)行的,我們這里加個延遲函數(shù),防止修改了重要的數(shù)據(jù)導(dǎo)致直接
	     進(jìn)入硬件異常。
	  3. 任務(wù)vTaskTaskUserIF的??臻g大小是2048字節(jié),在此任務(wù)的入口已經(jīng)申請了??臻g大小
		 ------uint8_t ucKeyCode;
	     ------uint8_t pcWriteBuffer[500];
	     這里再申請如下這么大的??臻g
	     -------int16_t i;
		 -------uint8_t buf[2048];
	     必定溢出。
	*/
	for(i = 2047; i >= 0; i--)
	{
		buf[i] = 0x55;
		vTaskDelay(10);
	}
}

修改之后的結(jié)果:

3、原因分析

在一開始的串口打印過程中,因為延時不夠,沒有將所有的數(shù)據(jù)打印出來,同時,因為延時時間太少,導(dǎo)致在進(jìn)入空閑線程之后,串口數(shù)據(jù)未打印未完成,并且產(chǎn)生溢出中斷,導(dǎo)致直接進(jìn)入硬件報錯。

聲明:本內(nèi)容為作者獨(dú)立觀點(diǎn),不代表電子星球立場。未經(jīng)允許不得轉(zhuǎn)載。授權(quán)事宜與稿件投訴,請聯(lián)系:editor@netbroad.com
本篇所含全部資料,點(diǎn)擊此處留下郵箱我會發(fā)給你
資料明細(xì):STM32F103-內(nèi)存溢出檢測.zip
覺得內(nèi)容不錯的朋友,別忘了一鍵三連哦!
贊 2
收藏 2
關(guān)注 11
成為作者 賺取收益
全部留言
0/200
成為第一個和作者交流的人吧