Насколько помню, примерно так (надеюсь не сильно совру):
Память настраивает загрузчик
В ядре есть BSP под плату.
Если что-то надо подключить/отключить, правится хидер BSP.
Дрова в исходниках ядра, подключаются нужные при конфиге.
Некоторые в BSP в хидере подключаются.
Дрова - многоуровневая структура.
В самом низу - символьные, и еще там какие-то.
Поверх этого навернуты отдельные интерфейсы для основных типов.
Доки актуальные - текстовые файлы в самом ядре. А по факту часто грустно с ними.
По написанию дров низкоуровневых была LDD3, 4ая так и не вышла, хотя была обещана.
Там много дров в ядре, часто ищется похожий и правится под себя просто.