[問題] 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