微控制器RAM檢測演算法的改進與C實現

2021-09-24 23:56:20 字數 1074 閱讀 2815

改進演算法mnx 如下所示,^ : 表示順序寫入;不帶^表示逆序:

^(w0); ^(r0,w1); (r1,w0);(r0)
偽**,m表示讀取,m表示寫入:

for (i = 0; i < n; i++)

for (i = 0; i < n; i++)else

}for (i = n-1; i >=0; i--)else

}for (i = n-1; i >=0; i--)else

}

c實現,其中start_addr, finish_addr是ram的開始位址與結束位址;而march_data_code為背景資料;

以32bit為示例,可以選擇如下一項或者幾項進行覆蓋測試。

/*

* background data list:

* 1. 0x00000000

2. 0x33333333

3. 0x55555555

4. 0x0f0f0f0f

5. 0x00ff00ff

6. 0x0000ffff

* _sram_err_region 指示err區域位址以及content

* detect_ram_en : 是否檢測到首次就直接退出,或者全部掃測完成

*/uint32 _sram_marchx ( uint32* start_addr, uint32* finish_addr, uint32 march_data_code )

for ( paddr32 = start_addr; paddr32 < finish_addr; paddr32 ++ )

else

}for ( paddr32 = finish_addr - 1; paddr32 >= start_addr + 1; paddr32 -- )

else

}for ( paddr32 = finish_addr - 1; paddr32 >= start_addr + 1; paddr32 -- )

else

}return res;

}

微控制器的ROM與RAM

rom read only memory 程式儲存器 在微控制器中用來儲存程式資料及常量資料或變數資料,凡是c檔案及h檔案中所有 全域性變數 區域性變數 const 限定符定義的常量資料 startup.asm檔案中的 類似arm中的bootloader或者x86中的bios,一些低端的微控制器是沒...

10 4 51微控制器RAM區域的劃分

前邊介紹微控制器資源的時候,我們提到過 stc89c52 共有 512 位元組的 ram,是用來儲存資料的,比如我們定義的變數都是直接存在 ram 裡邊的。但是微控制器的這 512 位元組的 ram在地位上並不都是平等的,而是分塊的,塊與塊之間在物理結構和用法上都是有區別的,因此我們在使用的時候,也...

STC89C52微控制器RAM模式

stc89c52 微控制器內變數 函式引數等資料在ram中的儲存模式 small compact large 前邊介紹微控制器資源的時候,我們提到過 stc89c52 共有 512 位元組的 ram,是用來儲存資料的,比如我們定義的變數都是直接存在 ram 裡邊的。但是微控制器的這 512 位元組的...