Forum: Mikrocontroller und Digitale Elektronik STM32 eigenen Speicher einlesen


von har (Gast)


Lesenswert?

Liebes Forum,

ich benötige Hilfe, weil ich folgendes erreichen möchte:
Ein Mikrocontroller (STM32) soll seinen eigene Speicher (Flash memory) 
auslesen und diese Programmier-Daten an einen weiteren Mikrocontroller 
weiter geben.

Wie programmiere ich, dass ein Mikrocontroller Daten aus seinem eigenen 
Flash ausliest?
Vielen Dank im Voraus!
LG

von Mampf F. (mampf) Benutzerseite


Lesenswert?

har schrieb:
> Wie programmiere ich, dass ein Mikrocontroller Daten aus seinem eigenen
> Flash ausliest?

In C?

so:

uint32_t data = *((uint32_t*) 0x08000000);

Flash, SRAM, CCMRAM, ext. SDRAM, ext. SRAM, ... sind alle in einem 
4GB-Speicherbereich eingebunden.

Du musst nur kucken, wo der Flash ist und wie groß er ist.

von Ralph S. (jjflash)


Lesenswert?

Mampf F. schrieb:
> uint32_t data = *((uint32_t*) 0x08000000);

Da war jemand schneller als ich, ich hab das gerade ausprobiert (und 
codiert):
1
void sendbyte(uint8_t ch)
2
{
3
  // hier muss die Sendefunktion implementiert werden, an
4
  // die ein Byte gesendet wird
5
}
6
7
void sendownflash(void)
8
{
9
  uint32_t  *flashmem = (uint32_t*)0x8000000;       // einen Zeiger auf die Flashspeicheradresse setzen
10
                                                    // bei STM32 IMHO ist das eben 0x8000000
11
  uint8_t   b;
12
  int       adr;
13
  int       fl_len = 0xffff;                        // 64 kByte
14
15
  for (adr= 0; adr< fl_len+1; adr++)
16
  {
17
     b= (*flashmem >> 24) & 0xff;
18
     sendbyte(b);
19
     b= (*flashmem >> 16) & 0xff;
20
     sendbyte(b);
21
     b= (*flashmem >> 8) & 0xff;
22
     sendbyte(b);
23
     b= *flashmem & 0xff ;
24
     sendbyte(b);
25
     flashmem++;
26
  }
27
}

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.