pokk 0 22 мая, 2019 Опубликовано 22 мая, 2019 · Жалоба Добрый день есть две структуры с настройками ПО, располагаются они в разных секция flash. Одна структура хранит дефолтные настройки, вторая текущие которые задает пользователь во время работы ПО. Как на этапе компиляции можно продублировать(скопировать) значения дефолтных настроек во вторую структуру(в пользовательскую) ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 59 22 мая, 2019 Опубликовано 22 мая, 2019 · Жалоба Также как и разместить эти дефолтные настройки в первую структуру. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 39 22 мая, 2019 Опубликовано 22 мая, 2019 · Жалоба Если есть дефолтные настройки, то должна быть и процедура возврата к ним. Запустить её при первом старте программы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pokk 0 22 мая, 2019 Опубликовано 22 мая, 2019 · Жалоба В дефолтную структуру размешаю руками, и она достаточно большая, если так же размешать в пользовательскую, то 1) не удобно туда и туда записывать значения 2) Однозначно когда нибудь получиться так что в одну структуру внес одни изменения а в другой забыл и они стали разными. Раньше я в процессе работы ПО копировать из дефолтной структуры в пользовательскую (1 раз когда пользовательская структуру была пустой) А теперь мне для бутлоадера надо что бы в bin,hex файле они обе были инициализированы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 39 22 мая, 2019 Опубликовано 22 мая, 2019 · Жалоба В топку такой бутлоадер. typedef struct { uint32_t a; uint32_t b; } PARAMS; #define VALUE { .a=1, .b=2 } PARAMS def = VALUE; PARAMS work = VALUE; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pokk 0 22 мая, 2019 Опубликовано 22 мая, 2019 · Жалоба Делаю bootloader на TFTP с внешним TCP/IP стеком (Один IP адрес) После того как приложение с IP адресом XXXX поймала начала пакета TFTP,происходит перезагрузка в bootloader, он заново инициализируемый и ему надо указать с каким IP ему работать, по этому, он считывает секцию настроек основного приложения и от туда достает IP который был установлен пользователем. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 39 22 мая, 2019 Опубликовано 22 мая, 2019 · Жалоба И если приложение перекомпоновали, и настройки будут в другом месте приложения, то бутлоадеру каюк? В топку. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pokk 0 22 мая, 2019 Опубликовано 22 мая, 2019 · Жалоба 1) В первом пакете передается адрес блока настроек 2) Если их нету (при первом прошивки через бут ) то , бут ставит свой дефолтный IP. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 39 22 мая, 2019 Опубликовано 22 мая, 2019 · Жалоба Ладно, это твои заморочки. Я предложил блок инициализации под макрос спрятать. По синтаксису сам поэкспериментируй. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 134 22 мая, 2019 Опубликовано 22 мая, 2019 · Жалоба 9 часов назад, VladislavS сказал: Если есть дефолтные настройки, то должна быть и процедура возврата к ним. Запустить её при первом старте программы. Тоже так делаю. Причем основные настройки обложены CRC и при старте программы при несовпадении CRC восстанавливаются настройки по-умолчанию. Это же автоматически происходит и при первом запуске с пустой областью пользовательских настроек. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 231 22 мая, 2019 Опубликовано 22 мая, 2019 · Жалоба 8 часов назад, pokk сказал: После того как приложение с IP адресом XXXX поймала начала пакета TFTP,происходит перезагрузка в bootloader, он заново инициализируемый и ему надо указать с каким IP ему работать, по этому, он считывает секцию настроек основного приложения и от туда достает IP который был установлен пользователем. Убрать FTP из бутлоадера. Поместить его в "основное приложение". А буту оставить только его настоящие функции. И не надо будет никуда IP-адрес передавать. Обсуждали это уже тут тыщу раз. 18 минут назад, Сергей Борщ сказал: Тоже так делаю. Причем основные настройки обложены CRC и при старте программы при несовпадении CRC восстанавливаются настройки по-умолчанию. Это же автоматически происходит и при первом запуске с пустой областью пользовательских настроек. Делаю аналогично. Только кроме проверки CRC, проверяю ещё и валидность самих данных настроек. Каждого их параметра. И версию структуры настроек проверяю. И настройки храню в двух копиях: при каждой модификации структуры настроек запись происходит в неактивную копию, которая после этого делается активной. А дефолтные настройки хранятся не в какой-то области флешь, а в самой программе - если она проверила текущий конфиг и выявила, что он не валидный, она просто создаёт дефолтную структуру настроек в неактивной копии настроек (после чего активирует её). "Руками" ничего не создаю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 22 мая, 2019 Опубликовано 22 мая, 2019 · Жалоба 13 minutes ago, jcxz said: Убрать FTP из бутлоадера. Поместить его в "основное приложение". А буту оставить только его настоящие функции. И не надо будет никуда IP-адрес передавать. Обсуждали это уже тут тыщу раз. TFTP в загрузчике полезен для аварийного режима или для первичной прошивки. А в норме, конечно, основная прошивка должна загружать новую версию, а загрузчик её прошьёт. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 231 22 мая, 2019 Опубликовано 22 мая, 2019 · Жалоба 1 минуту назад, scifi сказал: TFTP в загрузчике полезен для аварийного режима или для первичной прошивки. А в норме, конечно, основная прошивка должна загружать новую версию, а загрузчик её прошьёт. Имхо - для этих целей (аварийных) лучше что-то попроще использовать. Что-то кондовое. Типа UART-а. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 22 мая, 2019 Опубликовано 22 мая, 2019 · Жалоба 2 minutes ago, jcxz said: Имхо - для этих целей (аварийных) лучше что-то попроще использовать. Что-то кондовое. Типа UART-а. У меня есть вариант всего на 6 КБайт uIP+TFTP. Ну а если, к примеру, минимальный сектор флеша 16 КБайт, то об этом вообще можно не беспокоиться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 231 22 мая, 2019 Опубликовано 22 мая, 2019 · Жалоба 5 минут назад, scifi сказал: Ну а если, к примеру, минимальный сектор флеша 16 КБайт, то об этом вообще можно не беспокоиться. Это в каких МК? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться