Зарегистрируйте уровень доступа в драйвере устройства Linux

У меня есть только 2 недели опыта в разработке драйверов для Linux, но у меня есть хороший опыт в программировании на встроенном c. Я только попробовал драйвер устройства персонажа в Linux. Теперь я хочу попробовать драйвер устройства для набора светодиодов, подключенных к GPIO. Я использую BeagleBone Black. Я хочу получить к нему доступ с уровня реестра, а не просто вызывая любой драйвер. (Я делаю это, чтобы изучить основы)

Я хочу, чтобы мой код доступа GPIO к драйверу был примерно таким

void SetLED(unsigned char LED,unsigned char Status){
    //Read the port register
    //BitWise Operation according to function parameters
    //Write back to the register
}

Но мне нужна помощь о том, как получить доступ к регистрам непосредственно в Linux. Я получил фактический адрес регистра порта OUT из таблицы 0x4804C13C

Простите меня, если я нарушаю какие-либо основы в моем вопросе. Я действительно новичок в Linux.

1 ответ

Решение

Ваш водитель должен позвонить

struct resource *request_mem_region(unsigned long start, unsigned long len, char *name);

зарегистрировать эксклюзивный доступ к этой области памяти.

Тогда он должен использовать ioread8(),ioread16()и т. д. и iowrite8(),iowrite16(), так далее.

Другие вопросы по тегам