Я пытаюсь создать модуль аппаратного драйвера в ядре Linux. Оборудование подключается к ЦП через UART, поэтому я пытаюсь получить доступ к регистру UART напрямую через iowrite (). Однако я обнаружил, что никогда не могу писать на адрес регистра. Ниже код, который я использую:
release_mem_region(UARTBASE_PA, 145);
if(request_mem_region(UARTBASE_PA, 145, "myserial") ==NULL)
printk("iomem request refused\n");
else
UARTBASE =(u32) ioremap_nocache((u32) UARTBASE_PA, 145);
iowrite32((u32) 0x100,(u32) (UARTBASE+0x20));
x=ioread32(UARTBASE+0x20);
printk("%x\ \n", x);
Где вывод printk
всегда является значением по умолчанию вместо того, которое я записываю в него.
Понятия не имею, как решить эту проблему, помогите, любая идея будет полезна.
Заранее спасибо!
Джеймс