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.

TMS320F280037C: FLASH api integration with driverlib and bit field libraries

Part Number: TMS320F280037C
Other Parts Discussed in Thread: C2000WARE, SYSBIOS

Hello,

I am trying to integrate the flash API into our project that alreaqday contains driverlib libraries and bit field programming libraries. I came accross a strange problem that I do not know how to proceed to solve it. The error is as follows:

The compiler output is as follows:

>> Compilation failure
Sys/subdir_rules.mk:9: recipe for target 'Sys/FlashMgr.obj' failed
"C:\ti\c2000\C2000Ware_MotorControl_SDK_4_00_00_00\c2000ware\device_support\f28003x\headers\include\f28003x_sysctrl.h", line 484: error #41: expected an identifier
"C:\ti\c2000\C2000Ware_MotorControl_SDK_4_00_00_00\c2000ware\device_support\f28003x\headers\include\f28003x_sysctrl.h", line 484: error #80: expected a type specifier
"C:\ti\c2000\C2000Ware_MotorControl_SDK_4_00_00_00\c2000ware\device_support\f28003x\headers\include\f28003x_sysctrl.h", line 484: error #170: a function type is not allowed here
"C:\ti\c2000\C2000Ware_MotorControl_SDK_4_00_00_00\c2000ware\device_support\f28003x\headers\include\f28003x_sysctrl.h", line 724: error #41: expected an identifier
"C:\ti\c2000\C2000Ware_MotorControl_SDK_4_00_00_00\c2000ware\device_support\f28003x\headers\include\f28003x_sysctrl.h", line 724: error #80: expected a type specifier
"C:\ti\c2000\C2000Ware_MotorControl_SDK_4_00_00_00\c2000ware\device_support\f28003x\headers\include\f28003x_sysctrl.h", line 724: error #170: a function type is not allowed here
"C:\Git_work\FW_MotorController\Development\Motor Controller\Sys/Inc/SVM.h", line 34: warning #303-D: typedef name has already been declared (with same type)
"..\Sys\Inc\Controller.h", line 132: warning #303-D: typedef name has already been declared (with same type)
"..\Sys\Inc\ADCMgr.h", line 138: warning #303-D: typedef name has already been declared (with same type)
"../Sys/FlashMgr.c", line 17: warning #1181-D: #warning directive: "Plantear mover al .h"
"../Sys/FlashMgr.c", line 27: warning #1181-D: #warning directive: "Hacer que peticion de lectura sea comprobando el estado de flash por si no está escribiendo ni en error"
"../Sys/FlashMgr.c", line 30: warning #1181-D: #warning directive: "Por ahora no se ha movido a ram las variables que se escribiran en flash porque a priori no hace falta, se escribirá dire tamente en un sector que no se usa seguro"
"../Sys/FlashMgr.c", line 31: warning #1181-D: #warning directive: "Meto las variables en Sector 0 bank 1. TODO reservar esas direcciones en el debugger"
"../Sys/FlashMgr.c", line 32: warning #1181-D: #warning directive: "Cambiar variables de error example por unified errorReaction y elegir un color de LED"
"../Sys/FlashMgr.c", line 66: warning #1181-D: #warning directive: "Plantear mover variables a RAM"
"../Sys/FlashMgr.c", line 116: warning #1181-D: #warning directive: "Pensar en cómo se gestionará el dato para leer. Dejarlo en estado de que esta ocupado la flash escribiendo y que espere el maestro"
"../Sys/FlashMgr.c", line 159: warning #1181-D: #warning directive: "Se podría mejorar usando una cola de conflags para cada mensaje, esto sirve para aprovechar las escrituras de flash ordenando las peticiones de flash según la direccion que queires atacar para que de un bucle elmines la mayoria de peticiones posibles. Esto es util para casos donde se escriben muchas veces en flash, coasa que dudo que sea util ahroa mismo"
"../Sys/FlashMgr.c", line 185: warning #1181-D: #warning directive: "Añadir token aqui"
"../Sys/FlashMgr.c", line 243: warning #1181-D: #warning directive: "Reiniciar en unifiedErrorRecovery"
"../Sys/FlashMgr.c", line 339: warning #1181-D: #warning directive: "Añadir funcion de check de si está escrita la dirección de flash para retornar algo y que actue en consecuencia"
"../Sys/FlashMgr.c", line 355: warning #1181-D: #warning directive: "Para hacer lectrura de los datos: dataLow = *(uint64 *)(u32Index);"
6 errors detected in the compilation of "../Sys/FlashMgr.c".
gmake: *** [Sys/FlashMgr.obj] Error 1

