I attempted to create a "hello world" application for a TMS570LS20216 using CCS Version: 5.1.1.00031 with the following settings:
The resulting program didn't run - the main entry point was never reached.
On inspecting the
****************************************************************************** TMS470 Linker PC v4.9.4 ****************************************************************************** >> Linked Sun May 13 19:57:21 2012 OUTPUT FILE NAME: <ARM_hello_world.out> ENTRY POINT SYMBOL: "_c_int00" address: 00003b10 MEMORY CONFIGURATION name origin length used unused attr fill ---------------------- -------- --------- -------- -------- ---- -------- VECTORS 00000000 00000020 00000000 00000020 X FLASH0 00000020 0007ffe0 00004fc1 0007b01f R X FLASH1 00080000 00080000 00000000 00080000 R X FLASH2 00100000 00080000 00000000 00080000 R X FLASH3 00180000 00080000 00000000 00080000 R X STACKS 08000000 00001300 00000000 00001300 RW RAM 08001300 00026d00 000004f0 00026810 RW SEGMENT ALLOCATION MAP run origin load origin length init length attrs members ---------- ----------- ---------- ----------- ----- ------- 00000020 00000020 00003ef9 00003ef9 r-x 00000020 00000020 00003df8 00003df8 r-x .text 00003e18 00003e18 00000101 00000101 r-- .const 00003f1c 00003f1c 00001004 00000000 rw- 00003f1c 00003f1c 00000800 00000000 rw- .stack 00004720 00004720 00000800 00000000 rw- .sysmem 00004f20 00004f20 000000c8 000000c8 r-- 00004f20 00004f20 000000c8 000000c8 r-- .cinit 08001300 08001300 00000290 00000000 rw- 08001300 08001300 00000290 00000000 rw- .bss 08001590 08001590 00000260 00000260 rw- 08001590 08001590 00000260 00000260 rw- .data SECTION ALLOCATION MAP output attributes/ section page origin length input sections -------- ---- ---------- ---------- ---------------- .text 0 00000020 00003df8 00000020 0000164c rtsv7R4_A_be_v3D16_eabi.lib : _printfi.obj (.text) 0000166c 0000063c : memory.obj (.text) 00001ca8 000005c4 : lowlev.obj (.text) 0000226c 000004e0 : trgdrv.obj (.text) 0000274c 00000300 : fopen.obj (.text) 00002a4c 000002b8 : ull_div32.obj (.text) 00002d04 00000194 : fputs.obj (.text) 00002e98 00000180 : memcpy32.obj (.text) 00003018 00000118 : _io_perm.obj (.text) 00003130 00000114 : fflush.obj (.text) 00003244 00000114 : setvbuf.obj (.text) 00003358 000000d8 : fputc.obj (.text) 00003430 000000d4 : auto_init.obj (.text) 00003504 000000b0 : memset32.obj (.text) 000035b4 000000a8 : trgmsg.obj (.text) 0000365c 00000098 : copy_decompress_rle.obj (.text) 000036f4 00000098 : fclose.obj (.text) 0000378c 0000008c : cpy_tbl.obj (.text) 00003818 0000008c : xdtest.obj (.text) 000038a4 00000084 : atoi.obj (.text) 00003928 00000080 : fseek.obj (.text) 000039a8 00000080 : ltoa.obj (.text) 00003a28 00000078 : exit.obj (.text) 00003aa0 00000070 : printf.obj (.text) 00003b10 00000060 : boot.obj (.text) 00003b70 00000058 : i_div32.obj (.text) 00003bc8 00000054 : u_div32.obj (.text) 00003c1c 00000048 : strncpy.obj (.text) 00003c64 0000002c : memccpy.obj (.text) 00003c90 0000002c : memchr.obj (.text) 00003cbc 0000002c : strcmp.obj (.text) 00003ce8 00000028 : strchr.obj (.text) 00003d10 00000024 : _lock.obj (.text) 00003d34 00000020 : copy_zero_init.obj (.text:decompress:ZI) 00003d54 00000020 main.obj (.text) 00003d74 00000020 rtsv7R4_A_be_v3D16_eabi.lib : args_main.obj (.text) 00003d94 00000020 : icall32.obj (.text) 00003db4 0000001c : strlen.obj (.text) 00003dd0 00000018 : strcpy.obj (.text) 00003de8 00000014 : copy_decompress_none.obj (.text:decompress:none) 00003dfc 00000014 : xdclass.obj (.text) 00003e10 00000008 : copy_decompress_rle.obj (.text:decompress:rle24) .const 0 00003e18 00000101 00003e18 00000101 rtsv7R4_A_be_v3D16_eabi.lib : ctype.obj (.const:_ctypes_) .stack 0 00003f1c 00000800 UNINITIALIZED 00003f1c 00000800 --HOLE-- .sysmem 0 00004720 00000800 UNINITIALIZED 00004720 00000008 rtsv7R4_A_be_v3D16_eabi.lib : memory.obj (.sysmem) 00004728 000007f8 --HOLE-- .cinit 0 00004f20 000000c8 00004f20 000000a1 (.cinit..data.load) [load image, compression = rle] 00004fc1 00000003 --HOLE-- [fill = 0] 00004fc4 0000000c (__TI_handler_table) 00004fd0 00000008 (.cinit..bss.load) [load image, compression = zero_init] 00004fd8 00000010 (__TI_cinit_table) .bss 0 08001300 00000290 UNINITIALIZED 08001300 00000120 rtsv7R4_A_be_v3D16_eabi.lib : trgmsg.obj (.bss:__CIOBUF_) 08001420 000000c8 : trgdrv.obj (.bss:result$1) 080014e8 000000a0 : defs.obj (.bss:_tmpnams) 08001588 00000008 : trgdrv.obj (.bss) .data 0 08001590 00000260 08001590 000000f0 rtsv7R4_A_be_v3D16_eabi.lib : defs.obj (.data:_ftable) 08001680 00000078 : lowlev.obj (.data:_device) 080016f8 00000070 : xlvalues.obj (.data) 08001768 00000050 : lowlev.obj (.data:_stream) 080017b8 00000010 : defs.obj (.data) 080017c8 0000000c : memory.obj (.data) 080017d4 00000008 : _lock.obj (.data) 080017dc 00000008 : exit.obj (.data) 080017e4 00000004 : fopen.obj (.data) 080017e8 00000004 : lowlev.obj (.data) 080017ec 00000004 : stkdepth_vars.obj (.data) LINKER GENERATED COPY TABLES __TI_cinit_table @ 00004fd8 records: 2, size/record: 8, table size: 16 .data: load addr=00004f20, load size=000000a1 bytes, run addr=08001590, run size=00000260 bytes, compression=rle .bss: load addr=00004fd0, load size=00000008 bytes, run addr=08001300, run size=00000290 bytes, compression=zero_init LINKER GENERATED HANDLER TABLE __TI_handler_table @ 00004fc4 records: 3, size/record: 4, table size: 12 index: 0, handler: __TI_zero_init index: 1, handler: __TI_decompress_rle24 index: 2, handler: __TI_decompress_none GLOBAL SYMBOLS: SORTED ALPHABETICALLY BY Name address name -------- ---- 00003a28 C$$EXIT 000035fc C$$IO$$ 000026d8 HOSTclock 00002670 HOSTclose 000025cc HOSTlseek 00002540 HOSTopen 000024bc HOSTread 00002420 HOSTrename 000023bc HOSTtime 00002358 HOSTunlink 000022d4 HOSTwrite 00003d94 IND_CALL 00003dfc _Dclass 00003818 _Dtest 080016f8 _LDenorm 08001708 _LEps 08001718 _LInf 08001728 _LNan 08001748 _LRteps 08001738 _LSnan 08001758 _LXbig 08001760 _LZero 08001300 __CIOBUF_ 0000471c __STACK_END 00000800 __STACK_SIZE 00000800 __SYSMEM_SIZE 00004fd8 __TI_CINIT_Base 00004fe8 __TI_CINIT_Limit 00004fc4 __TI_Handler_Table_Base 00004fd0 __TI_Handler_Table_Limit 00000001 __TI_args_main 00003430 __TI_auto_init 00003de8 __TI_decompress_none 00003e10 __TI_decompress_rle24 00004f20 __TI_static_base__ 00003d34 __TI_zero_init 00003b70 __aeabi_idivmod 00003504 __aeabi_memclr 00003504 __aeabi_memclr4 00003504 __aeabi_memclr8 00002e98 __aeabi_memcpy 00002e98 __aeabi_memcpy4 00002e98 __aeabi_memcpy8 00003508 __aeabi_memset 00003508 __aeabi_memset4 00003508 __aeabi_memset8 080017c4 __aeabi_stderr 080017bc __aeabi_stdin 080017c0 __aeabi_stdout 00003bc8 __aeabi_uidivmod 00002a4c __aeabi_uldivmod ffffffff __binit__ ffffffff __c_args__ 00003f1c __stack 00003d74 _args_main 00003b10 _c_int00 0000288c _cleanup 080017dc _cleanup_ptr 00003e18 _ctypes_ 00003130 _doflush 080017e0 _dtors_ptr 080017b8 _ft_end 08001590 _ftable 080017d4 _lock 00003d28 _nop 000013d8 _printfi 000030b8 _rd_ok 00003d1c _register_lock 00003d10 _register_unlock 00004720 _sys_memory 080014e8 _tmpnams 080017d8 _unlock 00003018 _wrt_ok 00003a30 abort 00002190 add_device 000038a4 atoi ffffffff binit 00001c50 calloc 00002104 close 0000378c copy_in 00003a3c exit 000036f4 fclose 000031b4 fflush 00002100 find_registered_device 000029e0 fopen 00003358 fputc 00002d04 fputs 0000182c free 000028f0 freopen 00003928 fseek 0000226c getenv 00002088 lseek 000039a8 ltoa 00003d54 main 080017ec main_func_sp 00001774 malloc 00001b14 memalign 00003c64 memccpy 00003c90 memchr 00002e98 memcpy 00003514 memset 0000166c minit 00001fb8 open 00003aa0 printf 00003420 putc 00003424 putchar 00002e64 puts 00001ed4 read 00003604 readmsg 00001988 realloc 00001dd8 remove 00001e88 remove_device 00001e1c rename 00003244 setvbuf 00003ce8 strchr 00003cbc strcmp 00003dd0 strcpy 00003db4 strlen 00003c1c strncpy 00001dd8 unlink 00001ca8 write 000035b4 writemsg GLOBAL SYMBOLS: SORTED BY Symbol Address address name -------- ---- 00000001 __TI_args_main 00000800 __STACK_SIZE 00000800 __SYSMEM_SIZE 000013d8 _printfi 0000166c minit 00001774 malloc 0000182c free 00001988 realloc 00001b14 memalign 00001c50 calloc 00001ca8 write 00001dd8 remove 00001dd8 unlink 00001e1c rename 00001e88 remove_device 00001ed4 read 00001fb8 open 00002088 lseek 00002100 find_registered_device 00002104 close 00002190 add_device 0000226c getenv 000022d4 HOSTwrite 00002358 HOSTunlink 000023bc HOSTtime 00002420 HOSTrename 000024bc HOSTread 00002540 HOSTopen 000025cc HOSTlseek 00002670 HOSTclose 000026d8 HOSTclock 0000288c _cleanup 000028f0 freopen 000029e0 fopen 00002a4c __aeabi_uldivmod 00002d04 fputs 00002e64 puts 00002e98 __aeabi_memcpy 00002e98 __aeabi_memcpy4 00002e98 __aeabi_memcpy8 00002e98 memcpy 00003018 _wrt_ok 000030b8 _rd_ok 00003130 _doflush 000031b4 fflush 00003244 setvbuf 00003358 fputc 00003420 putc 00003424 putchar 00003430 __TI_auto_init 00003504 __aeabi_memclr 00003504 __aeabi_memclr4 00003504 __aeabi_memclr8 00003508 __aeabi_memset 00003508 __aeabi_memset4 00003508 __aeabi_memset8 00003514 memset 000035b4 writemsg 000035fc C$$IO$$ 00003604 readmsg 000036f4 fclose 0000378c copy_in 00003818 _Dtest 000038a4 atoi 00003928 fseek 000039a8 ltoa 00003a28 C$$EXIT 00003a30 abort 00003a3c exit 00003aa0 printf 00003b10 _c_int00 00003b70 __aeabi_idivmod 00003bc8 __aeabi_uidivmod 00003c1c strncpy 00003c64 memccpy 00003c90 memchr 00003cbc strcmp 00003ce8 strchr 00003d10 _register_unlock 00003d1c _register_lock 00003d28 _nop 00003d34 __TI_zero_init 00003d54 main 00003d74 _args_main 00003d94 IND_CALL 00003db4 strlen 00003dd0 strcpy 00003de8 __TI_decompress_none 00003dfc _Dclass 00003e10 __TI_decompress_rle24 00003e18 _ctypes_ 00003f1c __stack 0000471c __STACK_END 00004720 _sys_memory 00004f20 __TI_static_base__ 00004fc4 __TI_Handler_Table_Base 00004fd0 __TI_Handler_Table_Limit 00004fd8 __TI_CINIT_Base 00004fe8 __TI_CINIT_Limit 08001300 __CIOBUF_ 080014e8 _tmpnams 08001590 _ftable 080016f8 _LDenorm 08001708 _LEps 08001718 _LInf 08001728 _LNan 08001738 _LSnan 08001748 _LRteps 08001758 _LXbig 08001760 _LZero 080017b8 _ft_end 080017bc __aeabi_stdin 080017c0 __aeabi_stdout 080017c4 __aeabi_stderr 080017d4 _lock 080017d8 _unlock 080017dc _cleanup_ptr 080017e0 _dtors_ptr 080017ec main_func_sp ffffffff __binit__ ffffffff __c_args__ ffffffff binit [122 symbols]
To get the program to run I had to add the following to the SECTIONS of the project TMS570LS202x6SFlashLnk.cmd:
.stack : {} > STACKS .sysmem : {} > RAM
Should the C:\ti\ccsv5\ccs_base\arm\include\TMS570LS202x6SFlashLnk.cmd supplied with CCS 5.1 be updated to add the .stack and .sysmem sections generated by the compiler?
It also looks like the TMS570LS212xFlashLnk.cmd, TMS570LS213xFlashLnk.cmd and TMS570LS313xFlashLnk.cmd files have the same problem of missing sections.