Зарегистрируйте уровень доступа в драйвере устройства 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()
, так далее.