32 Bit DSP und 16 Bit Flash

OP #3777170
Lesenswert?

Hi,

ich möchte ein paar Daten aus einem 32 Bit DSP über das EMIF Interface 
an ein 16 Bit Flash schreiben. Bei der Programmierung soll man aufpassen 
wie 32 Bit und 16 Bit angepasst werden. Mit folgendem Code möchte ich 
das Schreiben schaffen:
1
#define BASE_ADR 0x90000000
2
for (i = 0; i < BufferCnt; i++){
3
  *(Uint16 *)(BASE_ADR + Start_Adr + 4*i) = Data_For_Write;
4
  }

Die Frage ist, ob das 4*i oder 2*i sein sollte?

Senmeis
Gast #3777374
Lesenswert?

Moin,

> #define BASE_ADR 0x90000000
> for (i = 0; i < BufferCnt; i++){
>   *(Uint16 *)(BASE_ADR + Start_Adr + 4*i) = Data_For_Write;
>   }
>
> Die Frage ist, ob das 4*i oder 2*i sein sollte?

2*i, aber mein Vorschlag:
1
uint16_t *b = (uint16_t *) (BASE_ADR + StartAdr);
2
for (i = 0; i < BufferCnt; i++) {
3
    *b++ = data; // oder b[i] = data;
4
}

Das liest sich leichter, und der C-Compiler tut den Rest der 
Adressrechnung.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren