16+
Среда
26 сентября
Вход |Карта сайта | |Upload |codebook | PARTS

 О смысле всего сущего 0xFF

 Средства и методы разработки

 Мобильная и беспроводная связь

 Блошиный рынок Объявления

caxapa

Микроконтроллеры ARM 

AVR PIC MSP PLD,FPGA,DSP 

Кибернетика Технологии 

Схемы, платы, компоненты 

Микроконтроллеры PIC

 
   Новая тема Правила Регистрация Поиск »» Архив
Вернуться в конференциюТопик полностью
abivan  (16.02.2018 12:37, просмотров: 174)
как добраться да секции .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;
}
Главная | Карта сайта | О проекте | Проекты | Файлообменник | Регистрация | Вебмастер | RSS
Лето 7527 от сотворения мира. При использовании материалов сайта ссылка на caxapу обязательна.
MMI © MMXVIII