我有一个ARM目标。
我需要读出一个实际地址。 该地址是parralel NOR flash rom中的一个位置。 rom直接在地址总线上。
如果我创建一个模块:
if ((rmap = ioremap(ROM_BASE, ROM_SIZE)) == NULL)
{
printk(KERN_ERR "Mapping ROM failed\n");
return -1;
}
(使用基数0x40000000大小0x100) 如果失败: [1091.270686]映射ROM失败 insmod:插入'rom.ko'时出错:-1不允许操作
在这种情况下,目标没有/ dev / mem ... 但是对于不同的内核,它有...并且阅读相同的地址工作。 所以地址是正确和可读的。
由于
答案 0 :(得分:2)
手臂上的ioremap最终使用mtype = MT_DEVICE调用__arm_ioremap_pfn_caller,这可能会以多种方式失败:
有关ARM内存分配的更多信息,请检查this page