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

 
 
> Как в кейле отключть zero-initialize для конкретной глобальной переменной?
Intel4004
сообщение Oct 20 2011, 01:57
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 48
Регистрация: 7-09-07
Из: Наб.Челны
Пользователь №: 30 364



Задача следующая: после ресета получить информацию из "прошлой жизни". Информация эта лежит в глобальных переменных.
Снять галочку NoInit в Options->Target (т.е. отключить zero-init для всей памяти) нельзя: используются сторонние библиотеки, а как они переживут такое - разбираться не хочется.
Т.е. надо что-то прямо противоположное __attribute__((zero_init))

Пока обошелся костылем - урезал в настройках размер памяти, и положил эти переменные по фиксированным адресам, про которые линкер не знает. Но это именно костыль. Некошерный. А как сделать красиво - не представляю...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Harvester
сообщение Oct 20 2011, 05:19
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 338
Регистрация: 1-02-06
Из: Королев, М.О.
Пользователь №: 13 846



Цитата(Intel4004 @ Oct 20 2011, 05:57) *
Задача следующая: после ресета получить информацию из "прошлой жизни". Информация эта лежит в глобальных переменных.
Снять галочку NoInit в Options->Target (т.е. отключить zero-init для всей памяти) нельзя: используются сторонние библиотеки, а как они переживут такое - разбираться не хочется.
Т.е. надо что-то прямо противоположное __attribute__((zero_init))

Пока обошелся костылем - урезал в настройках размер памяти, и положил эти переменные по фиксированным адресам, про которые линкер не знает. Но это именно костыль. Некошерный. А как сделать красиво - не представляю...

В микрочиповском C30, который по-сути GCC, есть такие атрибуты, как
__attribute__((noload)) - выделить место под переменную, но не инициализировать ее
__attribute__((persistent)) - не инициализировать и не обнулять переменную при старте

Наверное и в Keil-е должно быть что-то похожее.

Альтернативный вариант - определить в файле линкера область памяти с атрибутом "без инициализации".

К сожалению, более конкретно не скажу - нет Keil-а под рукой


--------------------
-Да как так-то?/-Да как-то так/-Ну так-то да
Go to the top of the page
 
+Quote Post



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

 


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


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