#define cpld_addr 0x81000000 在一个驱动测试里: int test_init() { unsigned int i = 0; void *addr; addr = ioremap(CPE_CPLD_BASE, 0x3ff); printk("cpld addr : %x\n",addr); i = readl(addr); printk("cpld readl %d\n",i); } insmod 后地址是映射到 0xc...... 3G以后空间. 然活就不断报错 External DataAbo...
by dida_327 - 内核/嵌入技术 - 2006-12-07 14:35:47 阅读(686) 回复(0)
我用at91rm9200外挂一块fpga,它的读写速度最快能达到多少呢? u32 p; p=ioremap(test_add1,2); *(volatile unsigned short *)p=0x22; p=ioremap(test_add2,2); *(volatile unsigned short *)p=0x33; 写这两个地址的时候 cs有效的时间(低电平)为220ns,两个之间间隔为175us,这样太慢了, 我刚刚又测试了一下,如果 u32 p; p=ioremap(test_add1,2); *(volatile unsigned short *)p=0x22; p=ioremap(test_add2,...
ioremap()的原形是void*ioremap(unsigned long offset,unsigned long size); 请问这里的offset和size是指物理地址的吗,返回值是虚拟地址对吗
由于要访问大内存(over 4G),所以要使用以上几个函数。
但是在使用过程中遇到几个问题:
1. mmap2按照man里说的,include了
[code]/*mycp.c*/
#include
FILE* ptr; 文件是以 fd=open(tim,O_RDONLY|O_WRONLY|O_CREAT,S_IRWXU) 打开! ptr=(FILE*)mmap(NULL,sb.st_size,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0); 这样使用mmap有错误没? mmap不是返回一个void*吗?
#include
#include
typedef struct{ char name[4]; int age; }people; main(int argc, char** argv) { int fd,i; int pagesize,offset; people *p_map; pagesize = sysconf(_SC_PAGESIZE); printf("pagesize is %d\n",pagesize); fd = open(argv[1],O_CREAT|O_RDWR|O_TRUNC,00777); lseek(fd,pagesize*2-100,SEEK_SET);//设置文件大小。因为mmap不能改变文件大小 write(fd," ",1); offset = 0; //此处offset = 0编译成版本1;offset = pag...
hi, all 我用mmap把一个elf格式的可执行文件放入内存. mmap一直返回错. 我的代码如下: stat (file, &file_stat); fd = open(file, O_RDONLY); ret_val = mmap(NULL, file_stat.st_size, PROT_READ, MAP_PRIVATE|MAP_FILE|MAP_VARIABLE, fd, getpagesize()); 为什么ret_val老是-1. 我的环境是salories. 谢谢