Forum: Mikrocontroller und Digitale Elektronik AVR32 User Page Flash auslesen Error (AT32UC3C)


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von save_jeff (Gast)


Lesenswert?

Hi,

ich versuche grade die User Page zu benutzen über die flashc Bibliothek 
und ich bekomme immer eine Exception wenn ich nicht vorher in der main 
einmal einen memcpy ausführe.

zb.:
1
//uint32_t xx = 0;
2
//flashc_memcpy(AVR32_FLASHC_USER_PAGE + (16 * 4), &xx, 4,true);

 Führe ich den momcpy in einer subfunktion auf dann gibt es die selbe 
Exception
1
.org  0x008
2
  // Bus Error Data Fetch.
3
_handle_Bus_Error_Data_Fetch:
4
  rjmp $

hier ein beispielcode
1
void flash_write(uint16_t id, const uint32_t val)
2
{
3
  //while(!flashc_is_ready()) {}
4
  flashc_memcpy(AVR32_FLASHC_USER_PAGE + (id * 4), &val, sizeof(uint32_t), true);
5
}
6
7
uint32_t flash_read(uint16_t id)
8
{
9
  const unsigned volatile char *src = (unsigned char*) (AVR32_FLASHC_USER_PAGE_ADDRESS + (id * 4)); 
10
  volatile uint32_t* res;
11
  while(!flashc_is_ready()) {}
12
  memcpy32(res, src, 1);
13
  return *res;
14
}
15
16
int main (void)
17
{
18
19
//hiermit funktioniert der Code
20
//uint32_t xx = 0;
21
//flashc_memcpy(AVR32_FLASHC_USER_PAGE + (16 * 4), &xx, 4,true);
22
    
23
//hiermit funktioniert der Code nicht
24
uint32_t xx = 0;
25
flash_write(16, xx);
26
27
//Code
28
volatile uint32_t a = 0;
29
volatile uint32_t b = 0;
30
a = flash_read(0); //beim aufruf hier tritt der fehler auf
31
b = flash_read(1);
32
flash_write(0, b);
33
flash_write(1, a);



Das erscheint mit alles etwas unlogisch. ich könnte mir ja erklären dass 
ich vorher mit der memcpy funktion flags setze oder die seite buffere 
oder so, aber warum funktioniert dass dann nicht in einer subfunktion.

wäre echt cool wenn mir jm. sagen könnte wie ich den falsch richtig 
auslese

Vg. Jeff

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]
  • [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.