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.

TI F2806x Firmware and Instraspin

Genius 5910 points
Other Parts Discussed in Thread: CONTROLSUITE, MOTORWARE

I'm trying to use the TI F2806x Firmware on my instaspin motion demo.

My program compiled fine till I added some files from the TI Firmware, working code. no code added just  the files and tried to compile the program again.

If you look in F2806x_Device.h

you can select your target:

#define   DSP28_28069P     0
#define   DSP28_28069UP       0
#define   DSP28_28069PZ       0
#define   DSP28_28069UPZ   TARGET

There is not an option for the 28069M controller.

Maybe that isn't a problem but I got a lot of not found registers:

Description    Resource    Path    Location    Type
<a href="file:/c:/ti/ccsv6/tools/compiler/dmed/HTML/16008.html">#16008-D</a>  file    CremerServo             C/C++ Problem
unresolved symbol _XIntruptRegs, first referenced in C:/ti/controlSUITE/device_support/f2806x/v135/MWare/usblib/Debug/usblib.lib<f2806x_usbWrapper.obj>    CremerServo             C/C++ Problem
<a href="file:/c:/ti/ccsv6/tools/compiler/dmed/HTML/10234.html">#10234-D</a>  unresolved symbols remain    CremerServo             C/C++ Problem
unresolved symbol _PieVectTable, first referenced in C:/ti/controlSUITE/device_support/f2806x/v135/MWare/driverlib/Debug/driverlib.lib<interrupt.obj>    CremerServo             C/C++ Problem
unresolved symbol _SysCtrlRegs, first referenced in ./usbserial.obj    CremerServo             C/C++ Problem
unresolved symbol _GpioDataRegs, first referenced in C:/ti/controlSUITE/device_support/f2806x/v135/MWare/usblib/Debug/usblib.lib<f2806x_usbWrapper.obj>    CremerServo             C/C++ Problem
<a href="file:/c:/ti/ccsv6/tools/compiler/dmed/HTML/10099.html">#10099-D</a>      F28069M_ram_lnk.cmd    /CremerServo    line 119    C/C++ Problem
unresolved symbol _GpioCtrlRegs, first referenced in ./usbserial.obj    CremerServo             C/C++ Problem
unresolved symbol _PieCtrlRegs, first referenced in C:/ti/controlSUITE/device_support/f2806x/v135/MWare/driverlib/Debug/driverlib.lib<interrupt.obj>    CremerServo             C/C++ Problem
unresolved symbol _GpioIntRegs, first referenced in C:/ti/controlSUITE/device_support/f2806x/v135/MWare/usblib/Debug/usblib.lib<f2806x_usbWrapper.obj>    CremerServo             C/C++ Problem
unresolved symbol _DSP28x_usDelay, first referenced in ./CMD_LINE.obj    CremerServo             C/C++ Problem



 

  • I think you should not use the U version because it is for USB version. The errors are related to USB files.

    I think it is fine to use P version ( I am not sure which one that I use - P or PZ, and can not check it now because I am away of my work PC).

    Best regards,

    Maria

  • Thanks for the reply.

     I need the U/M  version . Because it is for a (virtual) USB  to serial console. So I can communicate with the controller via USB.  Without the Instaspin code it works fine.

  • Evs,

    I think part of the issue is that you are using code from ControlSuite to try and work with InstaSPIN-MOTION.  The example code for InstaSPIN-MOTION is provided as part of MotorWare.  I would recommend that you look at the example code there.

    If you need to use code from ControlSuite, many customers have been successful in porting code from ControlSuite to MotorWare.  But porting code the other direction I think would prove to be very difficult.

  • Adam, thanks for the reply.

    I need USB serial port interface.I didn't find that in Motorware.

    Example code in Motorware? I didn't find any examples( SPI,CAN and GPIO). Where do I have to look. I only find (low-level) drivers.

     I included the controlsuite demo files in the Motorware demo. And got a lot of error message. I really like documentation how it is set up. So I can understand what the problem is.  Special all of the "strange" linker problems. I have no clue  what the problem is.

    Please tell me more how to setup a Controlsuit project under Motorware.

     Thanks.

  • Evs,

    This is entirely possible.

    The unresolved symbol errors you are getting means that you have code in your project that is referring to certain variables (in this case variables from the controlSUITE header files), but the file that declares these variables isn't compiled with the project.

    Try adding the global variable defs file from the common/source directory of the device you are using in controlsuite to the project you are working on.

    BR,

  • Trey, thanks for the reply.

     Can you please be more specific what I have to include. I already included the  following:

    #include "DSP28x_Project.h"
    #include "inc/hw_ints.h"
    #include "inc/hw_memmap.h"
    #include "inc/hw_types.h"
    #include "driverlib/debug.h"
    #include "driverlib/interrupt.h"
    #include "driverlib/sysctl.h"
    #include "usblib/usblib.h"
    #include "usblib/usbcdc.h"
    #include "usblib/f2806x_usbWrapper.h"
    #include "usblib/device/usbdevice.h"
    #include "usblib/device/usbdcdc.h"
    #include "usb_serial_structs.h"
    #include <stdio.h>

     Maybe I missing something, but I copied all the files that my working Controlsuite example is using.

     I manually added the include search dirs in the project. I think that is the same.

     I also searched for _GpioCtrlRegs in Controlsuite  to know where it is defined. But no result.

  • Evs,

    Your includes look good. Try adding this file to your project:

    C:\ti\controlSUITE\device_support\f2806x\v136\F2806x_headers\source\F2806x_GlobalVariableDefs.c

    BR,

  • Trey, Thanks for the reply. That solves this problem.

     But new day more problems.

     Now I have 100+ of the following errors:

    Invoking: C2000 Linker'
    "c:/ti/ccsv6/tools/compiler/c2000_6.2.8/bin/cl2000" -v28 -ml -mt --cla_support=cla0 --float_support=fpu32 --vcu_support=vcu0 -O2 -g --define=FAST_ROM_V1p6 --define=QEP --diag_warning=225 --display_error_number -z -m"CremerServo.map" --heap_size=0x400 --stack_size=0x400 --warn_sections -i"c:/ti/ccsv6/tools/compiler/c2000_6.2.8/lib" -i"c:/ti/ccsv6/tools/compiler/c2000_6.2.8/include" --reread_libs --priority --disable_auto_rts --diag_suppress=16002 --xml_link_info="CremerServo_linkInfo.xml" --rom_model -o "CremerServo.out"  "I:/workspace/sw/modules/fast/lib/32b/f28x/f2806x/2806xRevB_FastSpinROMSymbols.lib" "I:/workspace/sw/modules/fast/lib/32b/f28x/f2806x/2806xRevB_IQmath_BootROMSymbols.lib" "I:/workspace/sw/modules/spintac/lib/32b/SpinTAC.lib" "I:/workspace/sw/modules/iqmath/lib/f28x/32b/IQmath.lib" "./CMD_LINE.obj" "./CodeStartBranch.obj" "./CremerServo.obj" "./F2806x_GlobalVariableDefs.obj" "./adc.obj" "./clarke.obj" "./clk.obj" "./cpu.obj" "./ctrlQEP.obj" "./enc.obj" "./filter_fo.obj" "./flash.obj" "./gpio.obj" "./hal.obj" "./ipark.obj" "./offset.obj" "./osc.obj" "./park.obj" "./pid.obj" "./pie.obj" "./pll.obj" "./pwm.obj" "./pwr.obj" "./qep.obj" "./slip.obj" "./spi.obj" "./svgen.obj" "./timer.obj" "./traj.obj" "./usDelay.obj" "./usb_serial_structs.obj" "./usbserial.obj" "./user.obj" "./wdog.obj" "C:/ti/controlSUITE/device_support/f2806x/v135/MWare/driverlib/Debug/driverlib.lib" "C:/ti/controlSUITE/device_support/f2806x/v135/MWare/usblib/Debug/usblib.lib" -l"libc.a"
    <Linking>
    error #16008-D: file
       "I:/workspace/sw/modules/fast/lib/32b/f28x/f2806x/2806xRevB_FastSpinROMSymbo
       ls.lib<TMS320x2806x_REVB_boot_rom_out_FD$$MPY_tmp.obj>" specifies ISA
       revision "C2800", which is not compatible with ISA revision "C28FPU32"
       specified in a previous file or on the command line
    error #16008-D: file
       "I:/workspace/sw/modules/fast/lib/32b/f28x/f2806x/2806xRevB_FastSpinROMSymbo
       ls.lib<TMS320x2806x_REVB_boot_rom_out_FD$$TOL_tmp.obj>" specifies ISA
       revision "C2800", which is not compatible with ISA revision "C2700"
       specified in a previous file or on the command line
    error #16008-D: file
       "I:/workspace/sw/modules/fast/lib/32b/f28x/f2806x/2806xRevB_FastSpinROMSymbo
       ls.lib<TMS320x2806x_REVB_boot_rom_out_FS$$DIV_tmp.obj>" specifies ISA
       revision "C2800", which is not compatible with ISA revision "C2700"
       specified in a previous file or on the command line
    error #16008-D: file
       "I:/workspace/sw/modules/fast/lib/32b/f28x/f2806x/2806xRevB_FastSpinROMSymbo
       ls.lib<TMS320x2806x_REVB_boot_rom_out_FS$$TOFD_tmp.obj>" specifies ISA
       revision "C2800", which is not compatible with ISA revision "C2700"
       specified in a previous file or on the command line

    I Manually linker the script: F28069M_ram_lnk.cmd. Because somehow it changed to 28069_RAM_lnk.cmd.  But no success.Someone any suggestion what the problem is.

    Thanks,

    edit: I checked that the TMS320S28069 is selected in CCS Gerneral:

     note: How do I copy the "makefile" from one project to an other?

  • Finally some results:

     This USB code generate all of those errors:

    unsigned long
    ControlHandler(void *pvCBData, unsigned long ulEvent, unsigned long ulMsgValue,
                   void *pvMsgData)
    {
        //
        // Which event was sent?
        //
        switch(ulEvent)
        {
            //
            // The host has connected.
            //
        case USB_EVENT_CONNECTED:
        {
            //
            // Flush the buffers.
            //
            USBBufferFlush(&g_sTxBuffer);
            USBBufferFlush(&g_sRxBuffer);
            break;
        }

        //
        // The host has disconnected.
        //
        case USB_EVENT_DISCONNECTED:
        {
            break;
        }

        //
        // Return the current serial communication parameters.
        //
        case USBD_CDC_EVENT_GET_LINE_CODING:
        {
    //        GetLineCoding(pvMsgData);
            break;
        }

        //
        // Set the current serial communication parameters.
        //
        case USBD_CDC_EVENT_SET_LINE_CODING:
        {
    //        SetLineCoding(pvMsgData);
            break;
        }

        //
        // Set the current serial communication parameters.
        //
        case USBD_CDC_EVENT_SET_CONTROL_LINE_STATE:
        {
            break;
        }

        //
        // Send a break condition on the serial line.
        //
        case USBD_CDC_EVENT_SEND_BREAK:
        {
                //        SendBreak(true);
            break;
        }

        //
        // Clear the break condition on the serial line.
        //
        case USBD_CDC_EVENT_CLEAR_BREAK:
        {
                    //        SendBreak(false);
          break;
        }

        //
        // Ignore SUSPEND and RESUME for now.
        //
        case USB_EVENT_SUSPEND:
        case USB_EVENT_RESUME:
        {
            break;
        }

        //
        // Other events can be safely ignored.
        //
        default:
        {
            break;
        }
        }

        return(0);
    }

    If I command this parts out. The code compiler with some warnings.

     If I command it in.

    I got a lot of errors:

     error #16008-D: file
       "C:/ti/controlSUITE/device_support/f2806x/v135/MWare/usblib/Debug/usblib.lib
       <usbringbuf.obj>" specifies ISA revision "C28FPU32", which is not compatible
       with ISA revision "C2700" specified in a previous file or on the command
       line
    error #16008-D: file
       "C:/ti/controlSUITE/device_support/f2806x/v135/MWare/driverlib/Debug/driverl
       ib.lib<interrupt.obj>" specifies ISA revision "C28FPU32", which is not
       compatible with ISA revision "C2700" specified in a previous file or on the
       command line

    The USBlib is compiled for FPU32 and not for softlib. Is there a USBLIb for softlib or how do I change proj_lab13C to FPU32.

     edit: Wow that is straightforward for every library there is a _fpu32 version.

    Why is there C2700 in the error message that is mega confusing.

  • Evs,

    When you link our object files together they all must be build with the same instruction set.  Given that you are using a F2806x part which has a floating point unit, I would recommend you compile everything for floating point or the C28FPU32 ISA.  You can change this in the project properties.  Look for the Processor Options page and make sure the setting in this page are consistent across all of the files your compiling together.  For a F2806x the best options are:

    Processor Version - 28

    Use Large Memory Model

    Unified Memory

    CLA Support - cla0

    VCU Support - vcu0

    BR,

  • Trey, Thanks for the reply.

     It took me almost a full day to find out what the real problem was.  The error message:  ISA revision "C2700" specified" Is not helping to find out what the real problem is.  That is a bit frustrating, lack of information.

     The problem was: that some library where compiled for FPU32 and the code for SOFTLIB.