Linux系统mmap函数映射物理地址

  • 代码
    • 64位报错

代码

在某些特殊情况下,我们只是想要读取某个寄存器的值或者某个地址的值,不需要去专门写一个驱动模块来实现,可以使用mmap函数配合/dev/mem设备来把物理地址映射到虚拟地址中。
代码中,mmap参数0,代表让系统分配地址(映射的地址)。0x1000为映射区域大小,BASE_ADDR为想要映射的物理地址,CPLD_VER_BCD等是相对于BASE_ADDR的偏移量。

/*read physical address*/
/*author:LK*/
int open_phy_addr()
{int map_fd = open("/dev/mem", O_RDWR);if(map_fd < 0){printf("cannot open /dev/mem.\n");return -1;}void *start = mmap(0, 0x1000, PROT_READ | PROT_WRITE, MAP_SHARED, map_fd, (BASE_ADDR));if(start == MAP_FAILED){printf("mmap failed!\n");return -1;}//printf("start:0x%x\t\n",start);printf("BCD:\t");printf("%04x,", *(uint *)(start+CPLD_VER_BCD));printf("\n");printf("B0 :\t");printf("%04x,", *(uint *)(start+SEC_CODE_B0));printf("\n");printf("B1 :\t");printf("%04x,", *(uint *)(start+SEC_CODE_B1));printf("\n");printf("B2 :\t");printf("%04x,", *(uint *)(start+SEC_CODE_B2));printf("\n");printf("B3 :\t");printf("%04x,", *(uint *)(start+SEC_CODE_B3));printf("\n");if(munmap(start, 0x1000) == -1){printf("munmap error!\n");return -1;}close(map_fd);return 0;
}

64位报错

当使用mmap函数在一块板卡上映射物理地址时,始终报错。最终发现mmap函数仅支持32位地址。需要使用mmap64来代替mmap函数。其他代码无需改变。

Linux系统mmap函数映射物理地址相关推荐

  1. mmap函数映射物理地址失败指针全F问题解决

    1.mmap 的优点 1)实现了用户空间和内核空间的高效交互方式.两空间的各自修改操作可以直接反映在映射的区域内,从而被对方空间及时捕捉. 2)提供进程间共享内存及相互通信的方式.不管是父子进程还是无 ...

  2. Linux系统:内存映射概念以及相关函数(mmap、munmap、msync)介绍

    Linux系统:内存映射概念以及相关函数(mmap.munmap.msync)介绍 1.1 基本概念 内存映射根据种类分为: 文件映射:将一个文件的一部分直接映射到虚拟进程地址空间中,虚拟进程地址空间 ...

  3. 标准C库IO函数和Linux系统IO函数对比

    标准C库IO函数和Linux系统IO函数对比 man 3 fopen #查看函数详情 虚拟地址通过mmu映射到真是的地址空间

  4. linux 函数手册 在线,Linux系统API函数手册

    Linux系统API函数手册 (34页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 11.90 积分 (一)文件操作篇 1.creat(建立文件)头文件1 ...

  5. Linux系统中端口映射是什么意思?

    百度百科中解释说:端口映射是NAT的一种,功能是把在公网的地址转翻译成私有地址,采用路由方式的ADSL宽带路由器拥有一个动态或固定的公网IP,ADSL直接接在HUB或交换机上,所有的电脑共享上网.那么 ...

  6. 【Linux系统IO函数】lseek函数

    Linux系统IO函数-lseek函数 1.1 lseek函数与标准C库的fseek函数 lseek函数对应标准C库中的fseek函数 查看标准C库中的fseek函数使用说明: (shell输入) m ...

  7. linux进程的通信文件映射,Linux进程间通信 -- mmap函数的使用

    mmap/munmap函数 函数原型 #include void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t ...

  8. Linux的mmap内存映射机制解析

    在讲述文件映射的概念时,不可避免的要牵涉到虚存(SVR 4的VM).实际上,文件映射是虚存的中心概念,文件映射一方面给用户提供了一组措施,好似用户将文件映射到自己地址空间的某个部分,使用简单的内存访问 ...

  9. linux mmap 函数详解,Linux之mmap函数简介

    本文主要讲述mmap 函数的使用,与驱动中 mmap 函数的实现 mmap 怎么使用,怎么实现,为什么 mmap 可以减少额外的拷贝? 下面简单详情. 一. mmap 的使用#include void ...

最新文章

  1. 一文看懂Modbus协议
  2. SDN第三次上机作业
  3. python在线教学-python在线教学
  4. onmousewheel
  5. ElasticSearch初体验之使用Java进行最基本的增删改查
  6. 你可能不需要 jQuery!使用原生 JavaScript 进行开发
  7. ArcSDE数据库连接(直连、服务连)与GT_Geometry存储配置图解
  8. Caffe学习 五 conv_layer与im2col
  9. ELK 使用filebeat替代Logstash收集日志
  10. R与Python手牵手:数据探索性分析案例展示
  11. python_文件读写_提取kitti数据集中带时间戳的IMU测量数据
  12. Windows之远程访问×××的简单部署
  13. 丹佛斯冷媒尺汉化下载_koolapp手机版
  14. FreeMarker下拉列表选中值回显
  15. 电路串联和并联图解_串联电路和并联电路
  16. cdr 表格自动填充文字_CDR插件表格安装教程
  17. 博弈论题目集 (持续更新)
  18. serverlet增删改查项目代码
  19. fps透视基础-3分钟快速定位矩阵基址-附3D坐标转屏幕坐标算法
  20. Android P应用显示宽高比maxAspectRatio使用及原理

热门文章

  1. 一声“天猫精灵”,透视中国AIoT产业带的造风样本
  2. 2.CA一维元胞自动机(netlogo)
  3. windows桌面待办事项_怎么在电脑上添加一款桌面提醒便签小软件提高办公效率...
  4. 2023五一杯数学建模A题B题C题思路分析汇总 五一数学建模思路
  5. Revit二开-设备(消防箱)翻模
  6. 一加手机怎么root权限_一加手机3 root教程 一加3获取root权限的方法
  7. django+wkhtmltopdf后端生成pdf
  8. Linux下静态库(.a)和动态库(.so) 的生成与使用
  9. 人人商城前期下单,系统首单为复购
  10. 软件产品测试之压力测试