主题 : 求助:fpga连接mini2440 出问题 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 11101
精华: 0
发帖: 35
金钱: 205 两
威望: 59 点
综合积分: 70 分
注册时间: 2009-11-27
最后登录: 2018-02-08
楼主  发表于: 2009-12-23 16:38

 求助:fpga连接mini2440 出问题

本人近日在做一个驱动,思路是这样的:fpga作为存储器设备通过nGCS5片选信号连接到mini2440的CON5系统总线上。驱动里面定义了读写函数,可是我发现根本就写不进去。。。用我编写的简单的测试程序,测了一下,write的时候,似乎没有调用驱动里的write函数。后来我又试了用echo 2214 >/dev/fpga 这样的命令,然后就出现一堆错误(如下所示),板子的系统就重启了。。我不知道怎么调试驱动和应用程序,上午看了半天debug,也没有收获。。。郁闷啊。。。我在申请内存的时候,也用check_mem_region检查了一下啊,怎么还是有错呢?

[root@FriendlyARM /tmp]# echo 123456 >/dev/fpga
fpga_open ok
write beginnig!
Unable to handle kernel paging request at virtual address c482e000
pgd = c3a30000
[c482e000] *pgd=33818011, *pte=00000000, *ppte=00000000
Internal error: Oops: 807 [#1]
Modules linked in: spartan3_driver
CPU: 0    Not tainted  (2.6.29.4-FriendlyARM #3)
PC is at fpga_write+0xf4/0x114 [spartan3_driver]
LR is at 0x34333231
pc : [<bf00013c>]    lr : [<34333231>]    psr: 20000013
sp : c3ab7f38  ip : 0000000a  fp : c3ab7f54
r10: 00000000  r9 : c3ab6000  r8 : c0029008
r7 : 00000004  r6 : c38c3768  r5 : 00000007  r4 : 00000002
r3 : c38c3768  r2 : 00003132  r1 : 00000031  r0 : c482e000
Flags: nzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
Control: c000717f  Table: 33a30000  DAC: 00000015
Process sh (pid: 538, stack limit = 0xc3ab6268)
Stack: (0xc3ab7f38 to 0xc3ab8000)
7f20:                                                       c3acdc80 4001f000
7f40: c3ab7f78 00000004 c3ab7f74 c3ab7f58 c0089264 bf000058 00000000 00000000
7f60: c3acdc80 00000004 c3ab7fa4 c3ab7f78 c008937c c00891c0 00000000 00000000
7f80: c0094adc 00000000 000ad298 00000007 4001f000 402355e8 00000000 c3ab7fa8
7fa0: c0028e60 c0089340 00000007 4001f000 00000001 4001f000 00000007 00000000
7fc0: 00000007 4001f000 402355e8 00000004 00000007 00000000 000ad008 000ad294
7fe0: 4001f000 beecb618 401735e0 401c4acc 60000010 00000001 304b5031 304b5431
Backtrace:
[<bf000048>] (fpga_write+0x0/0x114 [spartan3_driver]) from [<c0089264>] (vfs_wr) r7:00000004 r6:c3ab7f78 r5:4001f000 r4:c3acdc80
[<c00891b0>] (vfs_write+0x0/0xe8) from [<c008937c>] (sys_write+0x4c/0x84)
r7:00000004 r6:c3acdc80 r5:00000000 r4:00000000
[<c0089330>] (sys_write+0x0/0x84) from [<c0028e60>] (ret_fast_syscall+0x0/0x2c)
r6:402355e8 r5:4001f000 r4:00000007
Code: e2844002 e5d32001 e1550004 e1822401 (e0c020b2)
---[ end trace c54552daee0293fa ]---
级别: 新手上路
UID: 11689
精华: 0
发帖: 11
金钱: 55 两
威望: 11 点
综合积分: 22 分
注册时间: 2009-12-18
最后登录: 2011-10-21
1楼  发表于: 2009-12-23 17:52
小弟目前也是做同样工作.
只是目前还在测需要用到CON5哪些针脚讯号...
请问版主是如何接的??工作模式是?
版主的驱动问题可能要看源码才知问题所在
级别: 新手上路
UID: 11101
精华: 0
发帖: 35
金钱: 205 两
威望: 59 点
综合积分: 70 分
注册时间: 2009-11-27
最后登录: 2018-02-08
2楼  发表于: 2009-12-23 20:00

 回 1楼(ikki) 的帖子

我就是用40pin的线直接连起来了。。。自己画的fpga pcb
级别: 新手上路
UID: 11101
精华: 0
发帖: 35
金钱: 205 两
威望: 59 点
综合积分: 70 分
注册时间: 2009-11-27
最后登录: 2018-02-08
3楼  发表于: 2009-12-23 21:07
已经不报错啦,哈哈~~原来是我申请的内存空间少,用的多,所以就出问题了
但是,为什么我编写的应用程序,调用write函数,还是不成功呢,也不报错,就是把我写进去的字符给打印出来了,但是好像根本就没进入驱动的write函数中。。奇怪??继续求高人指点
级别: 新手上路
UID: 11689
精华: 0
发帖: 11
金钱: 55 两
威望: 11 点
综合积分: 22 分
注册时间: 2009-12-18
最后登录: 2011-10-21
4楼  发表于: 2009-12-24 08:57
有可能是major number不对..
可以检查driver中指定的major number与 /dev/fpga(或是版主自定名称) 装置的major number是否一致..

另外请问版主FPGA上是否已有电路将总在线讯号抓下?
总在线的讯号该如何使用?
级别: 新手上路
UID: 11101
精华: 0
发帖: 35
金钱: 205 两
威望: 59 点
综合积分: 70 分
注册时间: 2009-11-27
最后登录: 2018-02-08
5楼  发表于: 2009-12-24 09:52
major number我认为是没问题,要不然mknod就会出错吧? fpga对应部分的电路还没有实现,近期可能做好,会调试一下