Ну я ещё раз посмотрел.
А как написать универсальный драйвер?
Сложно в общем то.
Возьмём Modbus.
По сути вы должны сначал выставить размер 1 и получить адрес устройства, Потом 2 и получить адрес регистра и так далее пока не получите длину ...
Короче верхний драйвер вполне можно приспособить для использования этого.
Другой вопрос зачем это надо.
Лучше вас никто вашей задачи не знает. И если вас это не устраивает, то вы можете написать своё прерывание, где обрабатываете пакет и по приёму пакета выставляете семафор. ))
Я написал приём по прерыванию, а передачу по DMA.
Удобнее всего было бы если бы проц имел FIFO, по примеру NXP. Но что поделаешь ... ))
Всегда чего-нибудь не хватает.