Я хочу написать драйвер PWM. Я знаю, что есть два способа управления аппаратным драйвером:
- Пользовательский пробел.
- Драйвер пространства ядра
Если вообще (не рассматривайте случай драйвера PWM), мы должны принять решение о том, следует ли искать пространство пользователя или драйвер пространства ядра. Тогда какие факторы мы должны учитывать помимо этих?
- Драйвер пользовательского пространства может напрямую помещать файлы mmap()/dev/mem в их виртуальное адресное пространство и не требует переключения контекста.
- В драйвере userpace не могут быть реализованы обработчики прерываний (они должны опросить прерывание).
- Драйвер пользовательского пространства не может выполнять DMA (поскольку память с поддержкой DMA может быть выделена из пространства ядра).