SWRA446 February   2015 CC1310 , CC1310 , CC2620 , CC2620 , CC2630 , CC2630 , CC2640 , CC2640 , CC2640R2F , CC2640R2F , CC2640R2F-Q1 , CC2640R2F-Q1 , CC2650 , CC2650 , CC2650MODA , CC2650MODA

 

  1.   Using GCC/GDB With SimpleLink CC26xx/CC13xx
    1.     Trademarks
    2. 1 Introduction
    3. 2 Prerequisites
      1. 2.1 Platforms
      2. 2.2 Hardware
      3. 2.3 Software
    4. 3 Hardware Setup
    5. 4 Software Installation Instructions
      1. 4.1 Java Runtime Environment
      2. 4.2 Eclipse IDE (Windows)
      3. 4.3 Eclipse IDE (Linux)
      4. 4.4 GNU Toolchain (Windows)
      5. 4.5 GNU Toolchain (Linux)
      6. 4.6 Build Tools for Windows
      7. 4.7 TI Emupack and GDB Server (Windows)
      8. 4.8 Flash Programmer (Windows)
      9. 4.9 Flash Programmer (Linux)
    6. 5 Build the Software Example
      1. 5.1 Import Example Project Into the IDE
      2. 5.2 Build the Software Example
    7. 6 Load Binary Image to Target
      1. 6.1 Configure Flash Programmer Tool (Windows)
      2. 6.2 Configure Flash Programmer Tool (Linux)
      3. 6.3 Load the Image to Target (Windows)
      4. 6.4 Load the Image to Target (Linux)
    8. 7 Debug the Software Example
      1. 7.1 Launch the GDB Server (Windows)
      2. 7.2 Launch the GDB Server (Linux)
      3. 7.3 Configure Eclipse Debugger
      4. 7.4 Running the Software Example From Debugger
    9. 8 References
  2. AMakefile
    1. A.1 Makedefs
    2. A.2 Makefile
  3. BLinker and Startup Files
    1. B.1 Linker File
    2. B.2 Startup Files

Linker File

The linker file cc26x0f128.lds is found in the folder cc26xxware/linker_files/ in the software example package.

The following variables are defined in the linker script.

Table 4. Variables Defined in the Linker Script

_estack This variable is used in the startup file and defines the top of the stack to be at the end of SRAM.
_Min_Heap_Size This variable defines required amount of heap. The linker file will report an error if there is not enough space for this amount of heap in the RAM.
_Min_Stack_Size This variable defines required amount of stack. The linker file will report an error if there is not enough space for this amount of stack in the RAM.

The following commands are called in the linker script.

Table 5. Commands Defined in the Linker Script

ENTRY Defines the entry point, i.e. the first instruction to execute in the program. The entry point is set to ResetISR, which is a function implemented in the startup file.
MEMORY This command describes the location and size of blocks of memory in the target.
ORIGIN defines the start address of the memory block.
LENGTH defines the size of the memory block.
Attributes can be placed in parenthesis after the memory block name. The attributes used in this linker file is
‘R’ Read-only section
‘W’ Write section
‘X’ Executable section
SECTIONS This commend tells the linker how to map input sections into output sections and how to place the output sections in memory.
This linker script contains the output sections .text, .data, .bss and .ccfg. In addition a section called _user_heap_stack is defined. This is to make sure that there is enough space in the SRAM region for the required amount of heap and stack.
The below code defines the output section .text:
.text : { _text = .; KEEP(*(.vectors)) *(.text*) *(.rodata*) _etext = .; } > FLASH= 0
_text = .; sets the symbol _text to the value of the location counter. The location counter has value 0 at the beginning of the SECTIONS command. Then follows the input sections that should be placed in this output section. KEEP(*(.vectors)) will keep the symbols *(.vectors) in the section even if symbols are not referenced. The ‘*’ is a wildcard symbol. *(.text*)and *(.rodata*) means that all .text* and .rodata* input sections in all input files should be placed in this section. _etext = .; sets the symbol _etext to the value of the location counter. > FLASH= 0 assigns the section to the memory region FLASH, and fills unspecified regions of the memory with 0.
In the definition of the .data section, the keyword AT(lma) is used. This keyword specifies the load address (lma) of the section.