STM32F4 定義ucosii到CCM

  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地址以後的空間。如下圖



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章