Red de conocimiento informático - Aprendizaje de programación - Al escribir controladores para sistemas Linux, cómo utilizar el lenguaje C para acceder al hardware

Al escribir controladores para sistemas Linux, cómo utilizar el lenguaje C para acceder al hardware

Para acceder al hardware al escribir un controlador en un sistema Linux, primero se requiere la asignación de direcciones. Debido a que con el sistema Linux, las direcciones utilizadas en el programa son todas direcciones virtuales, por lo que es necesario reasignarlas con ioremap. para obtener la dirección virtual requerida y luego usar ioread32 e iowrite32 para realizar operaciones de lectura y escritura. El siguiente es el funcionamiento del LED:

int init_led_device(struct led_dev_t *l)

{

l->phys = 0x7F008000;

l->virt = ioremap(l->phys, SZ_4K);

l->gpmcon = l->virt + 0x820;

l->gpmdat = l- >virt + 0x824;

devuelve 0;

}

void led_config(struct led_dev_t *l)

{

l->reg = ioread32(l->gpmcon);

l->reg &= ~(0xf << 0);

l->reg |= (0x1 << 0);

iowrite32(l->reg, l->gpmcon);

}