IMHO, универсальный подход здесь есть, но чем выше степень универсальности, тем выше perfomance penalties. Последнее imho имеет в embedded systems больший вес в силу ограниченности ресурсов...
Наработки по этому делу есть, к примеру могу привести BlueStreak Software Library by Sharp.
она состоит из аппаратно независимой части - Sharp Bluestreak Library (ABL), и двух аппаратно зависимых - chip support
package (CSP) и Board Support Package (BSP). В частности, на сайте можно найти реализацию под процы LH7xxxx.
Все взаимодействие с апппаратурой (начиная от GPIO и кончая графикой и mmu) происходит через ABL (через стадартные вызовы abl_ioctl(), abl_open(), abl_read(), abl_write(), ...), которая, в свою очередь, общается со списком драйверов из CSP и BSP. При переходе на новый камень нужно написать CSP, на новую плату - BSP.
работающий софт можно посмотреть можно здесь
http://www.sharpsma.com/mcu/mculibrary.phpпортировать под другие ARM тоже не составит труда, также там есть порты под PEG, uC/OS II, ThreadX.