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