在dts里的配置为
ranges<1 0 0x09000000 0x01000000>
reg <1 0 0x01000000>
if ((ret = (gpmc_cs_request(GPMC_CS, SZ_4M, (unsigned long *)&mem_base))) < 0){
printk(KERN_ERR "Failed request for GPMC mem for usrp_e ret is %d.\n",ret);
return -1;
}
printk("Got CS1, address = %lx\n", mem_base);
if (!request_mem_region(mem_base, SZ_4M, "mem_fpga")) {
printk(KERN_ERR "Request_mem_region failed.\n");
gpmc_cs_free(GPMC_CS);
return -1;
}
大神们 现在问题是无论怎么设置dts里的rangesprintk打印出的 Got CS1,address的值始终是0,这个值不应该是0x09000000吗,问题可能出在哪啊
Steven Liu1:
你写的那段代码是在Linux kernel里面的吧?做了ioremap了么,没做的话可能是逻辑地址,并非实际的物理地址。
JUN HU:
回复 Steven Liu1:
这边跑android 4.03系统,在board-xxx.c里头配置过PIN脚。NOR flash,异步读写通讯,配置的基地址是32M,内存大小是16M, gpmc_cs_request后能获取到地址,但是ioremap后writew写地址却没有任何数据输出。请教下这个可能的原因是什么?