Резервирование памяти уже работает как ожидал. Теперь я пишу свой драйвер для Linux, используя функцию memremap() в моей функции проверки:
Код: Выделить всё
paddr = r.start;
vaddr = memremap(paddr, 4096, MEMREMAP_WB);
printk("Allocated reserved memory, vaddr: 0x%0X, paddr: 0x%0X\n", (u32)vaddr, paddr);
printk("Allocated reserved memory, paddr (2): 0x%0x\n", virt_to_phys(vaddr));
К сожалению, результат:
Код: Выделить всё
[10370.743577] Allocated reserved memory, vaddr: 0xE0847000, paddr: 0x20000000
[10370.750564] Allocated reserved memory, paddr (2): 0x20847000
>. Откуда берется это смещение? Я ожидаю, что драйвер читает и записывает в 0x20000000 вместо 0x20847000.
Спасибо за любую подсказку
Подробнее здесь: https://stackoverflow.com/questions/792 ... p-function
Мобильная версия