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

 
 
> __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
Сергей Борщ
сообщение Nov 6 2008, 07:48
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Dog Pawlowa @ Nov 5 2008, 20:51) *
Сменил версию IAR.
Цитата(Dog Pawlowa @ Nov 6 2008, 09:35) *
Смотрю свой xcl файл, вытащенный пару лет назад из неизвестно какой версии:
-Z(DATA)NEAR_N=58-6FFF
То есть компилятор разместил туда, куда ему сказали.
А как же оно работало до смены версии компилятора?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Nov 6 2008, 08:24
Сообщение #5


Гуру
******

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



Цитата(Сергей Борщ @ Nov 6 2008, 11:48) *
А как же оно работало до смены версии компилятора?

Загадка. Сейчас смотрю другие проекты на М32 (тоже "рабочие") - там тоже эта строка есть.
Нужно ставить старые версии и проверять.
Или может SasaVitebsk объяснит.


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



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

 


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


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