Linux系统mmap函数映射物理地址
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函数映射物理地址相关推荐
- mmap函数映射物理地址失败指针全F问题解决
1.mmap 的优点 1)实现了用户空间和内核空间的高效交互方式.两空间的各自修改操作可以直接反映在映射的区域内,从而被对方空间及时捕捉. 2)提供进程间共享内存及相互通信的方式.不管是父子进程还是无 ...
- Linux系统:内存映射概念以及相关函数(mmap、munmap、msync)介绍
Linux系统:内存映射概念以及相关函数(mmap.munmap.msync)介绍 1.1 基本概念 内存映射根据种类分为: 文件映射:将一个文件的一部分直接映射到虚拟进程地址空间中,虚拟进程地址空间 ...
- 标准C库IO函数和Linux系统IO函数对比
标准C库IO函数和Linux系统IO函数对比 man 3 fopen #查看函数详情 虚拟地址通过mmu映射到真是的地址空间
- linux 函数手册 在线,Linux系统API函数手册
Linux系统API函数手册 (34页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 11.90 积分 (一)文件操作篇 1.creat(建立文件)头文件1 ...
- Linux系统中端口映射是什么意思?
百度百科中解释说:端口映射是NAT的一种,功能是把在公网的地址转翻译成私有地址,采用路由方式的ADSL宽带路由器拥有一个动态或固定的公网IP,ADSL直接接在HUB或交换机上,所有的电脑共享上网.那么 ...
- 【Linux系统IO函数】lseek函数
Linux系统IO函数-lseek函数 1.1 lseek函数与标准C库的fseek函数 lseek函数对应标准C库中的fseek函数 查看标准C库中的fseek函数使用说明: (shell输入) m ...
- linux进程的通信文件映射,Linux进程间通信 -- mmap函数的使用
mmap/munmap函数 函数原型 #include void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t ...
- Linux的mmap内存映射机制解析
在讲述文件映射的概念时,不可避免的要牵涉到虚存(SVR 4的VM).实际上,文件映射是虚存的中心概念,文件映射一方面给用户提供了一组措施,好似用户将文件映射到自己地址空间的某个部分,使用简单的内存访问 ...
- linux mmap 函数详解,Linux之mmap函数简介
本文主要讲述mmap 函数的使用,与驱动中 mmap 函数的实现 mmap 怎么使用,怎么实现,为什么 mmap 可以减少额外的拷贝? 下面简单详情. 一. mmap 的使用#include void ...
最新文章
- 一文看懂Modbus协议
- SDN第三次上机作业
- python在线教学-python在线教学
- onmousewheel
- ElasticSearch初体验之使用Java进行最基本的增删改查
- 你可能不需要 jQuery!使用原生 JavaScript 进行开发
- ArcSDE数据库连接(直连、服务连)与GT_Geometry存储配置图解
- Caffe学习 五 conv_layer与im2col
- ELK 使用filebeat替代Logstash收集日志
- R与Python手牵手:数据探索性分析案例展示
- python_文件读写_提取kitti数据集中带时间戳的IMU测量数据
- Windows之远程访问×××的简单部署
- 丹佛斯冷媒尺汉化下载_koolapp手机版
- FreeMarker下拉列表选中值回显
- 电路串联和并联图解_串联电路和并联电路
- cdr 表格自动填充文字_CDR插件表格安装教程
- 博弈论题目集 (持续更新)
- serverlet增删改查项目代码
- fps透视基础-3分钟快速定位矩阵基址-附3D坐标转屏幕坐标算法
- Android P应用显示宽高比maxAspectRatio使用及原理
热门文章
- 一声“天猫精灵”,透视中国AIoT产业带的造风样本
- 2.CA一维元胞自动机(netlogo)
- windows桌面待办事项_怎么在电脑上添加一款桌面提醒便签小软件提高办公效率...
- 2023五一杯数学建模A题B题C题思路分析汇总 五一数学建模思路
- Revit二开-设备(消防箱)翻模
- 一加手机怎么root权限_一加手机3 root教程 一加3获取root权限的方法
- django+wkhtmltopdf后端生成pdf
- Linux下静态库(.a)和动态库(.so) 的生成与使用
- 人人商城前期下单,系统首单为复购
- 软件产品测试之压力测试