Неудобно 9-битные байты как-то в 8-битной памяти хранить до разбора пакетов. А разбор пакетов на лету -- действительно ещё тот ассемблер. Напрашивается какая-то преамбула перед данными (чтоб не хватать мусор из линии). XOR и SUM -- совсем плохие алгоритмы для коммуникаций (SUM может быть хорошим для flash...) Жёсткие тайминги вплоть до драйвера для linux -- да, жесть.