whale 6 14 апреля, 2021 Опубликовано 14 апреля, 2021 · Жалоба Для прошивки по i2c я так и делал и не стоит задача прошивать дивайс в Мексике из Владивостока, просто хочется использовать основной интерфейс дивайса для прошивки и не дергать другие разъемы/разбирать корпус Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 190 14 апреля, 2021 Опубликовано 14 апреля, 2021 · Жалоба Вообще такие вещи желательно начинать с осмысленного описания. Оно пригодится и тебе самому в будущем, и тем, кто захочет сопрягаться с твоим девайсом. Я, например, пишу протоколы информационного взаимодействия (ПИВ-ы). Из них понятно, как работать с железкой, не кидая в качестве примера свои исходники (да и хреновая это практика, на самом деле). Приведу выдержку из своего ПИВ-а на один девайс, касательно режимов обновления встроенного ПО МК. Касательно реализации - загрузчик у меня работает из ОЗУ, по определенными причинам. При сбросе стартует загрузчик, проверяет аппаратное условие (DIP-переключатели), проверяет специальный ключ в ОЗУ на предмет того, был ли это запрос с управляющего SoM-модуля (может, это он просил в загрузчик перейти, чтобы обновиться). Если ни одно из этих условий не выполняется, то загрузчик обращается в специальный дескриптор, размещенный в области пользовательской прошивки, чтобы узнать ее размер и контрольную сумму. Если размер вменяемый (в пределах размера Flash за вычетом кода загрузчика), то проверяется CRC образа прошивки, затем сверяется с эталоном. Если совпадает - сбрасывается задействованная периферия и управление передается основной прошивке. Если не совпадает - остаемся в загрузчике и ждем дальнейших указаний. В загрузчике и основном ПО имеются общие команды, что позволяет SoM-модулю в любой момент времени понять, как себя чувствует МК (в каком состоянии он находится). Если он видит, что МК требует прошивку, то либо отдает ее ему, либо (когда ранее не было команды на обновление) соответствующим образом уведомляет пользователя. Но последнее произойдет, разве что, никогда в электрически исправном устройстве. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 60 14 апреля, 2021 Опубликовано 14 апреля, 2021 · Жалоба 45 minutes ago, Arlleex said: Вообще такие вещи желательно начинать с осмысленного описания. Так нормальные люди и поступают. А задавать вопросы в расчете на телепатию - это путь гуру программирования. А если это нарисовать на бумажке, то ещё понятнее будет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
whale 6 14 апреля, 2021 Опубликовано 14 апреля, 2021 (изменено) · Жалоба Так никто не писал что нить подобное для stm32 ? 47 minutes ago, Arlleex said: Вообще такие вещи желательно начинать с осмысленного описания Я все осмысленно описал, это не тз чтобы кто то писал за бабки, конкретная реализация и алгоритмы это моя задача. Вопроса был в том что есть уже что то более менее готовое которое можно модернизировать под конкретное уст-во. 2 minutes ago, x893 said: А задавать вопросы в расчете на телепатию Что вам не понятно в вопросе без телепатии ? Изменено 14 апреля, 2021 пользователем whale Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 14 апреля, 2021 Опубликовано 14 апреля, 2021 · Жалоба 14 часов назад, x893 сказал: Не совсем так. Загрузчик может проверить код и если он некорректный, то сразу перейти в режим загрузки и большой брат ещё раз пришлёт ему программу. Зависит от сценария, нарисованного ручкой на бумажке. Совсем так: сколько чего не проверяй - в какой-то момент придётся начать прошивать. А для того чтобы это сделать сперва нужно стереть старую прошивку. Вот в этот момент и может прилететь сбой питания. И присылать "ещё раз" будет уже некому - старой прошивки уже нет, а новая записаться не успела. 7 часов назад, whale сказал: Так загрузчик то остается в него не пишут, а при перезагрузке сначала сразу идем в него и ждем 5-10 сек придет что нить или нет а потом уже в основную, также можно при загрузке сделать проверку кода программы на crc Ну если будете и принимать прошивку тем же загрузчиком, тогда да - можно заново переслать. Но как тогда обновить этот загрузчик? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 60 14 апреля, 2021 Опубликовано 14 апреля, 2021 · Жалоба 6 minutes ago, jcxz said: Но как тогда обновить этот загрузчик? Вручную. Но лучше не менять. 7 minutes ago, jcxz said: Вот в этот момент и может прилететь сбой питания. И присылать "ещё раз" будет уже некому - старой прошивки уже нет, а новая записаться не успела. Да и хрен с ним - со сбоем. Загрузчик то останется (см. выше). Уже 100500 раз загрузчики обсуждали здесь (и на других). Но гуру программирования не читатели - они задаватели. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
whale 6 14 апреля, 2021 Опубликовано 14 апреля, 2021 · Жалоба 2 hours ago, jcxz said: Но как тогда обновить этот загрузчик Этого зачем ? Пусть будет всю жизнь старый ) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться