Почему я получаю сообщение «Доступ к пути запрещен», когда я пытаюсь использовать класс MemoryMappedFile для отображения содержимого / dev / mem? - PullRequest
0 голосов
/ 30 апреля 2019

Я работаю с de10 nano Intel SoC.Чтобы прочитать некоторые регистры из части FPGA из проекта с частью SO (дистрибутив Linux angstrom), я должен отобразить содержимое / dev / mem /.Я хочу сделать это с помощью кода ac #, с моно-средой выполнения в моем linux.

Я могу сделать это с помощью простой программы на c (код выше), и я нашел это с помощьюКласс MemoryMappedFile (код выше) Я должен быть в состоянии сделать это, но я продолжаю получать «System.UnauthorizedAccessException: доступ к пути запрещен как исключение».Я использую Linux как root, и если я попытаюсь отобразить другой файл с классом MemoryMappedFile, у меня не возникнет проблем.

Есть идеи?

C code:

if( ( fd = open( "/dev/mem", ( O_RDWR | O_SYNC ) ) ) == -1 ) {
        printf( "ERROR: could not open \"/dev/mem\"...\n" );
        return( 1 );
    }
    virtual_base = mmap( NULL, HW_REGS_SPAN, ( PROT_READ | PROT_WRITE ), MAP_SHARED, fd, HW_REGS_BASE );

    if( virtual_base == MAP_FAILED ) {
        printf( "ERROR: mmap() failed...\n" );
        close( fd );
        return( 1 );
    }

C # код

uint HW_REGS_BASE = 0xfc000000;
uint HW_REGS_SPAN = 0x04000000;

   using (MemoryMappedFile mmf = MemoryMappedFile.CreateFromFile("/dev/mem", FileMode.Open,null, HW_REGS_SPAN,MemoryMappedFileAccess.ReadWriteExecute))
            {

   using (var puntero = mmf.CreateViewAccessor(HW_REGS_BASE, HW_REGS_SPAN,MemoryMappedFileAccess.ReadWriteExecute))
                {
                }
            }

1 Ответ

0 голосов
/ 30 апреля 2019

Как насчет попробовать chmod,

ls -al /dev/mem

эта команда проверит права доступа к вашему файлу.

если права есть только у пользователя root, вы можете предоставить права доступа, например,

chmod 666 /dev/mem ..etc

Проверьте эту ссылку, если хотите знать chmod.

https://superuser.com/questions/295591/what-is-the-meaning-of-chmod-666

...