Я хочу создать модуль ядра для чтения содержимого адресов памяти (RAM) после перезагрузки. Как определить адреса или диапазоны памяти, которые я могу прочитать и которые не используются системой.
Мой код:
#include <linux/module.h>
#include <linux/kernel.h>
int init_module(void)
{
long start_addr;
long end_addr;
long *i;
long *start;
long *end ;
start_addr = 0xffffffbffc00201c; //
end_addr = 0xffffffbffc00303c; //
start= (long*)start_addr ;
end= (long*)end_addr;
for(i=start ; i <= end ; i++ ){
printk(KERN_ALERT "\nThe Address = 0x%p\n", i);
printk(KERN_ALERT "\nThe content = %lx\n", *i);
}
return 0;
}
void cleanup_module(void)
{
printk(KERN_ALERT "Goodbye world 1.\n");
}
Все адреса являются виртуальными, кроме случаев сопоставления для определенного устройства. Неиспользуемые виртуальные адреса будут ошибаться при чтении.
Цель состоит в том, чтобы изучить поведение значения запуска оперативной памяти, чтобы построить либо генерацию случайных чисел на основе DRAM, либо PUF на основе DRAM.





Вы ищете, какие адреса помечены как доступные, которые выделены другим процессам и доступны из всех процессов?