天天看點

TI-CC2640R2-cache as ram 應用一、測試環境二、實作步驟

本文介紹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。

TI-CC2640R2-cache as ram 應用一、測試環境二、實作步驟

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-CC2640R2-cache as ram 應用一、測試環境二、實作步驟

寫在最後:

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