用户工具

站点工具


jaysnote:iar_icf

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

jaysnote:iar_icf [2019/01/15 16:32]
jaylee 创建
jaysnote:iar_icf [2021/06/22 23:14]
行 1: 行 1:
-<markdown> 
- 
-# 详解cc26xx_timac_stack_release.icf文件 # 
-* 关于语法帮助查看IAR Help Compiler reference -> Linking Consideration 
-* 关于内存空间映射查看[CPU Domain Memory Map ](C:/ti/tirtos_simplelink_2_11_01_09/products/cc26xxware_2_00_06_14829/doc/register_descriptions/CPU_MMAP/CPU_MMAP.html) 
- 
-``` 
-/******************************************************************************* 
-  Filename:       cc26xx_timac_stack.icf 
-  Revised:        $Date: 2014-05-14 14:50:19 -0700 (Wed, 14 May 2014) $ 
-  Revision:       $Revision: 38545 $ 
- 
-  Description:    IAR ARM Linker Configuration File - BLE Stack 
- 
-  Note: Code stack and heap are allocated by the Application/RTOS build. 
- 
-  Imported Symbols 
-  Note: Linker defines are located in the IAR IDE project using --config_def 
-        in Options->Linker->Extra Options, or placed in Options->Linker-> 
-        Config->Configuration file symbol definitions. 
- 
-  CCxxxx:            Device Name (e.g. CC2650). 
-  FLASH_ONLY_BUILD:  Build full TIMAC stack in flash only memory.              //编译整个TI-MAC都在Flash 
-  FLASH_ROM_BUILD:   Build Flash portion of TIMAC stack to work with ROM code. //仅仅编译部分TI-MAC在Falsh,其他部分在ROM 
-  ROM_BUILD:         Build ROM portion of TIMAC stack. 
-  COMMON_ROM_BUILD:  Build of common ROM code. 
-  TEST_ROM_IN_FLASH: Build ROM code in Flash memory to test. 
-  ICALL_STACK0_ADDR: Start address of flash only and flash ROM builds. 
-  ICALL_RAM0_ADDR:   Start address of RAM. 
- 
-  Exported Symbols 
-  Note: Can be used as externs in C code. 
- 
-  ROM_BASE_ADDR:        Location of start of ROM (where RT Init is expected). 
-  RAM_BASE_ADDR:        Location of start of RAM (for ICall and JT pointers). 
-  COMMON_RAM_BASE_ADDR: Location of start of RAM (for ICall and JT pointers). 
-  PAGE_SIZE:            Size of Flash sector, in bytes. 
-  NUM_SNV_PAGES:        Number of sectors used for Simple NV. 
- 
- 
-*******************************************************************************/ 
- 
-//////////////////////////////////////////////////////////////////////////////// 
-// Memory Sizes 
-//////////////////////////////////////////////////////////////////////////////// 
- 
-//////////////////////////////////////////////////////////////////////////////// 
-// Chameleon 
-if ( isdefinedsymbol(CC2650) )      //类似条件编译,CC2650为定在工程配置预编译宏符号 
-{ 
-  define symbol RAM_SIZE            = 0x00005000;  // 20K  //定义宏 
-  define symbol FLASH_SIZE          = 0x00020000;  // 128K 
-  define symbol ROM_SIZE            = 0x0001C000;  // 115K 
-} 
-//////////////////////////////////////////////////////////////////////////////// 
-// Default 
-else 
-{ 
-  define symbol RAM_SIZE            = 0x00004000;  // 16K 
-  define symbol FLASH_SIZE          = 0x00020000;  // 128K 
-  define symbol ROM_SIZE            = 0x00018000;  // 96K 
-} 
- 
-//////////////////////////////////////////////////////////////////////////////// 
-// Memory Definitions 
-//////////////////////////////////////////////////////////////////////////////// 
- 
-//////////////////////////////////////////////////////////////////////////////// 
-// CM3 FW 
-// 
-define symbol FW_START              = 0x10000000; 
-define symbol FW_END                = 0x10004BFF; 
- 
-//////////////////////////////////////////////////////////////////////////////// 
-// ROM 
-// 
-if ( isdefinedsymbol(COMMON_ROM_BUILD) )            //COMMON_ROM_BUILD通用ROM编译 
-{ 
-  if ( isdefinedsymbol(TEST_ROM_IN_FLASH) ) 
-  { 
-    define symbol ROM_START         = 0x0001A000;   //该地址映射在SRAM 
-    define symbol ROM_END           = 0x0001EFFF; 
-  } 
-  else // ROM code is in ROM memory 
-  { 
- //C:\ti\tirtos_simplelink_2_11_01_09\products\cc26xxware_2_00_06_14829\doc\ 
-    //register_descriptions\CPU_MMAP\BROM.html 
- // Physical      address0x1001 4C00- 0x1001 8D6C 
-    // Description   Doorbell, RF_HAL, ECC, AES128. Possible to split into more details?? 
- // Physical      address0x1001 9FFC 
- // Description   ROM SVN and CRC32 
-  
-    define symbol ROM_START         = 0x10014C00;   //该地址映射在BROM段 
-    define symbol ROM_END           = 0x10019FFF; 
-``` 
- 
-``` 
-  } 
-} 
-else if ( isdefinedsymbol(ROM_BUILD) ) 
-{ 
-  if ( isdefinedsymbol(TEST_ROM_IN_FLASH) ) 
-  { 
-    define symbol ROM_START         = 0x00010000; 
-    define symbol ROM_END           = 0x00019FFF; 
-  } 
-  else // ROM code is in ROM memory 
-  { 
- //Address offset  0x0000 E000-0x0001 3C70 
- //Description     TIMAC Controller 
-    define symbol ROM_START         = 0x1000E000;  // TIMAC Controller 
-    define symbol ROM_END           = 0x10014BFF;  // ROM SVN and CRC32 
-  
-  } 
-} 
-else // not a ROM build 
-{ 
-  define symbol ROM_START           = 0x00010000; 
-  define symbol ROM_END             = 0x0001FFFF; 
-} 
- 
-// export the ROM base address 
-if ( isdefinedsymbol(ROM_BUILD) || isdefinedsymbol(COMMON_ROM_BUILD) ) 
-{ 
-  define symbol ROM_BASE_ADDR       = ROM_START+1; 
-  export symbol ROM_BASE_ADDR; 
-} 
- 
-//////////////////////////////////////////////////////////////////////////////// 
-// RAM 
-// 
-if ( isdefinedsymbol(FLASH_ONLY_BUILD) )                 //FLASH_ONLY_BUILD 
-{ 
-  if ( isdefinedsymbol(ICALL_RAM0_ADDR) ) 
-  { 
-    define symbol RAM_START         = ICALL_RAM0_ADDR;   //ICALL_RAM0_ADDR 宏定义在在工程配置预编译宏符号 
-  } 
-  else // default 
-  { 
-    define symbol RAM_START         = 0x20002A00; 
-  } 
- 
-  if ( isdefinedsymbol(CC2650) ) 
-  { 
-    define symbol RAM_END           = 0x20004FFF; 
-  } 
-  else // default 
-  { 
-    define symbol RAM_END           = 0x20003FFF; 
-  } 
-} 
-else if ( isdefinedsymbol(COMMON_ROM_BUILD) )          //COMMON_ROM_BUILD 
-{ 
-  if ( isdefinedsymbol(CC2650) ) 
-  { 
-    define symbol RAM_START         = 0x20004F2C; 
-    define symbol RAM_END           = 0x20004FFF; 
-  } 
-  else // default 
-  { 
-    define symbol RAM_START         = 0x20003200; 
-    define symbol RAM_END           = 0x200032FF; 
-  } 
- 
-  define symbol COMMON_RAM_BASE_ADDR = RAM_START; 
-  export symbol COMMON_RAM_BASE_ADDR; 
-} 
-else if ( isdefinedsymbol(ROM_BUILD) )                 //ROM_BUILD 
-{ 
-  if ( isdefinedsymbol(CC2650) ) 
-  { 
-    define symbol RAM_START         = 0x20004A14; 
-    define symbol RAM_END           = 0x20004EFF; 
-  } 
-  else 
-  { 
-    define symbol RAM_START         = 0x20003300; 
-    define symbol RAM_END           = 0x20003FFF; 
-  } 
- 
-  define symbol RAM_BASE_ADDR       = RAM_START;        
-  export symbol RAM_BASE_ADDR; 
-} 
-else if ( isdefinedsymbol(FLASH_ROM_BUILD) ) 
-{ 
-  if ( isdefinedsymbol(CC2650) ) 
-  { 
-    if ( isdefinedsymbol(ICALL_RAM0_ADDR) ) 
-    { 
-      define symbol RAM_START       = ICALL_RAM0_ADDR; 
-    } 
-    else 
-    { 
-      define symbol RAM_START       = 0x20002A00; 
-    } 
-    define symbol RAM_END           = 0x20004A13; 
-  } 
-  else 
-  { 
-    if ( isdefinedsymbol(ICALL_RAM0_ADDR) ) 
-    { 
-      define symbol RAM_START       = ICALL_RAM0_ADDR; 
-    } 
-    else 
-    { 
-      define symbol RAM_START       = 0x20002A00; 
-    } 
-    define symbol RAM_END           = 0x200031FF; 
-  } 
-} 
-else // unknown build 
-{ 
-  define symbol RAM_START           = 0xFFFFFFFF; 
-  define symbol RAM_END             = 0xFFFFFFFF; 
-} 
- 
-//////////////////////////////////////////////////////////////////////////////// 
-// Flash 
-// 
-define symbol PAGE_SIZE             = 0x1000; 
-export symbol PAGE_SIZE; 
- 
-define symbol NUM_RESERVED_PAGES    = 1; 
-define symbol RESERVED_SIZE         = (NUM_RESERVED_PAGES * PAGE_SIZE); 
- 
-define symbol NUM_SNV_PAGES         = 2; 
-export symbol NUM_SNV_PAGES; 
- 
-define symbol SNV_SIZE              = (NUM_SNV_PAGES * PAGE_SIZE); 
- 
-define symbol SNV_START             = (FLASH_SIZE - (RESERVED_SIZE + SNV_SIZE)); 
-define symbol SNV_END               = (SNV_START + SNV_SIZE - 1); 
-if ( isdefinedsymbol(FLASH_ONLY_BUILD) ) 
-{ 
-  if ( isdefinedsymbol(ICALL_STACK0_ADDR) ) 
-  { 
-    define symbol FLASH_START       = ICALL_STACK0_ADDR; 
-  } 
-  else // default 
-  { 
-    define symbol FLASH_START       = 0x00008000; 
-  } 
- 
-  define symbol FLASH_END           = (SNV_START - 1); 
-} 
-else if ( isdefinedsymbol(ROM_ONLY_BUILD) || isdefinedsymbol(COMMON_ROM_BUILD) ) 
-{ 
-  define symbol FLASH_START         = ROM_START; 
-  define symbol FLASH_END           = ROM_END; 
-} 
-else if ( isdefinedsymbol(FLASH_ROM_BUILD) ) 
-{ 
-  if ( isdefinedsymbol(ICALL_STACK0_ADDR) ) 
-  { 
-    define symbol FLASH_START       = ICALL_STACK0_ADDR; 
-  } 
-  else // default 
-  { 
-    define symbol FLASH_START       = 0x00008000; 
-  } 
- 
-  if ( isdefinedsymbol(TEST_ROM_IN_FLASH) ) 
-  { 
-    define symbol FLASH_END         = (ROM_START-1); 
-  } 
-  else // ROM code is in ROM memory 
-  { 
-    define symbol FLASH_END         = (SNV_START - 1); 
-  } 
-} 
-else // unknown build 
-{ 
-  define symbol FLASH_START         = 0xFFFFFFFF; 
-  define symbol FLASH_END           = 0xFFFFFFFF; 
-} 
- 
- 
-//////////////////////////////////////////////////////////////////////////////// 
-// ROM Revision Number 
-// 
-if ( isdefinedsymbol(ROM_BUILD) || isdefinedsymbol(COMMON_ROM_BUILD) ) 
-{ 
-  define symbol ROM_CRC_SIZE      = 2; 
-  define symbol ROM_REV_SIZE      = 2; 
-  define symbol ROM_REV_START     = ROM_END - (ROM_CRC_SIZE + 1); 
-  define symbol ROM_REV_END       = ROM_REV_START + ROM_REV_SIZE - 1; 
-} 
- 
-//////////////////////////////////////////////////////////////////////////////// 
-// Memory Regions 
-//////////////////////////////////////////////////////////////////////////////// 
- 
-define memory mem with size = 4G; 
- 
-define region FW        = mem:[from FW_START    to FW_END]; 
-define region ROM       = mem:[from ROM_START   to ROM_END]; 
-define region FLASH     = mem:[from FLASH_START to FLASH_END]; 
-define region RAM       = mem:[from RAM_START   to RAM_END]; 
-define region SNV_FLASH = mem:[from SNV_START   to SNV_END]; 
- 
-if ( isdefinedsymbol(ROM_BUILD) || isdefinedsymbol(COMMON_ROM_BUILD) ) 
-{ 
-  define region ROM_REV = mem:[from ROM_REV_START to ROM_REV_END]; 
-} 
- 
-//////////////////////////////////////////////////////////////////////////////// 
-// Flash Software Entry Point 
-//////////////////////////////////////////////////////////////////////////////// 
- 
-if ( isdefinedsymbol(FLASH_ONLY_BUILD) || isdefinedsymbol(FLASH_ROM_BUILD) ) 
-{ 
-  place at start of FLASH { readonly section EntrySection }; 
-} 
- 
-//////////////////////////////////////////////////////////////////////////////// 
-// Memory Placement 
-// For ROM: C Runtime, Checksum, ROM Revision Number, Flash JT, and FPB. 
-//////////////////////////////////////////////////////////////////////////////// 
- 
-if ( isdefinedsymbol(ROM_BUILD) || isdefinedsymbol(COMMON_ROM_BUILD) ) 
-{ 
-  place in ROM { readonly }; 
-  place in RAM { readwrite }; 
- 
-  // ROM C Runtime Routine 
-  place at start of ROM { ro section .romRuntimeInit }; 
-  keep { section .romRuntimeInit }; 
- 
-  // Checksum 
-  place at end of ROM { ro section .checksum }; 
-  keep { section .checksum }; 
- 
-  // ROM Revision Number 
-  place at start of ROM_REV { ro section .rom_rev }; 
-  keep { section .rom_rev }; 
- 
-  // ICall Functions and R2F and R2R Flash Jump Table Location Pointers 
-  place at start of RAM { section .ramInitTable }; 
-  keep                  { section .ramInitTable }; 
-} 
-else // !ROM_BUILD && !COMMON_ROM_BUILD 
-{ 
-  place in FLASH { readonly }; 
-  place in RAM { readwrite }; 
- 
-  // Simple NV 
-  define block .snv_mem with size=SNV_SIZE, alignment=4 { ro section .snv_mem }; 
-  place at start of SNV_FLASH { block .snv_mem }; 
-  keep { ro section .snv_mem }; 
- 
-  //if ( isdefinedsymbol(FLASH_ROM_BUILD) ) 
-  //{ 
-  //  // FPB Flash Address Table 
-  //  place at address mem:FLASH_ADDR_TBL_ADDR { section FPB_FLS_ADDR_TBL object FPB.o }; 
-  //  keep                                     { section FPB_FLS_ADDR_TBL object FPB.o }; 
- 
-  // // FPB Opcode Table 
-  //  place at start of RAM { section FPB_RAM_OPCODE_TBL }; 
-  //} 
-} 
- 
-//////////////////////////////////////////////////////////////////////////////// 
-// Initialization 
-//////////////////////////////////////////////////////////////////////////////// 
- 
-if ( isdefinedsymbol(ROM_BUILD) || isdefinedsymbol(COMMON_ROM_BUILD) ) 
-{ 
-  initialize by copy { readwrite }; 
-} 
-else 
-{ 
-  initialize by copy with packing = packbits { readwrite }; 
-} 
- 
-do not initialize 
-{ 
-  section .noinit, 
-  section .stack, 
-}; 
- 
-//////////////////////////////////////////////////////////////////////////////// 
- 
-``` 
- 
-</markdown> 
  
jaysnote/iar_icf.txt · 最后更改: 2021/06/22 23:14 (外部编辑)