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

 
 
> Размещение переменой по заданному адресу и ее значение после ресета
turnon
сообщение Aug 2 2017, 18:46
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 340
Регистрация: 17-10-14
Пользователь №: 83 207



Представленный код инкрементит переменную между ресетами, но есь вопросы по надежности, а именно - не затрется ли переменная.

Размещение переменой по заданному адресу означает что под нее будет выделено место в памяти, заданное адресом?
Или это просто будет ссылка на заданный адрес - а что там - неизвестно?

STM32F2, IAR

Код
#include "stm32f2xx.h"

static __no_init __root uint32_t flag @0x20000000;

int main(void)
{
  flag++;
  NVIC_SystemReset();
}


Вот разница в .map файлах. Слева - с переменной flag, справа - без:
Прикрепленное изображение

Прикрепленное изображение


Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
HardEgor
сообщение Aug 3 2017, 09:00
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 223
Регистрация: 3-03-06
Из: Tomsk
Пользователь №: 14 925



Цитата(turnon @ Aug 3 2017, 01:46) *
Представленный код инкрементит переменную между ресетами, но есь вопросы по надежности, а именно - не затрется ли переменная.

Размещение переменой по заданному адресу означает что под нее будет выделено место в памяти, заданное адресом?
Или это просто будет ссылка на заданный адрес - а что там - неизвестно?

STM32F2, IAR

Я так не экспериментирую, а для таких целей использую регистры Backup RTC_BKP_DR0 и т.д.
Если нет батарейки, то делаю питание BKP от конденсатора с диодной развязкой - надолго хватает.
Go to the top of the page
 
+Quote Post
turnon
сообщение Aug 5 2017, 10:25
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 340
Регистрация: 17-10-14
Пользователь №: 83 207



Цитата(HardEgor @ Aug 3 2017, 12:00) *
Если нет батарейки, то делаю питание BKP от конденсатора с диодной развязкой - надолго хватает.

Потребление RTC - 5 uA. Если питание пропадет на сутки, чтобы RTC не сбросился (снижение напряжение с 3.3 до 2.3В) понадобится конденсатор 432000 uF (!). Конденсатор мелкие тоже ставлю, но исключительно чтобы не было сброса при заменен батарейки или при дребезге контактов в держателе батарейки.


Цитата(esaulenka @ Aug 3 2017, 23:07) *
А вот это неправда. Что находится по этому адресу, известно линкеру. Один из способов сообщить это линкеру - icf-скрипт. Другой - прагмы и IAR'овские расширения языка си непосредственно в исходнике. Более того, достаточно прочитать первое сообщение темы - там отчётливо видно, как этот флажок расположен именно в том месте, какое и подразумевалось при объявлении. И что стек автоматически смещается, тоже видно. Т.е. линкер эту область видит. Ставим галочку.

Значит таки выделяется место под переменную и не надо ничего прописывать в .icf файле. Это обнадеживает.

Цитата(esaulenka @ Aug 3 2017, 23:07) *
Что будет, если линкер не сможет растолкать bss (zero-init), data (non-zero-init), стек и эти секции в области памяти - надо проверять.

Вот тут не понял, расшифруйте пожалуйста для чайника.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- turnon   Размещение переменой по заданному адресу и ее значение после ресета   Aug 2 2017, 18:46
- - Сергей Борщ   QUOTE (turnon @ Aug 2 2017, 21:46) а имен...   Aug 2 2017, 19:25
|- - jcxz   Цитата(Сергей Борщ @ Aug 2 2017, 22:25) ...   Aug 2 2017, 20:41
|- - esaulenka   Цитата(jcxz @ Aug 2 2017, 23:41) А у авто...   Aug 3 2017, 09:09
|- - jcxz   Цитата(esaulenka @ Aug 3 2017, 12:09) Это...   Aug 3 2017, 16:39
|- - gerber   Цитата(jcxz @ Aug 3 2017, 19:39) Что имен...   Aug 3 2017, 19:30
- - sigmaN   А нам вообще кто-нибудь гарантирует аппаратно, что...   Aug 2 2017, 21:00
|- - jcxz   Цитата(sigmaN @ Aug 3 2017, 00:00) А нам ...   Aug 2 2017, 21:28
- - sigmaN   Цитатаесли там POR - обнуляем переменную и всё. Ну...   Aug 3 2017, 07:46
|- - jcxz   Цитата(turnon @ Aug 5 2017, 13:25) Потреб...   Aug 5 2017, 10:30
||- - turnon   Цитата(jcxz @ Aug 5 2017, 13:30) А зачем ...   Aug 5 2017, 21:24
||- - jcxz   Цитата(turnon @ Aug 6 2017, 00:24) Как фл...   Aug 6 2017, 08:08
||- - turnon   Цитата(jcxz @ Aug 6 2017, 11:08) Вы смотр...   Aug 6 2017, 09:18
||- - jcxz   Цитата(turnon @ Aug 6 2017, 12:18) Самое ...   Aug 6 2017, 16:42
|- - HardEgor   Цитата(turnon @ Aug 5 2017, 17:25) Потреб...   Aug 5 2017, 19:06
|- - turnon   Цитата(HardEgor @ Aug 5 2017, 22:06) Каки...   Aug 6 2017, 21:16
- - sigmaN   Всё описано в документации к линкеру. Не думаю, чт...   Aug 3 2017, 11:07
- - esaulenka   Отлично. Берём другого автора. https://www.iar.co...   Aug 3 2017, 20:07
- - jcxz   Цитата(gerber @ Aug 3 2017, 22:30) Нет. Е...   Aug 4 2017, 06:42


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

 


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


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