|
我有一个PCI DSP的驱动,原先用于X86,可以正常使用,交叉编译到mips下。加载使用时出现这样的问题:
1. 将DSP的内存通过ioremap()映射到内核空间,可以正常访问。
2.再将DSP的内存通过mmap()映射到用户空间,却出错:data bus error.
请问这是什么原因?这个驱动在X86下是可以正常使用的。驱动的mmap方法也一样。
驱动mmap的映射函数如下:
int dsp_mmap(struct file *filp, struct vm_area_struct *vma)
{
//.....................//省了获取DSP物理地址部分
//vma->f_flags = MAP_SHARED;用户程序调用mmap()时设置的;
if(remap_pfn_range(vma,
vma->vm_start,
physical>>PAGE_SHIFT, // DSP的物理地址是0x08000000;
vsize, //DSP的内存是64MB
vma->vm_page_prot //用户程序调用mmap()时,设置了可读写PROT_READ | PROT_WRITE。
))
{
DPF(0,
("remap_page_range failed.\n"));
return -EAGAIN;
}
//..............................//返回
} |
|