在做STM32F407VE系列的BSP,但出現一個問題:
1. 本芯片的SRAM大小爲192KB;
2. 按照移植手冊上把SRAM大小寫爲192KB時,堆初始化時rt_system_heap_init,始終報硬件錯誤;
3.把SRAM改爲128KB之後就正常了;
按照手冊進行移植的,難道堆不能全部使用完系統剩餘內存?還是有其他原因?
問題解決思路:
STM32F407VE系列內存是不連續的,有64K是CCM內存,因此堆分配的時候需要分段分配!
CCM內存
CCM只可以CPU訪問,SRAM的話CPU和DMA等外設都可以訪問,理論上CCM訪問速度比SRAM更快
STM32 F30x系列把8KB 的SRAM地址映射到指令總線,使之成爲內核專用存儲器(CCM-SRAM),系統啓動時關鍵程序可全速載入8KB CCM存儲器,無需等待。CCM是內核專用存儲器吧。