免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3829 | 回复: 6
打印 上一主题 下一主题

大家还,我在mini,pcie中的mips架构中ioremap时出现了问题,求高手帮忙解答 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-05-20 13:46 |只看该作者 |倒序浏览
在做pic驱动时ioremap映射过来的地址我没有办法访问writel没反映,readl就会报错,
具体错误如下
# insmod xbmd.ko                                                                                
//代码
gBaseHdwr = pci_resource_start (gDev, 0); //物理地址
                                                  
XPCIe_init: xbmd: Init: Base hw val 10100000

//代码
gBaseLen = pci_resource_len (gDev, 0); //大小
XPCIe_init: xbmd: Init: Base hw len 2048
//代码
gBaseVirt = ioremap(gBaseHdwr, gBaseLen);  //映射的后的地址                                                      
XPCIe_init: xbmd: Init: Virt HW address B0100000  
                                                
XPCIe_init: xbmd: Init: Initialize Hardware Done..                                                
XPCIe_init: xbmd driver is loaded

//在这里我对映射过来的地址进行操作
writel(1,  gBaseVirt);
printk("%x\n" ,readl(gBaseVirt));

编译后就出现这问题了                                                               
ar7240 data bus error: cause 0x80001c                                                            
Data bus error, epc == 800285a4, ra == c005ef24                                                   
Oops[#1]:                                                                                         
Cpu 0                                                                                             
$ 0   : 00000000 80220000 c0061b94 00000001                                                      
$ 4   : c005fd7c 81149ebc deadbeef b0100000                                                      
$ 8   : 8128c3f8 0000f400 00000000 81078000                                                      
$12   : 00000000 00000000 00000000 00000000                                                      
$16   : c0060000 80028594 c0060000 c0060000                                                      
$20   : 80015100 c0060000 c0060000 c0060000                                                      
$24   : 00000000 00000000                                                                        
$28   : 81148000 81149ea0 00400340 c005ef24                                                      
Hi    : 00000240                                                                                 
Lo    : 000001f8                                                                                 
epc   : 800285a4 printk+0x10/0x28     Tainted: GF                                                
ra    : c005ef24 XPCIe_init+0x2d8/0x4dc [xbmd]                                                   
Status: 1000f403    KERNEL EXL IE                                                                 
Cause : 0080001c                                                                                 
PrId  : 00019374                                                                                 
Modules linked in: xbmd ag7240_mod flowmac_mod                                                   
Process insmod (pid: 277, threadinfo=81148000, task=8128c000)                                    
Stack : 00000001 00000000 c0060000 80028594 c005ef24 c005eee0 000000a2 00000000                  
        c0061970 8021d964 01c00000 00000048 0000004c 00000028 801c0000 801c0000                  
        c00619c0 801c0000 801c5794 801c5788 004000cc 00000002 80046bc0 80046aa8                  
        00000000 000054f9 00000001 00000000 00000003 1001e008 000054f9 00000002                  
        7fa43f5b 7fa43ea4 8000ef00 8000ef00 10007fcc 10007f9c 10007fac 1001f17a                  
        ...                                                                                       
Call Trace:                                                                                       
[<80028594>] printk+0x0/0x28                                                                     
[<c005ef24>] XPCIe_init+0x2d8/0x4dc [xbmd]                                                      
[<c005eee0>] XPCIe_init+0x294/0x4dc [xbmd]                                                      
[<80046bc0>] sys_init_module+0x290/0x3b8                                                         
[<80046aa8>] sys_init_module+0x178/0x3b8                                                         
[<8000ef00>] stack_done+0x20/0x3c                                                               
[<8000ef00>] stack_done+0x20/0x3c                                                               
                                                                                                  
                                                                                                  
Code: afa5001c  27a5001c  afbf0010 <afa60020> 0c00a063  afa70024  8fbf0010  03e00008  27bd0018   
ready to read from fpga!                                                                          
Segmentation fault                                                                                


有没有知道到底是怎么了,求高手帮忙解答

论坛徽章:
0
2 [报告]
发表于 2013-05-20 16:33 |只看该作者
gBaseVirt = ioremap(gBaseHdwr, gBaseLen)这里的gBaseLen的值为0?

我用的arm,没用过mips,我一般会给第二个参数赋一个值,该值为4的整数倍,因为arm一个寄存器一般是4个字节大小~

论坛徽章:
0
3 [报告]
发表于 2013-05-21 15:07 |只看该作者
回复 2# fjlhlonng
谢谢你,虽然说得不对,真的很感谢你,这个是我一次映射的大小,gBaseLen = pci_resource_len (gDev, 0); //大小
XPCIe_init: xbmd: Init: Base hw len 2048, 2M  因为配置空间的BAR0的大小,还有别的解释吗,等下我拿四个字节试试,应该是不行的。



   

论坛徽章:
0
4 [报告]
发表于 2013-05-21 15:10 |只看该作者
这个是pcie,BAR0的值,2M的长度,和你说得性质上是一样的,还有没有别的解释啊

论坛徽章:
0
5 [报告]
发表于 2013-05-21 16:15 |只看该作者
回复 2# fjlhlonng
那个字我不是gBaseLen=2048吗,为什么说是零啊


   

论坛徽章:
0
6 [报告]
发表于 2013-05-22 14:31 |只看该作者
回复 1# niu_deng110
我也碰到类似的问题,不过是在powerpc下,ioremap后,用iowrite8写没问题,但读的时候ioread8会报下面的错:
有明白的给指点一下:
    Machine check in kernel mode.
Caused by (from SRR1=141030): Transfer error ack signal
Oops: Machine check, sig: 7 [#1]
SMP NR_CPUS=2 MPC86xx HPCN
Modules linked in: wch
NIP: c0013520 LR: f10e6750 CTR: c0013518
REGS: eed11be0 TRAP: 0200   Not tainted  (3.6.10)
MSR: 00141030 <ME,IR,DR>  CR: 24844024  XER: 20000000
TASK = eebb3000[2245] 'rcv05' THREAD: eed10000 CPU: 1
GPR00: f10e6744 eed11c90 eebb3000 00000007 00001032 0000000d c0225434 00000001
GPR08: 00001032 c05911e4 00a7a000 00000243 c0013518 10018ab8 100f0000 100f0000
GPR16: 100cf170 100f0000 40000000 eeabfc00 c05b554c 0f500000 eeb1c728 00000102
GPR24: c0432d34 c0432c20 00009032 00000000 eed3d000 eeb05720 f10ee2b0 00000000
NIP [c0013520] ioread8+0x8/0x18
LR [f10e6750] ser_startup+0x2f4/0x368 [wch]
Call Trace:
[eed11c90] [f10e6744] ser_startup+0x2e8/0x368 [wch] (unreliable)
[eed11cb0] [f10e723c] ser_open+0xf4/0x420 [wch]
[eed11d00] [c0209148] tty_open+0x1c8/0x5a8
[eed11d60] [c00bb580] chrdev_open+0xac/0x18c
[eed11d90] [c00b50f8] do_dentry_open.isra.15+0x208/0x2b0
[eed11db0] [c00b51cc] finish_open+0x2c/0x54
[eed11dc0] [c00c5ad4] do_last.isra.36+0x24c/0xad8
[eed11e30] [c00c6404] path_openat+0xa4/0x4a0
[eed11e90] [c00c6b60] do_filp_open+0x30/0x8c
[eed11f10] [c00b6158] do_sys_open+0x100/0x1d4
[eed11f40] [c0010448] ret_from_syscall+0x0/0x38
--- Exception: c01 at 0xff05c94
    LR = 0x10000660
Instruction dump:
38600003 4d9e0020 38600000 4e800020 2f840005 38600002 419e000c 38600000
4e800020 4e800020 7c0004ac 88630000 <0c030000> 4c00012c 5463063e 4e800020
---[ end trace 6f3aa9ac8769925f ]---

论坛徽章:
0
7 [报告]
发表于 2013-05-22 19:11 |只看该作者
回复 6# kucan2000
我头都大了,真的不知道为什么啊,看来我们都是同样的问题,可是就是没有人知道是为什么吗
  Q
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP