www.mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP FlashAPI F2812


Autor: Franzi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich bin gerade dabei die FlashAPI von TI in mein Projekt einzubinden,
bekomme aber immer folgende Warnmeldung:

 warning: load address of uninitialized section Flash28_API ignored

Ich führe nur den ToggleTest der API aus und dieser läuft auch nicht auf 
10 kHz, wie vorgeschrieben, deswegen vermute ich das es mit der 
Fehlermeldung zusammenhängt. Mir ist aber unklar warum er die Adresse 
ignoriert.
Hier noch der SECTIONS-Teil aus meiner cmd-Datei.
   Flash28_API:
   {
        -lFlash2812_API_V210.lib(.econst) 
        -lFlash2812_API_V210.lib(.text)
   }               
                LOAD = FLASHD, 
                       RUN = RAML0, 
                       LOAD_START(_Flash28_API_LoadStart),
                       LOAD_END(_Flash28_API_LoadEnd),
                       RUN_START(_Flash28_API_RunStart),
                       PAGE = 0

Hat jemad eine Idee was da falsch sein könnte?

Autor: Micha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kannst/Darfst du das ganze Projekt hochladen, oder zumindest eine 
Minimalversion, bei der der Fehler noch auftritt?

Autor: Micha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Inkl. cmd-Dateien usw.

Autor: Franzi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hab das Projekt zum probieren auch schon ziemlich reduziert...

cmd
/* Linker command File for Memory Sections -> Flash RAM.. */
/* FN 30.03.2010 */

MEMORY
{
PAGE 0:    /* Program Memory */
           /* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE1 for data allocation */

   ZONE0       : origin = 0x002000, length = 0x002000     /* XINTF zone 0 */
   ZONE1       : origin = 0x004000, length = 0x002000     /* XINTF zone 1 */
   RAML0       : origin = 0x008000, length = 0x001000     /* on-chip RAM block L0 */
   RAML1       : origin = 0x009000, length = 0x001000     /* on-chip RAM block L1 */
   ZONE2       : origin = 0x080000, length = 0x080000     /* XINTF zone 2 */
   OTP         : origin = 0x3D7800, length = 0x000800     /* on-chip OTP */
   FLASHJ      : origin = 0x3D8000, length = 0x002000     /* on-chip FLASH */
   FLASHI      : origin = 0x3DA000, length = 0x002000     /* on-chip FLASH */
   FLASHH      : origin = 0x3DC000, length = 0x004000     /* on-chip FLASH */
   FLASHG      : origin = 0x3E0000, length = 0x004000     /* on-chip FLASH */
   FLASHF      : origin = 0x3E4000, length = 0x004000     /* on-chip FLASH */
   FLASHE      : origin = 0x3E8000, length = 0x004000     /* on-chip FLASH */
   FLASHD      : origin = 0x3EC000, length = 0x004000     /* on-chip FLASH */
   FLASHC      : origin = 0x3F0000, length = 0x004000     /* on-chip FLASH */
   FLASHB      : origin = 0x3F4000, length = 0x002000     /* on-chip FLASH */
   FLASHA      : origin = 0x3F6000, length = 0x001F80     /* on-chip FLASH */
   CSM_RSVD    : origin = 0x3F7F80, length = 0x000076     /* Part of FLASHA.  Program with all 0x0000 when CSM is in use. */
   BEGIN       : origin = 0x3F7FF6, length = 0x000002     /* Part of FLASHA.  Used for "boot to Flash" bootloader mode. */
   CSM_PWL     : origin = 0x3F7FF8, length = 0x000008     /* Part of FLASHA.  CSM password locations in FLASHA */
/* ZONE7       : origin = 0x3FC000, length = 0x003FC0     /* XINTF zone 7 available if MP/MCn=1 */ 
   ROM         : origin = 0x3FF000, length = 0x000FC0     /* Boot ROM available if MP/MCn=0 */
   RESET       : origin = 0x3FFFC0, length = 0x000002     /* part of boot ROM (MP/MCn=0) or XINTF zone 7 (MP/MCn=1) */
   VECTORS     : origin = 0x3FFFC2, length = 0x00003E     /* part of boot ROM (MP/MCn=0) or XINTF zone 7 (MP/MCn=1) */

PAGE 1 :

   RAMM0       : origin = 0x000000, length = 0x000400     /* on-chip RAM block M0 */
   RAMM1       : origin = 0x000400, length = 0x000400     /* on-chip RAM block M1 */
   RAMH0       : origin = 0x3F8000, length = 0x002000     /* on-chip RAM block H0 */

   ZONE6       : origin = 0x100000, length = 0x080000     /* XINTF zone 6 */   

}


SECTIONS
{
 
   Flash28_API:
   {
        -lFlash2812_API_V210.lib(.econst) 
        -lFlash2812_API_V210.lib(.text)
   }                   LOAD = FLASHD, 
                       RUN = RAML0, 
                       LOAD_START(_Flash28_API_LoadStart),
                       LOAD_END(_Flash28_API_LoadEnd),
                       RUN_START(_Flash28_API_RunStart),
                       PAGE = 0
 
   /* Allocate program areas: */
   .cinit              : > FLASHA      PAGE = 0
   .pinit              : > FLASHA,     PAGE = 0
   .text               : > FLASHC      PAGE = 0

   codestart           : > BEGIN       PAGE = 0
   ramfuncs            : LOAD = FLASHD, 
                         RUN = RAML0, 
                         LOAD_START(_RamfuncsLoadStart),
                         LOAD_END(_RamfuncsLoadEnd),
                         RUN_START(_RamfuncsRunStart),
                         PAGE = 0

   csmpasswds          : > CSM_PWL     PAGE = 0
   csm_rsvd            : > CSM_RSVD    PAGE = 0
   
   /* Allocate uninitalized data sections: */
   .stack              : > RAMM0       PAGE = 1
   /* ebss = Daten-RAM*/
   .ebss               : > ZONE6       PAGE = 1
   .esysmem            : > RAMH0       PAGE = 1

   /* Initalized sections go in Flash */
   /* For SDFlash to program these, they must be allocated to page 0 */
   .econst             : > FLASHA      PAGE = 0
   .switch             : > FLASHA      PAGE = 0      

   /* Allocate IQ math areas: */
   IQmath              : > FLASHC      PAGE = 0                  /* Math Code */
   IQmathTables        : > ROM         PAGE = 0, TYPE = NOLOAD   /* Math Tables In ROM */

   /* .reset is a standard section used by the compiler.  It contains the */ 
   /* the address of the start of _c_int00 for C Code.   /*
   /* When using the boot ROM this section and the CPU vector */
   /* table is not needed.  Thus the default type is set here to  */
   /* DSECT  */ 
   .reset              : > RESET,      PAGE = 0, TYPE = DSECT
   vectors             : > VECTORS     PAGE = 0, TYPE = DSECT
   


}



main.c
#include "Flash281x_API_Config.h"
#include "Flash281x_API_Library.h"

// für ToggleTest

#define GPAMUX       (volatile Uint16*)0x000070C0   /* GPIO A mux control register */
#define GPATOGGLE    (volatile Uint16*)0x000070E3   /* GPIO A toggle register */
#define GPIOA0_PWM1_MASK      0x0001
#define WDKEY        (volatile Uint16*)0x00007025   /* Watchdog key register */
FLASH_ST EraseStatus;
FLASH_ST ProgStatus;
FLASH_ST VerifyStatus; 
void main(void)
{
   Uint16 i;


  if(SysCtrlRegs.PLLCR.all != 0x000A) 
    {
       EALLOW;
       SysCtrlRegs.PLLCR.all = 0x000A;
       
       // Wait for PLL to lock
       // Each time through this loop takes ~14 cycles
       // PLL Lock time is 131072 Cycles
       for(i= 0; i< 131072/14; i++){
           *WDKEY = 0x0055;
           *WDKEY = 0x00AA;
       }
       EDIS;
    }

    // Copy the Flash API functions to SARAM
    MemCopy(&Flash28_API_LoadStart, &Flash28_API_LoadEnd, &Flash28_API_RunStart);

    // We must also copy required user interface functions to RAM. 
    MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart);

  
   Flash_CPUScaleFactor = SCALE_FACTOR;
   
   Flash_CallbackPtr = 0;//&MyCallbackFunction; 
   
//   MyCallbackCounter = 0; // Increment this counter in the callback function
                                  
   
   // Jump to SARAM and call the Flash API functions
     Flash_ToggleTest(GPAMUX,GPATOGGLE,GPIOA0_PWM1_MASK);
}

Autor: Micha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kannst du alle benötigten Dateien zusammenpacken und als zip anhängen? 
Ich habe die Flash-API bei mir nicht installiert. Nutzt du CCS 3 oder 4?

Autor: Franzi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich arbeite mit CCS 3.3
Im Anhang die FlashAPI von TI und mein Projekt,
ist jetzt schon auf ziemlich wenig reduziert, aber den Fehler bekomm ich 
nicht weg :-(

Autor: Franzi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab den Fehler gefunden ;-)
Man muss die FlashAPI.lib bei den build-options mit in die link order 
List aufnehmen, das ist im Beispielprojekt von TI zwar auch nicht so 
drin,
aber dort ist die Ordnerstruktur auch anders.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.