[问题] mmap 出的位置做 memcpy 失败问题

楼主: blueblance ( )   2017-09-06 23:20:05
各位好,我最近在玩cyclone v
遇到了一个问题,想在这边请问各位有经验的高手
if( ( fd = open( "/dev/mem", ( O_RDWR | O_SYNC ) ) ) == -1 ) {
printf( "ERROR: could not open \"/dev/mem\"...\n" );
return( 1 );
}
hps_framebuffer_base = mmap(NULL, Framebuffer_SPAN, ( PROT_READ | PROT_WRITE
), MAP_SHARED, fd,Framebuffer_OFFSET);
axi_virtual_base = mmap( NULL, HW_FPGA_AXI_SPAN, ( PROT_READ | PROT_WRITE ),
MAP_SHARED, fd,ALT_AXI_FPGASLVS_OFST );
在这边都能成功的做maping
h2p_memory_addr= axi_virtual_base + ( ( unsigned long )(
MEM_IF_DDR3_EMIF_0_BASE ) & ( unsigned long)( HW_FPGA_AXI_MASK ) );
hps_framebuffer_addr = hps_framebuffer_base + ( ( unsigned long )(
Framebuffer_BASE ) & ( unsigned long)( Framebuffer_MASK ) );
在这边我想将内存内的资料做复制
memcpy(h2p_memory_addr , hps_framebuffer_addr , 100);
就会出现segmentation fault
但我malloc一个 buffer
memcpy(h2p_memory_addr , buffer , 100); 这样是ok的 反之就不行
看起来像是我mmap出来的内存空间不能直接用memcpy的方式复制?
对于内存管理还有很多不懂的地方,不知道有没有人愿意告诉我,我在这边想错了什么
感谢~

Links booklink

Contact Us: admin [ a t ] ucptt.com