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

 
 
> Инициализация структуры во Flash, Дублирование области flash
pokk
сообщение May 24 2016, 04:27
Сообщение #1


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

Группа: Участник
Сообщений: 91
Регистрация: 3-07-11
Пользователь №: 66 028



Добрый день , подскажите как можно продублировать инициализированную структуры во flash.
Дело в том, что понадобилось сохранять настройки программы в flash, но для зашиты их решил сделать несколько дубликатов.
Делаю это примерно так:
Код
S_GlobalSettingAllVar DefaultGlobalSettingAllVar={ //Начальные настройки(устанавливаются после нажатия кнопки Reset)
   .NetSetting={
      .mac = {0x00, 0x08, 0xdc, 0xab, 0xc1, 0x11},   //6
      .ip = {192, 168, 1, 4},                     //4
      .sn = {255, 255, 0, 0},
      .gw = {192, 168, 0, 0},
   },
   .Password={"fghfgh"},
}
S_GlobalSettingAllVar GlobalSettingAllVar={ //рабочая структура
   .NetSetting={
      .mac = {0x00, 0x08, 0xdc, 0xab, 0xc1, 0x11},   //6
      .ip = {192, 168, 1, 4},                     //4
      .sn = {255, 255, 0, 0},
      .gw = {192, 168, 0, 0},
   },
   .Password={"fghfgh"},
}

В принципе можно так же сделать и дублирующие структуры, но в этом варианте мне не нравится то что при необходимости поменять значения, то придется менять во всех дублирующих структурах и можно в какой-то ошибиться.
Хотелось бы сделать инициализацию в одной из структур, которая при прошивки разместилась по нескольким адресам.

Как заставить компилятор разместить структуры во flash даже если по коду они не используются?(по коду использую адрес)

Ps. компилятор IAR stm32, но думаю это не сильно принципиально.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
pokk
сообщение May 24 2016, 06:35
Сообщение #2


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

Группа: Участник
Сообщений: 91
Регистрация: 3-07-11
Пользователь №: 66 028



Цитата
А какой сакральный смысл в нескольких копиях во флешь?

Дело в том что что бы перезаписать байт надо обновить всю структуру для этого всю страницу надо стереть и если в этот момент произойдут сбой питания, то все настройки слетят.

У меня алгоритм такой.
1) после включении программы происходит копирование одной из структур в ОЗУ.
2) сравнение по байтно 3 массива и если 2 байт из разных копиях верны а третий байт нет то он заменяется из двух совпавшим(структура в ОЗУ).
3) Если был сбой(какой-то из 3х копий не совпал), то перезаписываем все 3 копии восстановленными данными(В ОЗУ)

Таким образом в случае потери одной из копий настроек (после броска питания) она будет восстановлена после перезагрузки.

Сергей Борщ, в моем случае надо сначала установить минимальные настройки, а потом их уже корректировать, по этому не было такой нужны в CRC, хотя я уже обдумывал о неком флаге в flash который бы указывал что надо продублировать настройки после чего сбрасывался и не когда больше не выставлялся.
Но я считаю такой подходи не совсем правильным так как, всё это можно сделать при прошивки процессора. По этому надеялся на то что можно выделить секцию под настройки и указать линкекру разместить её в нескольких местах (может написал фигню с секциями и линкером не работал).




Go to the top of the page
 
+Quote Post
MrYuran
сообщение May 24 2016, 06:45
Сообщение #3


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(pokk @ May 24 2016, 09:35) *
По этому надеялся на то что можно выделить секцию под настройки и указать линкекру разместить её в нескольких местах (может написал фигню с секциями и линкером не работал).

#pragma location (емнип), reed IAR Compiler Reference


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- pokk   Инициализация структуры во Flash   May 24 2016, 04:27
- - ViKo   Скопировать пословно. У меня есть структуры с теку...   May 24 2016, 04:42
- - jcxz   Цитата(pokk @ May 24 2016, 10:27) Дело в ...   May 24 2016, 04:51
- - Сергей Борщ   QUOTE (pokk @ May 24 2016, 07:27) В принц...   May 24 2016, 05:34
|- - jcxz   Цитата(pokk @ May 24 2016, 12:35) 1) посл...   May 24 2016, 08:40
|- - k155la3   Цитата(pokk @ May 24 2016, 09:35) . . . ....   May 25 2016, 06:01
- - MrYuran   А ещё лучше поставить сбоку FRAM и вообще больше н...   May 24 2016, 06:42
- - pokk   ЦитатаА с флешью я нынче работаю так: есть несколь...   May 24 2016, 06:45
- - ViKo   Да, у меня тоже есть CRC в структурах. Если она не...   May 24 2016, 06:48
- - Jenya7   я делал так Кодvoid LoadFlashParams(void) ...   May 24 2016, 10:27
- - pokk   ЦитатаЕсли был какой-то сбой, то скорей всего у Ва...   May 24 2016, 10:30
|- - jcxz   Цитата(pokk @ May 24 2016, 16:30) С чего ...   May 25 2016, 04:59
- - pokk   ЦитатаИ какой же у Вас процесс модификации структу...   May 25 2016, 09:13
- - jcxz   Цитата(pokk @ May 25 2016, 15:13) Да все ...   May 25 2016, 09:21
- - ШСА   Цитата(pokk @ May 25 2016, 12:13) Да все ...   May 25 2016, 11:13
- - jcxz   Цитата(ШСА @ May 25 2016, 17:13) Кроме вс...   May 25 2016, 11:22


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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 08:56
Рейтинг@Mail.ru


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