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

 
 
> переменные __no_init в IAR 5.11, В начале main равно нулю.
Aleksandr Barano...
сообщение Jan 2 2011, 23:38
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 169
Регистрация: 31-08-05
Из: New York
Пользователь №: 8 118



Здравствуйте.
У меня IAR5.11, процессор STR912. Хочу, чтобы переменная в ОЗУ сохраняла значение после сброса.
Объявляю переменную:

__no_init int foo;

В начале функции main вывожу ее значение;

printf(" foo = %x", foo);

В одной из функций:

foo = 0x55;
printf(" And now foo = %x", foo);


и делаю сброс через WDT.
В начале foo = 0;
После присвоения перед сбросом foo = 0x55.
Я читал, что начиная с 5 версии создание специальных секций noinit не тербуется, а достаточно задать аттрибут __no_init.
Что делаю неправильно?
Спасибо.


--------------------
ASB
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
skripach
сообщение Jan 3 2011, 11:59
Сообщение #2


■ ■ ■ ■
*****

Группа: Свой
Сообщений: 1 100
Регистрация: 9-08-06
Пользователь №: 19 443



Цитата
все получилось без __no_init.

Хотелось бы всё таки с ним.


--------------------
Делай что должен и будь что будет.
Go to the top of the page
 
+Quote Post
Aleksandr Barano...
сообщение Jan 4 2011, 00:42
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 169
Регистрация: 31-08-05
Из: New York
Пользователь №: 8 118



Цитата(skripach @ Jan 3 2011, 09:59) *
Хотелось бы всё таки с ним.

Будем искать


--------------------
ASB
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Jan 4 2011, 04:33
Сообщение #4


Гуру
******

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



Цитата(Aleksandr Baranov @ Jan 4 2011, 07:42) *
Будем искать


Дык конфликтует pragma location и no_init.

Мне кажется, логика такова.
Без принудительного указания секции линкер в зависимости от наличия __no_init располагает переменную в инициализируемой или неинициализируемой секции (.noinit), которые создаются неявно в недрах линкера.
С принудительным указанием секции __no_init не работает, поскольку поверх действует указание для этой секции.

Т.е. почему не действует __no_init если указано location, понятно.

А вот почему не действует, если не указано - можно посмотреть в map-файле.


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



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

 


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


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