Перейти к содержанию
    

Продублировать значение Flash в несколько секций.

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

Одна структура хранит дефолтные настройки, вторая текущие которые задает пользователь во время работы ПО.

Как на этапе компиляции можно продублировать(скопировать) значения дефолтных настроек во вторую структуру(в пользовательскую) ?

 

 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если есть дефолтные настройки, то должна быть и процедура возврата к ним. Запустить её при первом старте программы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В дефолтную  структуру размешаю руками, и она достаточно большая, если так же размешать в пользовательскую, то

1) не удобно туда и туда записывать значения

2) Однозначно когда нибудь получиться так что в одну структуру внес одни изменения а в другой забыл и они стали разными.  

Раньше я в процессе работы ПО копировать из дефолтной структуры в пользовательскую (1 раз когда пользовательская структуру была пустой)

А теперь мне для бутлоадера надо что бы в  bin,hex файле они обе были инициализированы.   

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В топку такой бутлоадер.

 

typedef struct {
  uint32_t a;
  uint32_t b;
} PARAMS;

#define VALUE  { .a=1,  .b=2  }

PARAMS def  = VALUE;
PARAMS work = VALUE;

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Делаю bootloader на TFTP  с внешним TCP/IP стеком (Один IP адрес)

После того как приложение с IP адресом XXXX поймала начала пакета TFTP,происходит перезагрузка в bootloader, он заново инициализируемый и  ему надо указать с каким IP ему работать, по этому,  он считывает секцию настроек основного приложения и от туда достает IP который был установлен пользователем.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И если приложение перекомпоновали, и настройки будут в другом месте приложения, то бутлоадеру каюк? В топку.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1) В первом пакете передается адрес блока  настроек

2) Если их нету  (при первом прошивки через бут ) то , бут ставит свой  дефолтный IP. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ладно, это твои заморочки. Я предложил блок инициализации под макрос спрятать. По синтаксису сам поэкспериментируй.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

9 часов назад, VladislavS сказал:

Если есть дефолтные настройки, то должна быть и процедура возврата к ним. Запустить её при первом старте программы.

Тоже так делаю. Причем основные настройки обложены CRC и при старте программы при несовпадении CRC восстанавливаются настройки по-умолчанию. Это же автоматически происходит и при первом запуске с пустой областью пользовательских настроек.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 часов назад, pokk сказал:

После того как приложение с IP адресом XXXX поймала начала пакета TFTP,происходит перезагрузка в bootloader, он заново инициализируемый и  ему надо указать с каким IP ему работать, по этому,  он считывает секцию настроек основного приложения и от туда достает IP который был установлен пользователем.

Убрать FTP из бутлоадера. Поместить его в "основное приложение". А буту оставить только его настоящие функции. И не надо будет никуда IP-адрес передавать.

Обсуждали это уже тут тыщу раз.

18 минут назад, Сергей Борщ сказал:

Тоже так делаю. Причем основные настройки обложены CRC и при старте программы при несовпадении CRC восстанавливаются настройки по-умолчанию. Это же автоматически происходит и при первом запуске с пустой областью пользовательских настроек.

Делаю аналогично. Только кроме проверки CRC, проверяю ещё и валидность самих данных настроек. Каждого их параметра. И версию структуры настроек проверяю.

И настройки храню в двух копиях: при каждой модификации структуры настроек запись происходит в неактивную копию, которая после этого делается активной.

А дефолтные настройки хранятся не в какой-то области флешь, а в самой программе - если она проверила текущий конфиг и выявила, что он не валидный, она просто создаёт дефолтную структуру настроек в неактивной копии настроек (после чего активирует её). "Руками" ничего не создаю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

13 minutes ago, jcxz said:

Убрать FTP из бутлоадера. Поместить его в "основное приложение". А буту оставить только его настоящие функции. И не надо будет никуда IP-адрес передавать.

Обсуждали это уже тут тыщу раз.

TFTP в загрузчике полезен для аварийного режима или для первичной прошивки. А в норме, конечно, основная прошивка должна загружать новую версию, а загрузчик её прошьёт.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 минуту назад, scifi сказал:

TFTP в загрузчике полезен для аварийного режима или для первичной прошивки. А в норме, конечно, основная прошивка должна загружать новую версию, а загрузчик её прошьёт.

Имхо - для этих целей (аварийных) лучше что-то попроще использовать. Что-то кондовое. Типа UART-а.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 minutes ago, jcxz said:

Имхо - для этих целей (аварийных) лучше что-то попроще использовать. Что-то кондовое. Типа UART-а.

У меня есть вариант всего на 6 КБайт uIP+TFTP. Ну а если, к примеру, минимальный сектор флеша 16 КБайт, то об этом вообще можно не беспокоиться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 минут назад, scifi сказал:

Ну а если, к примеру, минимальный сектор флеша 16 КБайт, то об этом вообще можно не беспокоиться.

Это в каких МК?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...