Bootloader Mbee-2.0

Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1 2 3 След.
Ответить
RSS
Bootloader Mbee-2.0
 
Приветствую всех!
Интересует вопрос обновления прошивок радиомодулей.
Подскажите есть ли возможность прошивать радио-модуль Mbee-2.0 Вашей прошивкой не с помощью программмы SysMC Bootloader, а со своего процессора. Другими словами: открыт ли у вас протокол бутлоадера и если да, то можно ли узнать об этом подробнее?

Мой кейс такой:
Выпускаются девайсы, в которых используется Ваш радиомодуль. Хотелось бы обновлять прошивку не только девайсу, но и радиомодулю. Но сейчас для этого понадобилось бы отпаивать модуль с платы и подключать его к компьютеру.
Моя проблема как - то решаема? Спасибо :)
 
Добрый день! Для обновления прошивки совсем не обязательно пользоваться программой SysMC BootLoader. Протокол обмена там простой и включает буквально несколько команд, обеспечивающих пакетную передачу/прием данных. Насколько мы поняли, Вы хотите перепрошивать радиомодуль через UART интерфейс, который используется для связи между микроконтроллером и радиомодулем? Мы сами в наших устройствах обычно устанавливаем разъем на линиях UART TX и UART RX, через который подключаем внешний преобразователь USB-UART с помощью которого программируем модуль. А чтобы во время обмена с радиомодулем "не мешался" микроконтроллер, предусматриваем перемычку, подключенную ко входу RESET микроконтроллера. Отпайка радиомодуля в этом случае совершенно не требуется.
 
Возможно меня неправильно поняли :)

Я имел ввиду, что допустим я уже имею девайс(готовый. В корпусе), который использует Ваш радиомодуль для связи (не имеет значения с чем).

Радиомодуль управляется внешним микроконтроллером, который ко всему прочему имеет и ethernet.
По ethernet у меня сейчас обновляется прошивка. (Обновляется прошивка только моего микроконтроллера), а хочется и обновлять прошивку радиомодуля. Новую прошивку радио, я беру с Вашего сайта, а далее хотелось бы тоже её отправить по ethernet в мой микроконтроллер, чтобы тот в свою очередь обновил непосредственно радиомодуль. (но для этого не хочется раскручивать корпус и вставлять перемычки, и подключать usb-uart и т.д.).

Для этого мне нужно включить у радио-модуля режим бутлодера(это известно как сделать) и дальше в uart отправить ему Вашу новую прошивку.
Но вопрос как? По какому протоколу?
Не подскажите вкратце какой протокол у бутлоадера?
Большое спасибо
 
Здравствуйте. Действительно, мы не правильно Вас понимали. Ввиду того, что при создании программы SysMCBootLoader, публикации протокола обмена не предполагалось, то и соответствующей документации не делалось. Так что придется собирать по крупицам: :)
В основе формата обмена используется формат, описанный в Serial Bootloader от Texas Instrumens. Однако есть отличие - код команды занимает 1 байт, а не 2.
Коды команды для краткости привожу в виде, понятном C-программисту.

enum
{
SB_CMD_PING = 0x10, // Чтение версии и свойств прошивки бутлоадера.
SB_CMD_WRITE = 0x11, // Запись блока во флеш
SB_CMD_READB = 0x12, // Чтение блока из флеша
SB_CMD_FINAL = 0x13, // Запись CrcShadow
SB_CMD_SETPR = 0x14, // Запись настроечных констант во флеш.
SB_CMD_ERASE = 0x15, // Стирание флеша.
SB_CMD_RD_IP = 0x16, // Чтение данных из сегмента InformationPage CC430.
SB_CMD_WR_IP = 0x17, // Запись данных в сегмент InformationPage CC430.
SB_CMD_WR_TX_PWR = 0x18, // Запись значения мощности модуля.
};
Для простой зашивки образа в память достаточно команд 0x11, 0x12, 0x13, 0x15. Все остальные команды - вспомогательные.
 
Большое спасибо!
 
Будет еще вопросы (а без них, полагаю, не обойдется :) ) - пишите.
 
Да, есть ещё несколько вопросов :)
1. Обязательно ли посылать команду 0x15 (стирание флеша) при начале обновления?
2. После посылки каждого фрейма с 64-мя байтами прошивки идёт ответ от модуля : (например посмотрим на ответ модуля после самого первого фрейма с прошивкой)
0xFE 0x00 0x91 0x00 0x00 0x91. Правильно ли я понял, что второй байт - это озночает успешную запись во флеш? И верно ли я понимаю, что на месте второго байта помимо нуля может быть 0х01 (ошибка записи во флеш) и 0х07 (ошибка в XOR байте)?
3. Правильно ли я понял, что делать валидацию совсем не обязательно, потому что запись прошивки идет фреймами с подтверждением записи во флеш (то если есть тот самый второй байт в ответе модуля нуль, то я могу счиать, что 100% запись во флеш произошла)?
4. Предположим, что валидацию(команда 0x12) делать необязательно, то верно ли я понял, что после последнего фрейма с прошивкой надо послать команду (0x13), чтобы модуль стартанул основное приложение?
5. Не могу понять состав команды 0x13. То есть там вот так:
0xfe, 0x01, 0x13 0xf0, 0x1f, 0x00, 0xfd.
- Что в этом сообщении есть второй байт?
- Два байта (f0 и 1f) - это последний адрес, куда записался последний фрейм с прошивкой? А зачем он тут?
- Неясно, что означает байт (0x00), который идет перед xor.
6. В процессе обновления прошивки, где -нибудь фигурирует запись crc32 прошивки и её версии (время билда) внутрь модуля?
Другими словами..как модуль понимает, что присланная ему прошивка валидна и её можно запусксать?

Ух...вроде всё, спасибо!
 
Да-а.. список серьезный..Добрый день. Потребуется время, чтобы поднять информацию из исходников. Постараемся пооперативнее.
 
Ещё не совсем понятно как в модуль записать версию прошивки? (то есть строку 18.11.2018 16:28:14.)
Или бутлоадер сам её понимает исходя из бинарника, который ему шлют?
 
Совершенно верно. В бинарном файле есть информация и о версии прошивки и о дате релиза. Получить ее можно по команде SB_CMD_PING .
Страницы: 1 2 3 След.
Ответить
Читают тему (гостей: 1)
Форма ответов
 
Текст сообщения*
Отправить Отменить