STM32F4說是有192KRAM 但是很是很坑。192k分為兩部分128k普通RAM和64K CCM RAM,CCM隻能核心調用,外設無法使用。本來想着192KRAM挺好,結果仔細看悲劇了。但是也不能浪費,可以嘗試使用它,把UCOS核心資料放到CCM。網上搜尋到一個FreeRTOS的照着他的自己弄了弄。
http://www.stmcu.org/module/forum/thread-604814-1-1.html再次感謝該網友。。。
1.勾選IARM2 确認使用CCM
此時編譯程式後打開.map檔案會發現使用了CCM但是沒有資料定義到這塊RAM。同時發現IRAM1内部關于UCOS的存儲。
2.打開.sct檔案添加如下圖代碼--UCOS_ii_IARM自己寫的,把剛剛在IRAM1中看到的 os_core.o 和os_cpu_c.o檔案添加到CCM。
修改MDK 不勾選USE Memory Layout from Targe Dialog,如下圖。儲存重新編譯
這時打開.map檔案會發現os_core.o 和os_cpu_c.o檔案添加到了CCM。任然沒有在CCM中定義資料啥的。
如果需要定義資料到CCM就需要修改.sct檔案。比如我要在CCM定義20K數組存放圖檔則需要這樣,首先定義數組并at起始位址
u8 g_nJPEGBuff[20*1024] __attribute__((at(0x10000000))) = {0,};
然後UCOS定義到CCM的資料位置也要相應的調整,這裡我配置設定32K給數組用,32K給UCOS用那麼.sct檔案就需要修改成如下圖所示
此時編譯後打開.MAP檔案就會看到有一個資料定義在了 RW_IRAM2即CCM中 尺寸是0x00005000也就是我們定義的20K數組占用的。而UCOS則定義到了0x10008000位址以後的空間。如下圖