gpt4 book ai didi

linux - 映射/dev/mem 时出现段错误

转载 作者:太空宇宙 更新时间:2023-11-04 09:12:34 24 4
gpt4 key购买 nike

我正在尝试在我的 Zedboard SoC 上运行的 Linux 上从我的 FPGA 映射内存。我可以在命令行上使用 devmem 正确读取内容,但是当尝试通过 C 读取它时出现段错误。

下面显示的准系统代码在尝试打印内存内容时抛出段错误。我小心地使用页面大小的倍数以避免出现问题:

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/mman.h>

typedef unsigned int u32;

int main()
{
int page_size = sysconf(_SC_PAGESIZE);
printf("PAGESIZE = %d\n\r", page_size);

off_t bram_pbase = 0x42000000; // physical base address

u32 *bram32_vptr;

int fd = open("/dev/mem", O_SYNC);
printf("FD opened\n\r");

bram32_vptr = (u32 *)mmap(NULL, 2*page_size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, bram_pbase);

printf("%d \n\r", bram32_vptr[0]);

close(fd);
return 0;
}

为什么我不能读取内存?

最佳答案

我觉得问题是传递给 open 的标志它应该是这样的

fd = open("/dev/mem", O_RDWR|O_SYNC);

关于linux - 映射/dev/mem 时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53266622/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com