Здравствуйте,All!
Прошу помочь в разрешении следующей проблемы: нужно сопрячь 2 устройства, имеющих скорости по компорту отличающуюся в 30 раз (1М5 и 56К) тип информации - пакеты,разной длины,могут рваться на пол-дороги и приходить по 2 и более в пачке. Они имеют известный хидер, я их парсю без проблем на лету в обработчике прерывания,благо скорострельности камня хватает. Все это крутится под FreeRTOS на stm32f415. В обработчике прерывания кладу символ в кольцевой буфер и отдаю его парсеру(инлайн в обработчике). Если парсер собрал пакет - отдаю указатель на начало пакета и его длину через очередь гейткиперу сопряженного порта. Гейт копирует пакет в свой буфер передачи и разрешает передачу по порту. Все прекрасно работает до неопределенного момента - может зависнуть вся система,а может тупо перейти в вызовы задач каждую миллисекунду. Неопределенный момент может возникнуть как и через 10 сек после старта , так и через несколько часов. Ход процесса я смотрю с помощью SEGGER SYSVIEW,очень полезная вещь.
Буду рад,если кто либо поможет мне разобраться,где же порылась собака.
WBR, Sergey
|