The Sys/FlashMgr is the .c file that uses FLASHAPI libraries. The error appears in a file that is from the c2000 installation which are not modified at all, I do not know how it is posible to obtain that error. I get these errors when i include the file F021_F28003x_C28x.h.

The .cmd I am using is the following:

MEMORY
{
   BEGIN               : origin = 0x00080000, length = 0x00000002
   BOOT_RSVD        : origin = 0x00000002, length = 0x00000126

   RAMM0               : origin = 0x00000128, length = 0x000002D8
   RAMM1            : origin = 0x00000400, length = 0x00000380     /* on-chip RAM block M1 */
   BOOT_RSVD_SYSBIOS: origin = 0x00000780, length = 0x00000080

/* RAMLS0           : origin = 0x00008000, length = 0x00000800
   RAMLS1           : origin = 0x00008800, length = 0x00000800
   RAMLS2           : origin = 0x00009000, length = 0x00000800
   RAMLS3           : origin = 0x00009800, length = 0x00000800
   RAMLS4           : origin = 0x0000A000, length = 0x00000800 */
   RAMLS04          : origin = 0x00008000, length = 0x00002800
   RAMLS5           : origin = 0x0000A800, length = 0x00000800
   RAMLS6           : origin = 0x0000B000, length = 0x00000800
   RAMLS7           : origin = 0x0000B800, length = 0x00000800
   
   RAMGS0           : origin = 0x0000C000, length = 0x00001000
   RAMGS1           : origin = 0x0000D000, length = 0x00001000
   RAMGS2           : origin = 0x0000E000, length = 0x00001000
   RAMGS3           : origin = 0x0000F000, length = 0x00001000

   BOOTROM          : origin = 0x003F8000, length = 0x00007FC0
   SECURE_ROM       : origin = 0x003F2000, length = 0x00006000

   RESET            : origin = 0x003FFFC0, length = 0x00000002

   /* Flash sectors */
   /* BANK 0 */
   FLASH_BANK0_SEC0  : origin = 0x080002, length = 0x000FFE
   FLASH_BANK0_SEC1  : origin = 0x081000, length = 0x001000
   FLASH_BANK0_SEC2  : origin = 0x082000, length = 0x001000
   FLASH_BANK0_SEC3  : origin = 0x083000, length = 0x001000
   FLASH_BANK0_SEC4  : origin = 0x084000, length = 0x001000
   FLASH_BANK0_SEC5  : origin = 0x085000, length = 0x001000
   FLASH_BANK0_SEC6  : origin = 0x086000, length = 0x001000
   FLASH_BANK0_SEC7  : origin = 0x087000, length = 0x001000
   FLASH_BANK0_SEC8  : origin = 0x088000, length = 0x001000
   FLASH_BANK0_SEC9  : origin = 0x089000, length = 0x001000
   FLASH_BANK0_SEC10 : origin = 0x08A000, length = 0x001000
   FLASH_BANK0_SEC11 : origin = 0x08B000, length = 0x001000
   FLASH_BANK0_SEC12 : origin = 0x08C000, length = 0x001000
   FLASH_BANK0_SEC13 : origin = 0x08D000, length = 0x001000
   FLASH_BANK0_SEC14 : origin = 0x08E000, length = 0x001000
   FLASH_BANK0_SEC15 : origin = 0x08F000, length = 0x001000

   /* BANK 1 */
   FLASH_BANK1_SEC0  : origin = 0x090000, length = 0x001000
   FLASH_BANK1_SEC1  : origin = 0x091000, length = 0x001000
   FLASH_BANK1_SEC2  : origin = 0x092000, length = 0x001000
   FLASH_BANK1_SEC3  : origin = 0x093000, length = 0x001000
   FLASH_BANK1_SEC4  : origin = 0x094000, length = 0x001000
   FLASH_BANK1_SEC5_6  : origin = 0x095000, length = 0x002000
   //FLASH_BANK1_SEC5  : origin = 0x095000, length = 0x001000
   //FLASH_BANK1_SEC6  : origin = 0x096000, length = 0x001000
   FLASH_BANK1_SEC7  : origin = 0x097000, length = 0x001000
   FLASH_BANK1_SEC8  : origin = 0x098000, length = 0x001000
   FLASH_BANK1_SEC9  : origin = 0x099000, length = 0x001000
   FLASH_BANK1_SEC10 : origin = 0x09A000, length = 0x001000
   FLASH_BANK1_SEC11 : origin = 0x09B000, length = 0x001000
   FLASH_BANK1_SEC12 : origin = 0x09C000, length = 0x001000
   FLASH_BANK1_SEC13 : origin = 0x09D000, length = 0x001000
   FLASH_BANK1_SEC14 : origin = 0x09E000, length = 0x001000
   FLASH_BANK1_SEC15 : origin = 0x09F000, length = 0x001000

  /* BANK 2 */
   FLASH_BANK2_SEC0  : origin = 0x0A0000, length = 0x001000
   FLASH_BANK2_SEC1  : origin = 0x0A1000, length = 0x001000
   FLASH_BANK2_SEC2  : origin = 0x0A2000, length = 0x001000
   FLASH_BANK2_SEC3  : origin = 0x0A3000, length = 0x001000
   FLASH_BANK2_SEC4  : origin = 0x0A4000, length = 0x001000
   FLASH_BANK2_SEC5  : origin = 0x0A5000, length = 0x001000
   FLASH_BANK2_SEC6  : origin = 0x0A6000, length = 0x001000
   FLASH_BANK2_SEC7  : origin = 0x0A7000, length = 0x001000
   FLASH_BANK2_SEC8  : origin = 0x0A8000, length = 0x001000
   FLASH_BANK2_SEC9  : origin = 0x0A9000, length = 0x001000
   FLASH_BANK2_SEC10 : origin = 0x0AA000, length = 0x001000
   FLASH_BANK2_SEC11 : origin = 0x0AB000, length = 0x001000
   FLASH_BANK2_SEC12 : origin = 0x0AC000, length = 0x001000
   FLASH_BANK2_SEC13 : origin = 0x0AD000, length = 0x001000
   FLASH_BANK2_SEC14 : origin = 0x0AE000, length = 0x001000
   FLASH_BANK2_SEC15 : origin = 0x0AF000, length = 0x001000


}


