Package driver

Проект для тестового задания

Разработать драйвер приема/передачи (Stream) байтовых пакетов переменной длины.

Обязательные требования:  - механизм упаковки/распаковки (кодирования) пакета должен однозначно разграничивать один пакет от другого.  - должен быть обеспечен механизм проверки целостности данных в пакете.  - должна быть обеспечена безопасная работа в многопоточной среде.  - отправка и прием пакетов должны быть реализованы через CAN и UART (выбор канала осуществяется условной компиляцией.)

Реализация

За основу взят протокол SLIP. Используется маркер конца кадра. Сам маркер заменяется ESC последовательностью.

Для проверки целостности полезных данных используется CRC16. Поэтому максимальная длина полезных данных - 4095 байт.

Для многозадачной среды ( в данном случае freeRTOS) используется мютекс. В коде применена обёртка для RTOS от CMSIS

Сам драйвер абстрагирован от канала передачи через интерфейс.

Проект создан в STM32CubeIDE для f103 микроконтроллера