Ошибка вызова функции request_region при выделении регистров последовательного порта - PullRequest
0 голосов
/ 24 ноября 2011

Я профессиональный программист на Си.Я изучаю драйверы устройств и хочу написать (и протестировать) простой драйвер последовательного порта для отправки символов со скоростью 9600 бод. Я начал писать код.

Проблема заключается в сбое функции request_region(возвращает NULL), когда я пытаюсь выделить регистры последовательного порта с диапазоном адресов 03f8-03ff.Когда я запускаю команду "cat / proc / ioports", я вижу следующую строку

03f8-03ff: serial.

Я считаю, что эти порты уже выделены для уже существующего последовательного порта.драйвер

Нужно ли выгрузить уже существующий драйвер последовательного порта, чтобы проверить мой драйвер?Если так, как я могу это сделать?

1 Ответ

2 голосов
/ 28 ноября 2011

Вы правы: драйверы ядра уже используют эти порты.Я предполагаю, что вы работаете на коробке Intel, поэтому, скорее всего, вы используете драйвер 8250.Вы можете попытаться выгрузить через:

modprobe -vr 8250

, но это, скорее всего, не удастся, если вы используете ядро, предоставленное дистрибутивом, так как большинство из них имеют этот модуль "встроенным".Вы можете проверить это с помощью

grep CONFIG_SERIAL_8250 /boot/config-`uname -r`

, и вы получите CONFIG_SERIAL_8250=y, тогда вам нужно скомпилировать ядро, где драйвер 8250 фактически является загружаемым модулем.

...