Перейти к содержанию
    

Как в ИАР задать пкременную в eeprom

объявляю так

#pragma location=0x0100

const __eeprom unsigned char Zone1 = 10;

 

а как получить данные для прошивки eeproma?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

объявляю так

#pragma location=0x0100

const __eeprom unsigned char Zone1 = 10;

 

а как получить данные для прошивки eeproma?

Посмтрите описание на прогу $\IAR\avr\bin\postlink.exe

Сама дока лежит здесь $\IAR\avr\doc\postlink.htm

Обратите еще внимание на $\IAR\avr\bin\postlink.bat

Это вам поможет

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хороший ответ для знающих инглиш на хорошем уровне, но не читавших доки по иару.

Прошу объяснить для плохо знающего английский (для меня).

Еще вопрос Пони и Аврил по разному работают с hex? Т.е. где они ожидают найти данные для еепрома? У аврила можно отдельно подключить прошивку еепрома, а единым файлом не поймет?

 

Начел совет выставить интел расширеный и добавить в экстраопции -M(XDATA)0-_..X_EEPROM_END=(_..X_FLASH_END+1).

Что то не получилось.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

объявляю так

#pragma location=0x0100

const __eeprom unsigned char Zone1 = 10;

 

а как получить данные для прошивки eeproma?

Посмтрите описание на прогу $\IAR\avr\bin\postlink.exe

Сама дока лежит здесь $\IAR\avr\doc\postlink.htm

Обратите еще внимание на $\IAR\avr\bin\postlink.bat

Это вам поможет

Postlink уже давно obsolete. Все разруливается через опции линкера. Подробнее не скажу, копаться надо, давно было, все уже забыл. :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

чего у меня получилось:

если задать так

#pragma location=0x0100

const __eeprom unsigned char Zone1 = 10;

, то это константа по заданному сной адресу.

а если так

__eeprom unsigned char Zone1=100;

, то это переменная с заданным значением где то в еепром.

 

но сейчас ругается

Error[e133]: The output format intel-extended cannot handle multiple address spaces. Use format variants (-y -O) to specify which address space is wanted

 

пробовал в экстра опциях

-Ointel-extended,(CODE)=%PROJ_NAME%.hex

-Ointel-extended,(XDATA)=ee_%PROJ_NAME%.dat

не помогает.

или все правильно, а глючит иар на имеено этом проекте?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

выставил в debug info и все пошло

 

А создать переменную по заданному адресу никак?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

выставил в debug info и все пошло

 

А создать переменную по заданному адресу никак?

-we133=i
-Ointel-extended,(CODE)=$PROJ_DIR$\rxd8535.hex
-Ointel-extended,(XDATA)=$PROJ_DIR$\ee_rxd8535.hex

Это по линковке...

volatile __eeprom char e_stupVN  @0x17 = 0x90;

Это по адресу

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ya vose ne ispolziyu iar dlya eeprom hex'a. Sdelal svoy initialayzer . On rabotayet s simvolami , mozno ukazivat adresa v eeprome stringi i vse tomu podobnoe - programma preobrazovivaet ix v intel format .A vixodnoy file ya potom zapisivayu programmatorom. Naverno bilo len razboratsya v IAR'e )).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

выставил в debug info и все пошло

 

А создать переменную по заданному адресу никак?

 

 

Я у себя в IAR(4.11A) поступаю следующим образом:

#pragma location=0x00

__eeprom unsigned long BOOT_FLAG=0xХХХХХХХХ;

#pragma location=0x04

__eeprom unsigned long APP_SECT_CRC1=0xХХХХХХХХ;

 

ДЛЯ ЛИНКЕРА:

 

выходной формат:

debug information for C-SPY

 

в экстра опшинсах линкера:

-Ointel-extended,(CODE)=$PROJ_DIR$\Release\Exe\code.hex

-Ointel-extended,(XDATA)=$PROJ_DIR$\Release\Exe\eeprom.eep

 

В результате он нормально генерит код в code.hex и данные вида 0xXXXXXXXX

в eeprom.eep. Дальше через Image Craft или CodeVision заливаю оба файла и все путем!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

делал так:

#pragma location=0x10

__eeprom unsigned long S_nombe=0xFFFFFFFF;//íîìåð ïðèáîðà

 

а он мне ошибку

 

выходной формат: debug information

в экстра опшинсах линкера прописал что нужно

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

делал так:

#pragma location=0x10

__eeprom unsigned long S_nombe=0xFFFFFFFF;//íîìåð ïðèáîðà

 

а он мне ошибку

 

выходной формат: debug information

в экстра опшинсах линкера прописал что нужно

 

 

Очень странно, т.к. такая ошибка возникает, если кроме Output файлов, указанных в Extra Otions, для Linker на вкладке Output выбран формат intel-extended, а не debug information for C-SPY. И тогда линкер не может в один файл записать код и данные eeprom -> (Error[e133]: The output format INTEL-EXTENDED cannot handle multiple address spaces).

 

Если на вкладке линкера выбран debug information for C-SPY, а IAR выдает такую ошибку, то может быть компилятор и глючит, но я в таких ситуациях потом всегда находил где-то свой ляп и выяснял, что сам сглючил :smile3046:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...