[筆記] STM32H750 如何宣告一塊外部記憶體? 而不發生 HardFault 異常。
STM32H750 內部記憶體不到 1MB,在記憶空間使用大的情況下,我們需要在晶片外部增加外部 SRAM 以滿足空間需求。如何宣告一個變數映射到這外部記憶體?對於編譯器版本 AC5 或 AC6 最安全的做法是底下這樣宣告:
uint16_t *myTest = (uint16_t *) 0xC0000000;
直接將變數的位址映射到外部記憶體位址上,然後計算好這個變數的 array 長度大小。
另一個宣告方式,如下,但僅適用於 AC5 版本,
uint8_t myTest[128] __attribute__((section(".exsram")));
這樣宣告後,需要在 Keil IDE 的 scatter 檔案中,添加一個記憶體空間,如下圖所示。上面變數宣告的 section 名稱為 .exsram,正好對應到下面 scatter 檔裡面的定義空間。如此一來,變數與外部記憶體的綁在一起了。
留言