linux设备寄存器映射,在Linux用户空间中访问硬件寄存器

本文档展示了在Linux用户空间尝试通过mmap函数访问OMAP3530硬件寄存器的代码,但遇到了'权限被拒绝'的错误。代码中尝试打开'/dev/mem'设备文件,然后映射内存以读写访问指定地址的寄存器。然而,由于权限问题,mmap操作未能成功,导致内存映射失败。
摘要由CSDN通过智能技术生成

我想写Linux用户空间中OMAP3530上的硬件寄存器.请找到下面的代码. Mmap返回错误:

内存映射失败.错误-1

mmap:权限被拒绝

#include

#include

#include

#include

#include

#include

#define BASE_ADDRESS 0x48050000

int main()

{

int mem;

unsigned int *value;

void *ptr;

/* Open /dev/mem */

if ((mem = open ("/dev/mem", O_RDONLY | O_SYNC)) == -1)

fprintf(stderr, "Cannot open /dev/mem

"), exit(1);

ptr = mmap (0, 8192, PROT_READ|PROT_WRITE, MAP_SHARED, mem, BASE_ADDRESS);

if(ptr == (void *) -1) {

printf("Memory map failed. error %i

", ptr);

perror("mmap");

}

value = (unsigned int*)(ptr + 0x4BC+((1-1)*0x90)+(0*0x04));

*value = 479*799*3-4;

printf("value = %i", value);

value = (unsigned int*)(ptr + 0x4C4+((-1)*0x90));

*value = 1;

printf("value = %i", value);

value = (unsigned int*)(ptr + 0x4C8+((-1)*0x90));

*value = 1;

printf("value = %i", value);

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值