ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
24 ноября
816909
abivan (16.02.2018 12:37, просмотров: 601)
как добраться да секции .pbss(persistant) в XC32.  задача реализовать ф-ии persist_check и persist_validate, которые были в библиотеке PICC18STD. там это решалось определением в глубинах библиотек переменных extern persistent char _Lnvram[], _Hnvram[]; _Lnvram - указывала на начало секции _Hnvram - на ее конец вот и вопрос как получить адрес секции pbss и ее размер. extern persistent char _Lnvram[], _Hnvram[]; static persistent long magic; static persistent unsigned char checksum; #define MAGIC 0x1B25C687 void persist_validate(void) { register persistent char *cp; register char c; magic = MAGIC; checksum = 0; for (c = 0, cp = _Lnvram; cp != _Hnvram;) c += *cp++; checksum = -c; } int persist_check(int flag) { register persistent char *cp; register char c; if (magic == MAGIC) { for (c = 0, cp = _Lnvram; cp != _Hnvram;) c += *cp++; if (c == 0) return 1; } if (flag) { for (cp = _Lnvram; cp != _Hnvram;) *cp++ = 0; persist_validate(); } return 0; }