Jump to content

    
Sign in to follow this  
pokk

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

Recommended Posts

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

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

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

 

 

 

 

 

Share this post


Link to post
Share on other sites

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

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

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

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

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

Share this post


Link to post
Share on other sites

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

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

 

 

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites
9 часов назад, VladislavS сказал:

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

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

Share this post


Link to post
Share on other sites
8 часов назад, pokk сказал:

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

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

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

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

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

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

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

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

Share this post


Link to post
Share on other sites
13 minutes ago, jcxz said:

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

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

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

Share this post


Link to post
Share on other sites
1 минуту назад, scifi сказал:

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

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

Share this post


Link to post
Share on other sites
2 minutes ago, jcxz said:

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

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

Share this post


Link to post
Share on other sites
5 минут назад, scifi сказал:

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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this