多谢大侠gooogleman!
FPGA是被动发送数据,arm送一个时钟FPGA发一个数据,这两个驱动,我单个单个加载都很正常,能正确正常接收到数据,也验证了FPGA是没问题的吧。当我先后加载这两个驱动后,发现中断IST都有进:
- // [b]中断EINT0和EINT1的IST类似[/b]
- while (1)
- {
- ret = WaitForSingleObject(gWaitEvent, INFINITE);
- if ((ret == WAIT_OBJECT_0) && (g_bKillIST == FALSE))
- {
- EINT_Count++; // 记录进入IST的次数
- //使用GPIO发送的时钟从FPGA读取数据到缓存
- for ()
- {
- //v_pIOPregs->rGPBDAT 设为高
- //从GPIO读FPGA数据,并存入缓存
- //v_pIOPregs->rGPBDAT 设为低
- }
- SetEvent(gReadKeyEvent[0]);
- }
- else
- {
- CloseHandle(gWaitEvent);
- RETAILMSG(1, (TEXT("::: EINT_IntrThread Exit. \r\n")));
- return 0;
- }
- InterruptDone(g_EINTSysIntr); /* 通知内核: 中断处理结束 */
- }
先后加载两个IST后,从串口打印的信息知道了,
- EINT_Count++; // 记录进入IST的次数
两个IST都有执行到,也记录下了进入IST的次数
但是,在数据处理这段程序,却只有最后加载的那个驱动能读取到数据
- //使用GPIO发送的时钟从FPGA读取数据到缓存
- for ()
- {
- //v_pIOPregs->rGPBDAT 设为高
- //从GPIO读FPGA数据,并存入缓存
- //v_pIOPregs->rGPBDAT 设为低
- }
从示波器上看到,只有其中一路有时钟输出。这是为什么啊?EINT_Count++不是有执行到吗,如果顺序执行的话,那数据处理这段程序那也应该能执行到啊,为什么会只有一路有输出呢?难道被阻塞掉啦?数据处理这段时间是很短的,我从示波器上可了就几百us。