Я хочу создать память для передачи DMA. (Использование Linux 2.6.18-128.el5 # 1 SMP)
У меня есть стек API + драйвер ядра для моего H / W, который может сделать это для меня, но он очень-очень медленный!
Если я использую API для создания передачи DMA, он выделяет некоторую память очень высоко в системной памяти (например, 0x7373a6f8 за один запуск). (У меня есть ICD устройства, поэтому у меня есть карта памяти mmap'd, вот как я могу найти этот адрес, и как в конце я хочу установить SET на свой собственный адрес, и, следовательно, / dev / mem на картах ниже)
Кажется, я не могу отобразить память вокруг этого старшего адреса, предположительно из-за того, что он вне моей виртуальной памяти и я заблокирован ядром?
То, что я хочу сделать, это либо использовать (сопоставить) данный адрес, чтобы я мог читать / записывать его, ИЛИ создавать собственную физическую память, которую я могу читать / записывать.
# cat /proc/iomem
00000000-0009fbff : System RAM
00000000-00000000 : Crash kernel
000a0000-000bffff : Video RAM area
000c0000-000c7fff : Video ROM
000f0000-000fffff : System ROM
00100000-7fd64fff : System RAM # Is this all of /dev/mem?
00400000-00612916 : Kernel code
00612917-006ef9db : Kernel data
# cat /proc/3450/maps
08207000-08228000 rw-p 08207000 00:00 0 [heap]
b7e7b000-b7f85000 rw-p b7e7b000 00:00 0
b7f89000-b7f8a000 rw-p b7f89000 00:00 0
b7f8a000-b7f8b000 rw-s 80114000 00:11 1541 /dev/mem
b7f8b000-b7f8d000 rw-p b7f8b000 00:00 0
bff70000-bff85000 rw-p bffea000 00:00 0 [stack]