Я работаю с 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))
{
}
}