реклама на сайте
подробности

 
 
> Обновление прошивки через CAN, CRC16 каждого сообщения
pvo125
сообщение Feb 7 2017, 02:52
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 37
Регистрация: 9-04-14
Из: Черногорск Хакасия
Пользователь №: 81 299



Доброго Всем!

Делаю обновление прошивки по CAN. Один контроллер посылает другому пакеты по 8 байт с данными (оба STM). На принимающей стороне настроен фильтр и все работает. Но появились сомнения по поводу достоверного принятия каждого пакета по 8 байт. В CAN есть CRC16 которая приписывается к каждой посылки те для каждых 8 байт в моем случае . Вопрос в том примет ли принимающий контроллер те пропустит через фильтр сообщение если данные придут "кривые". Надо ли мне каждую посылку из 8 байт проверять на CRC после того как она прошла через фильтр и попала в майлбокс и сработало прерывание. Или все это делается аппаратно и если я попал в обработчик по этому фильтру значит эти 8 байт можно смело писать во флэш и отправлять запрос на след. посылку.
И еще такой момент если я правильно понимаю и все аппаратно отбрасывается или принимается то при принятии кривых данных на принимающем контроллере я не попаду в обработчик и сам принимающий контроллер не выставит подтверждение в ACK слоте и значит отправляющий контроллер автоматически перепошлет это сообщение.
Поделитесь мыслями кто делал обновление и считали ли дополнительно контрольную сумму каждой посылки или все это было аппаратно.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
pvo125
сообщение Feb 7 2017, 09:01
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 37
Регистрация: 9-04-14
Из: Черногорск Хакасия
Пользователь №: 81 299



Принимаю прошивку во вторую половину флэш. После принятия ресет контроллера и запуск бутлоадера который перепишет со второй половины в первую (рабочую) и затем снова ресет и запуск обновленного приложения (из первой половины). Может это конечно и лишнее переписывать с одного в другое но вторая часть все равно не используется прошивки меньше половины. Пишу по 8 байт так как сама функция записи находится в обработчике прерывания для CAN и считаю 8 байт быстро записываются.
И действительно если при записи выполнение останавливается то оно останавливается "не на долго". Можно конечно и буфер в озу сделать и писать во флэш например по сектору 1-16 кб но решил делать так. Не знаю время покажет может быть и переделаю.
Кстати нашел подтверждения для своего заключения в первом посте. На сайте https://www.can-cia.org/can-knowledge/can/crc/ нашел описание этого механизма.
Цитата
The receivers use the same polynomial to calculate the check sum from the bits as seen on the bus-lines. The self-calculated check sum is compared with the received on. If it matches, the frame is regarded as correctly received and the receiving node transmits a dominant state in the ACK slot bit, overwriting the recessive state of the transmitter. In case of a mismatch, the receiving node sends an Error Frame after the ACK delimiter.


Если правильно перевел то сообщение сохраняется в FIFO и генерируется прерывание если crc аппаратно проверенное совпадает. Если нет то приемный узел начинает передавать Eror Frame и передатчик перепосылает сообщение. Все это без участия ядра контроллера и значит считать программно CRC каждого принятого пакет не стоит он уже проверен и можно писать во flash.
Go to the top of the page
 
+Quote Post
novikovfb
сообщение Feb 7 2017, 09:04
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 518
Регистрация: 29-09-11
Пользователь №: 67 450



Цитата(pvo125 @ Feb 7 2017, 13:01) *
Если правильно перевел то сообщение сохраняется в FIFO и генерируется прерывание если crc аппаратно проверенное совпадает. Если нет то приемный узел начинает передавать Eror Frame и передатчик перепосылает сообщение. Все это без участия ядра контроллера и значит считать программно CRC каждого принятого пакет не стоит он уже проверен и можно писать во flash.

всё так, но от потери сообщения это не спасет, надо сверять контрольную сумму всей прошивки
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th August 2025 - 02:48
Рейтинг@Mail.ru


Страница сгенерированна за 0.01391 секунд с 7
ELECTRONIX ©2004-2016