PIC24 a dsPIC ukladani konstant do flash

Tomas Chvatal tchvatal na fordiag.cz
Pondělí Prosinec 22 12:16:23 CET 2014


Zdravim,

pisu si vlastni verzi bootloaderu a rad bych mel nekde v pameti flash
zapsane informace o aktualni verzi firmware/aplikace
kterou by mohl bootloader precist a poslat do PC.

V kodu aplikace mam pole:
typedef const struct {
 const volatile char text[4];
 const volatile uint16_t sign_version[2];
 const volatile uint8_t sign_for_bootloader;
 const volatile uint8_t app_version;
 const volatile uint8_t app_subversion;
} strapp_sig;

const volatile __attribute__ ((space(prog),section ("app_version"))) 
strapp_sig app_signature={
 "AHOJ",
 {0x0102,0x0304},
 0x45,
 0x89,
 0x90
};
(+ v linker scriptu mam zalozenou app_version sekci na pevne dane adrese ve 
flash)

Data se zapisi do flash ok, jen se z flash vyuzivaji vzdy jen 2 byty namisto 
vsech 3.

Jestli tomu dobre rozumim, tak architektura dspic ma programovou pamet po 3 
bytech
(respektive 4, ale jeden byte vzdy ignorovany)
Compiler mi konstanty rozlozi a zapise vzdy pouze do spodnich dvou bytu 
programove pameti
a 3. byte ve flash naplni vzdy 0x00.
Nasel jsem attribut fillupper(0xXY) kde mohu tuto hodnotu zmenit, ale 
nenasel jsem moznost
rict compileru aby tento byte vyuzival normalne k ukladani konstant.

Lze to nejak ?

Diky predem.
s přáním hezkého dne / Best regards
Tomáš Chvátal
tchvatal na fordiag.cz



Další informace o konferenci Hw-list