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

 
 
> __no_init в IAR AVR 511b, Не разобрался подробнее, но есть проблемы
Dog Pawlowa
сообщение Nov 5 2008, 17:51
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Сменил версию IAR.
Имеем - счетчик сбросов по wdt, с доступом по интерфейсу, перестал нормально записываться и считываться. Чтобы он нормально работал, он должен быть ессно, __no_init.
В проекте на М128 - нормально, в проекте на М32 - перестал работать.
Убираю __no_init - все нормально.
В причинах пока не разобрался, но если честно, задрал ИАР своими постоянными изменениями формата xcl - файла.
Если кто столкнулся, дайте знать. Спасибо.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SasaVitebsk
сообщение Nov 5 2008, 23:51
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(Dog Pawlowa @ Nov 5 2008, 20:51) *
Сменил версию IAR.
Имеем - счетчик сбросов по wdt, с доступом по интерфейсу, перестал нормально записываться и считываться. Чтобы он нормально работал, он должен быть ессно, __no_init.
В проекте на М128 - нормально, в проекте на М32 - перестал работать.
Убираю __no_init - все нормально.
В причинах пока не разобрался, но если честно, задрал ИАР своими постоянными изменениями формата xcl - файла.
Если кто столкнулся, дайте знать. Спасибо.

Я не заметил разницы кроме одной. Если __no_init применяешь к локальной переменной, то всё нормально по умолчанию проходит. А вот если к глобальной, то компилятор её переносит в сегмент NEAR_N. А по умолчанию часто он равен 0. ну правишь строчку типа
-Z(DATA)NEAR_Z,NEAR_I=_..X_SRAM_BASE-_..X_SRAM_END
на
-Z(DATA)NEAR_Z,NEAR_I,NEAR_N=_..X_SRAM_BASE-_..X_SRAM_END
и всё работает.

Или я вопрос неправильно понял?
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Nov 6 2008, 06:35
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(SasaVitebsk @ Nov 6 2008, 03:51) *
Или я вопрос неправильно понял?

Нет, вопрос понят правильно, спасибо за подсказку.
Переменная расположена по адресу 0x5a если _no_init, и 0x221, если инициализируется.
Смотрю свой xcl файл, вытащенный пару лет назад из неизвестно какой версии:
-Z(DATA)NEAR_N=58-6FFF
То есть компилятор разместил туда, куда ему сказали.
Вряд ли я такую бомбу сам придумал, скорее всего это стрельнула старая ошибка IAR.
Исправил на -Z(DATA)NEAR_N=60-85F, переменная попала наконец-то в ОЗУ, все работает.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 11th August 2025 - 21:48
Рейтинг@Mail.ru


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