SECTIONS
{
   codestart        : > BEGIN, ALIGN(8)
   .text            : >> FLASH_BANK0_SEC2 | FLASH_BANK0_SEC3 | FLASH_BANK0_SEC4 | FLASH_BANK0_SEC5 | FLASH_BANK0_SEC6 | FLASH_BANK0_SEC7 | FLASH_BANK0_SEC8,   ALIGN(8)
   .cinit           : > FLASH_BANK0_SEC1,  ALIGN(8)
   .switch          : > FLASH_BANK0_SEC1,  ALIGN(8)
   .reset           : > RESET,                  TYPE = DSECT /* not used, */

   .stack           : > RAMM1

#if defined(__TI_EABI__)
   .init_array      : > FLASH_BANK0_SEC1,  ALIGN(8)
   .bss             : > RAMLS5
   .bss:output      : > RAMLS04
   .bss:cio         : > RAMLS04
   .data            : > RAMLS5
   .sysmem          : > RAMLS5
   .const           : > FLASH_BANK1_SEC5_6,  ALIGN(8)
#else
   .pinit           : > FLASH_BANK0_SEC1,  ALIGN(8)
   .ebss            : >> RAMLS5 | RAMLS6
   .esysmem         : > RAMLS5
   .cio             : > RAMLS04
   .econst          : > FLASH_BANK0_SEC9,  ALIGN(8)
#endif

    ramgs0 : > RAMGS0
    ramgs1 : > RAMGS0

    /*  Allocate IQ math areas: */
   IQmath           : > FLASH_BANK0_SEC1, ALIGN(8)
   IQmathTables     : > FLASH_BANK0_SEC2, ALIGN(8)

 GROUP
   {
       .TI.ramfunc
       { -l FAPI_F28003x_COFF_v1.58.01.lib}

   }  LOAD = FLASH_BANK0_SEC1,
      RUN = RAMLS04,
      LOAD_START(_RamfuncsLoadStart),
      LOAD_SIZE(_RamfuncsLoadSize),
      LOAD_END(_RamfuncsLoadEnd),
      RUN_START(_RamfuncsRunStart),
      RUN_SIZE(_RamfuncsRunSize),
      RUN_END(_RamfuncsRunEnd),
      ALIGN(8)

    /*  TBD las variables que se usaran */

    DataBufferSection : > RAMM1, ALIGN(8)

}

The include options for libraries and linker:

Finally, I included the .map resulting from this ocmpilation.

Regards,

David