Other Parts Discussed in Thread: TMS320F28335, CCSTUDIO
Hello!
I am using CCS V3.3, an eZdsp-board with a 28335 DSC and the
XDS510USB-plus external JTAG emulator and I would like to establish
real time data transfer. I sucessfully compiled the provided tutorial
"sect1_less2" (transfer of an array) after I changed the linker command
file to suit 28335's memory tables (see memory listing below) and downloaded it to the controller.
The RTDX configuration panel from CCS looks then as shown below,
so that RTDX should work. Furthermore, I enabled RTDX transfer in CCS and started the provided host application for this example but unfortunately no data were transmitted. While debugging, I recognized that after a long branch directive to the program entry point at c_int00 in boot.obj, .text section was overwritten with the fill-value 0xBEEC from data section .cio (see memory listing below).
After uncommenting the "fill 0xBEEC" comand for .cio section, boot.obj program code worked until a long branch to reserved memory (0x010000 - 0x300000) of TMS320F335 occured (see following screenshot from mixed source/ASM view of boot28.inc).
I guessed that the provided boot routine in "rts2800_ml.lib" might not be suitable for the TMS320F28335 so I included the "rts2800_fpu32.lib", which has worked fine without RTDX. Unfortunately, this produced the error
fatal error: file
"C:/CCStudio_v3.3/bios_5_33_03/packages/ti/rtdx/lib/c2000/rtdxx.lib<rtdx_usr
6.o28L>" specifies ISA revision "C2800", which is not compatible with ISA
revision "C28FPU32" specified in a previous file or on the command line
To sum up, I would like to ask
- Why does the .text section contain initialised data?
- Is the provided RTDX example "...\bios_5_31_02\packages\ti\rtdx\examples\tutorial\sect1_less2\ezdsp2812\" designed to work with an TMS320F335?
- Which boot routine or which libraries except rtdxx.lib do I have to include for RTDX with a TMS320F2833?
Thanks for any advice!
Attachement:
******************************************************************************
TMS320C2000 Linker PC v5.1.0
******************************************************************************
>> Linked Mon Feb 22 09:38:12 2010
OUTPUT FILE NAME: <./Debug/sect1_less2.out>
ENTRY POINT SYMBOL: "RESET_ISR" address: 003f8b75
MEMORY CONFIGURATION
name origin length used unused attr fill
---------------------- -------- --------- -------- -------- ---- --------
PAGE 0:
VECT 00000000 00000040 00000040 00000000 RWIX
FLASH 00300000 0003fff8 00000000 0003fff8 RWIX
OTP 00380400 00000400 00000000 00000400 RWIX
H0SARAM 003f8000 00002000 00000e52 000011ae RWIX
BOOTROM 003fe000 00001fc0 00000000 00001fc0 RWIX
PAGE 1:
MSARAM 00000040 000007c0 000004ac 00000314 RWIX
LSARAM 00008000 00002000 00000a32 000015ce RWIX
SECTION ALLOCATION MAP
output attributes/
section page origin length input sections
-------- ---- ---------- ---------- ----------------
.intvecs 0 00000000 00000040
00000000 00000040 intvecs28.obj (.intvecs)
.text 0 003f8000 00000b7c
003f8000 0000023b rts2800_ml.lib : lowlev.obj (.text)
003f823b 000001f5 : trgdrv.obj (.text)
003f8430 000001de : memory.obj (.text)
003f860e 00000113 : fopen.obj (.text)
003f8721 00000099 : fputs.obj (.text)
003f87ba 00000084 : ankmsg.obj (.text)
003f883e 0000006b : _io_perm.obj (.text)
003f88a9 00000065 : setvbuf.obj (.text)
003f890e 00000060 : fflush.obj (.text)
003f896e 00000045 sect1_less2.obj (.text)
003f89b3 00000044 rts2800_ml.lib : boot.obj (.text)
003f89f7 0000003d : fclose.obj (.text)
003f8a34 00000031 : fseek.obj (.text)
003f8a65 00000025 : sinit.obj (.text)
003f8a8a 00000024 : atexit.obj (.text)
003f8aae 00000021 : memcpy_ff.obj (.text)
003f8acf 0000001e : strncpy.obj (.text)
003f8aed 0000001b : args_main.obj (.text)
003f8b08 00000019 : exit.obj (.text)
003f8b21 0000000d : memchr.obj (.text)
003f8b2e 0000000b : strchr.obj (.text)
003f8b39 0000000a : strcmp.obj (.text)
003f8b43 0000000a : strlen.obj (.text)
003f8b4d 00000009 rtdxx.lib : intr_tgt.o28L (.text:_RTDX_Mask_IER)
003f8b56 00000009 rts2800_ml.lib : _lock.obj (.text)
003f8b5f 00000009 : strcpy.obj (.text)
003f8b68 00000007 : memset.obj (.text)
003f8b6f 00000006 rtdxx.lib : intr_tgt.o28L (.text:_RTDX_Set_IER)
003f8b75 00000004 intvecs28.obj (.text)
003f8b79 00000003 rts2800_ml.lib : remove.obj (.text)
.rtdx_text
* 0 003f8b7c 000002ce
003f8b7c 000000aa rtdxx.lib : buffer1.o28L (.rtdx_text:_RTDX_write_next)
003f8c26 00000085 : buffer1.o28L (.rtdx_text:_RTDX_Buffer_WriteCB)
003f8cab 00000053 : rtdx_mon.o28L (.rtdx_text:_RTDX_Poll)
003f8cfe 00000046 : rtdx_mon.o28L (.rtdx_text:_StartXFer)
003f8d44 00000042 : buffer1.o28L (.rtdx_text:_claim)
003f8d86 00000032 : rtdx_mon.o28L (.rtdx_text:_RTDX_Mon_Queue)
003f8db8 00000030 : rtdx_mon.o28L (.rtdx_text:_RTDX_Init_RT_Monitor)
003f8de8 00000017 : buffer1.o28L (.rtdx_text:_RTDX_Buffer_Initialize)
003f8dff 00000014 : rtdx_mon.o28L (.rtdx_text:_datalog_isr)
003f8e13 0000000d : rtdx_mon.o28L (.rtdx_text:_RTDX_Final_RT_Monitor)
003f8e20 0000000c : buffer1.o28L (.rtdx_text:_RTDX_Buffer_Size)
003f8e2c 0000000c : rtdx_usr6.o28L (.rtdx_text:_RTDX_write)
003f8e38 00000009 : rtdx_mon.o28L (.rtdx_text:_Allow_EmuAccess)
003f8e41 00000006 : rtdx_mon.o28L (.rtdx_text:_Wait)
003f8e47 00000003 : rtdx_mon.o28L (.rtdx_text:_Disallow_EmuAccess)
.pinit 0 003f8e4a 00000006
003f8e4a 00000002 rtdxx.lib : buffer1.o28L (.pinit)
003f8e4c 00000002 : rtdx_mon.o28L (.pinit)
003f8e4e 00000002 --HOLE-- [fill = 0]
.reset 0 003f8e50 00000002
003f8e50 00000002 rts2800_ml.lib : boot.obj (.reset)
.stack 1 00000040 00000400
00000040 00000400 --HOLE-- [fill = beef]
.cinit 1 00000440 000000ac
00000440 0000002d rts2800_ml.lib : lowlev.obj (.cinit)
0000046d 0000002a : defs.obj (.cinit)
00000497 00000017 rtdxx.lib : buffer1.o28L (.cinit)
000004ae 0000000a : rtdx_buf.o28L (.cinit)
000004b8 0000000a rts2800_ml.lib : _lock.obj (.cinit)
000004c2 0000000a : exit.obj (.cinit)
000004cc 00000009 sect1_less2.obj (.cinit)
000004d5 00000008 rts2800_ml.lib : atexit.obj (.cinit)
000004dd 00000005 : sinit.obj (.cinit)
000004e2 00000004 : fopen.obj (.cinit)
000004e6 00000004 : memory.obj (.cinit)
000004ea 00000002 --HOLE-- [fill = 0]
.bss 1 00008000 00000000
.ebss 1 00008000 00000448
00008000 00000160 rts2800_ml.lib : defs.obj (.ebss) [fill = beef]
00008160 00000008 : memory.obj (.ebss) [fill = beef]
00008168 00000006 rtdxx.lib : buffer1.o28L (.ebss) [fill = beef]
0000816e 00000006 sect1_less2.obj (.ebss) [fill = beef]
00008174 00000004 rts2800_ml.lib : _lock.obj (.ebss) [fill = beef]
00008178 00000004 : exit.obj (.ebss) [fill = beef]
0000817c 00000002 : sinit.obj (.ebss) [fill = beef]
0000817e 00000001 : fopen.obj (.ebss) [fill = beef]
0000817f 00000001 --HOLE-- [fill = beef]
00008180 00000108 : trgdrv.obj (.ebss) [fill = beef]
00008288 00000038 --HOLE-- [fill = beef]
000082c0 00000100 : atexit.obj (.ebss) [fill = beef]
000083c0 00000088 : lowlev.obj (.ebss) [fill = beef]
.data 1 00008000 00000000
.rtdx_data
* 1 00008448 00000278
00008448 00000010 rtdxx.lib : buffer1.o28L (.rtdx_data) [fill = beeb]
00008458 0000000e : rtdx_mon.o28L (.rtdx_data) [fill = beeb]
00008466 0000001a --HOLE-- [fill = beeb]
00008480 00000240 : rtdx_buf.o28L (.rtdx_data) [fill = beeb]
.sysmem 1 000086c0 00000200
000086c0 00000200 --HOLE-- [fill = beef]
.cio 1 000088c0 00000120
000088c0 00000120 rts2800_ml.lib : ankmsg.obj (.cio) [fill = beec]
.econst 1 000089e0 00000052
000089e0 0000002f sect1_less2.obj (.econst:.string)
00008a0f 00000001 --HOLE-- [fill = 0]
00008a10 00000012 rtdxx.lib : rtdx_mon.o28L (.econst)
00008a22 0000000a sect1_less2.obj (.econst:_$P$T0$1)
00008a2c 00000004 rtdxx.lib : buffer1.o28L (.econst)
00008a30 00000002 rts2800_ml.lib : fputs.obj (.econst:.string)