This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

RTDX via eZdsp with 28335 MC

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)

 

  • I found the (very simple) solution of the prolem. I used the dual-mapped memory ranges, i.e., the low AND the high memory range L0-L3, for data and program sections. Thus, program code in low memory range was overwritten by data objects that were allocated to high memory ranges during program execution. To solve the issue,I only had to change in the link-step command file the sections for data and program code to fit in low memory range.