реклама на сайте
подробности

 
 
> Инициализация EEPROM в WinAVR
megaboy
сообщение Sep 17 2010, 05:50
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 34
Регистрация: 30-10-07
Пользователь №: 31 885



Вопрос, собственно, как выключить инициализацию eeprom нулями по умолчанию. Файл *.eep содержит нули
для объявленных переменных eeprom, а нужны значения 0xFF.
Попробывал в скрипте линкера добавить 0xFF в качестве заполнения секции, но это ничего не дало:
Код
  .eeprom  :
  {
    *(.eeprom*)
     __eeprom_end = .;
  }  > eeprom =0xFF

Собственно ранее в файле программы делал так:
Код
struct EEDATA eeprom eep =
{
  .sn = {0xFF, 0xFF, 0xFF, 0xFF},
  .cfg.apn = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
                   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
         0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
  .cfg.name = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
                      0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
            0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
            0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
  .cfg.pass = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
           0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
           0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
           0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
};

Но не кашерно, так нужно постоянно отслеживать изменения в размерах элементов данных.
Может кто уже решил эту проблему?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
megaboy
сообщение Sep 17 2010, 07:45
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 34
Регистрация: 30-10-07
Пользователь №: 31 885



Попробовал так, если добавить только первые две строки, то в первый байт хекса записывает 0xFF,
но остальные все равно нулевые:
Код
  .eeprom  :
  {
      FILL(0xFF)
      BYTE(0xFF)
    *(.eeprom*)
     __eeprom_end = .;
  }  > eeprom

А если так:
Код
  .eeprom  :
  {
      FILL(0xFF)
      BYTE(0xFF)
    . = . + LENGTH(eeprom)-1;
    *(.eeprom*)
     __eeprom_end = .;
  }  > eeprom

то линкер выдает ошибку:
c:/winavr-20080512/bin/../lib/gcc/avr/4.3.0/../../../../avr/bin/ld.exe: region eeprom is full (WL_hw10.elf section .eeprom)
c:/winavr-20080512/bin/../lib/gcc/avr/4.3.0/../../../../avr/bin/ld.exe: region eeprom is full (WL_hw10.elf section .eeprom)
make: *** [WL_hw10.elf] Error 1

Сообщение отредактировал megaboy - Sep 17 2010, 07:46
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 16:57
Рейтинг@Mail.ru


Страница сгенерированна за 0.01385 секунд с 7
ELECTRONIX ©2004-2016