嵌入式专题: S5PV210 - s3c-mem设备节点的使用
2014-07-11 11:50
274 查看
/dev/s3c-mem这个设备节点,就是用来提供物理内存的,因为像FIMC这种设备的接口是需要物理地址的。。。反正这个平台就是号称什么硬件都有,但用起来都特别麻烦。
#ifndef _S3C_MEM_H #define _S3C_MEM_H #include <stdint.h> #include <sys/ioctl.h> #include "s3c_mem.h" class S3CMem { public: int open(); void close(); int aquire(s3c_mem_alloc* m); void release(s3c_mem_alloc* m); // 可能是要求物理地址 int dmacopy(void* dest, void* src, int size); private: int m_fd; }; #endif
#include <stdio.h> #include <string.h> #include <sys/mman.h> #include <fcntl.h> #include <unistd.h> #include "S3CMem.h" int S3CMem::open() { m_fd = ::open("/dev/s3c-mem", O_RDWR); if(m_fd < 0) { printf("failed to open s3c-mem !\n"); return -1; } return 0; } void S3CMem::close() { ::close(m_fd); } int S3CMem::aquire(s3c_mem_alloc* m) { m->phy_addr = m->vir_addr = 0; int ret = ioctl(m_fd, S3C_MEM_ALLOC, m); if(ret < 0) { return -1; } return 0; } void S3CMem::release(s3c_mem_alloc* m) { int ret = ioctl(m_fd, S3C_MEM_FREE, m); m->phy_addr = m->vir_addr = 0; } int S3CMem::dmacopy(void* dest, void* src, int size) { s3c_mem_dma_param p; p.size = size; p.src_addr = (unsigned int)src; p.dst_addr = (unsigned int)dest; p.cfg = 0; int ret = ioctl(m_fd, S3C_MEM_DMA_COPY, &p); if(ret != 0) return -1; return 0; }
相关文章推荐
- 嵌入式Linux之我行——设备文件系统剖析与使用
- 驱动中使用class_device_create()报错的原因,自动创建设备节点
- linux驱动开发--字符设备:通过cdd_cdev结构中的led变量区分是哪个节点,private_data使用
- 嵌入式专题: S5PV210 - MPEG4编码
- 嵌入式专题: S5PV210 - MPEG4解码(MFC)
- 使用GDB调试嵌入式Linux设备
- SPI驱动及设备节点使用讲解
- 嵌入式 globalmem虚拟字符设备驱动雏形
- 嵌入式设备使用的web服务器 ——thttpd移植
- 嵌入式 linux以及arm平台上网络设备测试工具iperf交叉编译以及使用
- device_create device_destroy 使用==mknod及通过class_create自动创建设备节点
- 嵌入式Linux系统中利用mdev自动创建设备文件节点
- 使用mdev自动创建多个major相同的设备节点
- device_create device_destroy 使用==mknod及通过class_create自动创建设备节点
- 关于使用 class_create,device_create,class_device_create 创建设备节点
- 嵌入式Linux之我行——设备文件系统剖析与使用
- 7z介绍、7z命令在linux的安装和使用、7z移植到嵌入式linux的系列专题汇总
- linux环境下调试嵌入式设备时出现Aborted、segmentation fault、卡死的问题以及关于指针使用的一点想法
- 嵌入式专题: S5PV210 - MFC硬件解码
- libcurl在嵌入式设备C 的使用