本文介紹cc2640r2如何在實際工程中将cache作為ram使用。
注意:
CC2640R2F擁有8K的cache,将它用作ram時,會稍微減少工作速度。
一、測試環境
SDK版本: 1.35.00.33
CCS版本: 7.2.0.00013
xdc版本: 3.50.2.20
測試工程:simple_periperal_app_oad_offchip
二、實作步驟
1、導入測試工程到css,選中自己的應用工程,在Properties->Build->ARM Compiler->Predefined Symbols 中添加CACHE_AS_RAM。
2、在Properties->Build->ARM Linker->Advance Options-> Command File 中添加CACHE_AS_RAM=1,這邊指令是用于使cc26xx_app_oad.cmd生效。
3、修改cc26xx_app_oad.cmd。

cache映射位址和大小
/*********************************************************************
* Memory Sizes
*/
#define FLASH_BASE 0x00000000
#define GPRAM_BASE 0x11000000
#define RAM_BASE 0x20000000
#define ROM_BASE 0x10000000
#ifdef CC26X0ROM
#define FLASH_SIZE 0x00020000
#define GPRAM_SIZE 0x00002000
#define RAM_SIZE 0x00005000
#define ROM_SIZE 0x0001C000
#endif /* CC26X0ROM */
/*********************************************************************
* GPRAM
*/
#ifdef CACHE_AS_RAM
#define GPRAM_START GPRAM_BASE
#define GPRAM_END (GPRAM_START + GPRAM_SIZE - 1)
#endif /* CACHE_AS_RAM */
在MEMORY中定義長度大小
#ifdef CACHE_AS_RAM
GPRAM(RWX) : origin = GPRAM_START, length = GPRAM_SIZE
#endif /* CACHE_AS_RAM */
在SECTIONS中添加cache 存放什麼資料,我這裡定義的是存放.bss字段資料。
/*********************************************************************
* Section Allocation in Memory
********************************************************************/
SECTIONS
{
.imgHdr : > IMAGE_HEADER
.intvecs : > FLASH
.text : > FLASH
.const : > FLASH
.constdata : > FLASH
.rodata : > FLASH
.cinit : > FLASH
.pinit : > FLASH
.init_array : > FLASH
.emb_text : > FLASH
GROUP > SRAM
{
.data
#ifndef CACHE_AS_RAM
.bss
#endif /* CACHE_AS_RAM */
.vtable
.vtable_ram
vtable_ram
.sysmem
.nonretenvar
} LOAD_END(heapStart)
.stack : > SRAM (HIGH) LOAD_START(heapEnd)
#ifdef CACHE_AS_RAM
ll_bss
{
*(.bss)
} > GPRAM
#endif /* CACHE_AS_RAM */
}
4、選中bim工程,打開ble5_bim_oad_offchip_cc2640r2lp_app->Application->ccfg_app_ble.c, 添加
#define SET_CCFG_SIZE_AND_DIS_FLAGS_DIS_GPRAM 0x0
寫在最後:
TI官方文檔對于cc26xx_app_oad.cmd修改介紹的很簡單,特别是SECTIONS部分,需要自己參透其含義和用法,我上面的例子隻是用來存放.bss字段,當然也可以用于存放其他字段,如某個.c檔案靜态變量多的時候,可用來包含.data字段。
關于需要修改ccfg_app_ble.c檔案,官方文檔也沒有說明。
每次編譯之前,先清除工程。
官方線上文檔:http://software-dl.ti.com/lprf/ble5stack-docs-latest/docs/ble5stack/ble_user_guide/html/cc2640/memory_management.html?highlight=cache_as_ram#using-the-cache-as-ram