[an error occurred while processing this directive]
|
Низовой драйвер CAN постоен без использования сервисов RTOS и в принципе может быть использован и в foreground/background системе. Едиственное, что в нем сделано - это вызов OS_Int_Enter() при входе в прерывания (чтобы не забыть нигде это сделать позднее). Низовой драйвер предоставляет API для настройки CAN-контроллера: назначение ID, масок, разрешение/запрещение буферов, запуск передачи, настройка hook-функций-перехватов при приеме фреймов, окончании передачи и изменении состояния CAN-шины.
Далее CK. Для Fujitsu он у меня получился платформенно-зависимым, поскольку заманчиво было использовать буфер CAN, как эквивалент папки CK, чтобы фильтрация сообщений происходила аппаратно. 16 папок вполне достаточно в моем приложении.
При приеме сообщений в буфер в прерываниях вызывается настраиваемый пользователем Hook - дальнейшие действия по передаче сообщения нужной задаче и тип используемого для этого сервиса - его дело.
Функция передачи вызывается с уровня задач. Задаче возвращается код выполнения операции. Таймаут предусмотрен. В случае таймаута передача сообщения в CAN абортируется.
E-mail: info@telesys.ru