Bootloader Mbee-2.0

Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: Пред. 1 2 3 След.
Ответить
RSS
Bootloader Mbee-2.0
 
Цитата
Technical Support пишет:
В бинарном файле есть информация и о версии прошивки
Хорошо!
Это очень удобно :)
 
Доброе утро! Отвечать будем порциями. В перерывах в основной работе. А ее сейчас много - конец года (сдача проектов). Поэтому заранее просим прощения за задержки. Итак:
1. Команду на стирание надо отдавать обязательно, иначе записанные данные объединятся по "И" с тем, что имеется по записываемому адресу.
2. Ответ на команду записи означает только то, что данные успешно приняты по UART и пакет передан на запись в контроллер флеш-памяти. При этом никакого readback`а с записываемого адреса не производится и никакие флаги не выставляются.
3. Валидацию делать не обязательно, но рекомендуется.
Вообще алгоритм записи образа программой SysMCBootLoader такой:
1. Читаем идентификатор модуля и сравниваем его с идентификатором модуля, имеющимся в прошивке. Запись разрешаем только в случае их совпадения.
2. Пишем весь образ пакетами с анализом подтверждения приема каждого пакета.
3. Считываем записанный образ и сравниваем его с оригиналом.
4. В случае успешной валидации отдаем команду SB_CMD_FINAL.
 
Цитата
Technical Support пишет:
"Совпадение записанной контрольной суммы с контрольной суммой, имеющейся в образе ...."
Контрольная сумма шлётся в модулю командой SB_CMD_FINAL ?
Если да, то остался только вопрос по формату этой команды. То есть как конкретно надо отправить crc32 (или какое crc?) модулю?
Глянул анализатором процесс обновления, и что-то не обнаружил посылку crc.
Вижу только SB_CMD_FINAL самой последней командой. Возможно я ошибаюсь
 
Я уточнил - CRC не посылается, а по команде SB_CMD_FINAL вытаскивается из уже переданного образа и записывается в область CRC_SHADOW. А дальше все как мы уже писали.
 
Всё равно не могу понять что вклчюает в себя команда SB_CMD_FINAL.
По анализатору посылка этой команды выглядит так:
0xfe 0x01 0x13 0xf0 0x1f 0x01 0xfc

байт 1: 0xfe (sof byte)
байт 2: ???
байт 3: 0x13 (SB_CMD_FINAL)
байт 4: ???
байт 5: ???
байт 6: ???
байт 7: XOR всего кроме 0xfe
Изменено: Aman - 20.12.2018 17:27:43
 
Добрый день!
Байт 2 - длина поля данных. Не используется для СС430. Оставлен для совместимости.
Байт 4 - адрес последнего блока образа в 4-х байтных словах. Младший байт. Не используется для СС430. Оставлен для совместимости.
Байт 5 - адрес последнего блока образа в 4-х байтных словах. Старший байт. Не используется для СС430. Оставлен для совместимости.
Байт 6 - опции. Не используется для СС430. Оставлен для совместимости.
Таким образом, единственно ценным байтом пакета является сам код команды.
 
Огромное спасибо за ответы!
Пока вопросов больше нет :)
 
Рады помочь. Если что - пишите.
 
Цитата
Technical Support пишет:
Я уточнил - CRC не посылается, а по команде SB_CMD_FINAL вытаскивается из уже переданного образа и записывается в область CRC_SHADOW. А дальше все как мы уже писали.
Если я правильно понял, то по ходу приёма байт модуль ешё и считает фактическое crc.
А потом сравнивает посчитанное с тем, которые вытащил из прошивки по команде SB_CMD_FINAL. Что если они не совпали?
Модуль присылает каким-либо образом сообщение об ошибке?
 
Да и впринципе немного неясно что отвечает модуль на команду SB_CMD_FINAL. (там много байт в ответе).
Их можно как - то использовать, чтобы понять успешно модуль обновился или нет?:)
Страницы: Пред. 1 2 3 След.
Ответить
Читают тему (гостей: 1)
Форма ответов
 
Текст сообщения*
Отправить Отменить