我不知道,如果这个问题是有关在这里或超级用户,但要求无论如何。

我下面提到的安装Linux桌面电脑系统。这是连接一个自定义FPGA发展理事会。在这FPGA有以太网络卡IP实现和执行。该委员会连接到FPGA发展理事会使用USB接口USB线,并串行总线。从本质上讲,这整个安装测试FPGA基于网络卡和相关的以太网驱动实现其上。

有许多应用程序运行在主linux的电脑和数据发送给FPGA基于网n/w卡,其接受它,没有必要处理和发送物理层意识到在FPGA然后发送出去过以太网络的一些其他节点/设备上的网络。

这种设置正常工作,即使在多个应用程序主机的电脑数据发送到FPGA网卡。作为一个应用程序,我使用一个基于Linux的多播放机(其多媒体播放器),以玩一些多媒体流离Linux的主机和数据发送给FPGA网卡。在多播放机,我要求(反的/前进)的流使用的多播放机的控制。当我这样做寻求连续操作,它使linux主机计算机。挂/冻结。没有i/o设备的工作,只有重新启动工作。

现在我想看到的日志在linux主pc/var/log((在)),看看我得到一个线索关于什么的过程/程序造成的冻结,但我不能获得任何投入。

  1. 我怎么进行隔离不同的部件(用软件、硬件)涉及在这个整体设置的地雷对狭窄的问题的根本原因?

  2. 是否有任何方式的通信的冷冻linux的主通过某种手段(串行总线或其他一些连接,以获得的任何数据的时候挂?

  3. 什么步骤,我应该遵循?我怎么能告诉我们,如果多应用程序的问题或FPGA网卡的司机是一个问题,或是其他什么东西?

任何指针将是有益的。

谢谢。

-广告。

有帮助吗?

解决方案

你说的Linux主机被冻结。我将首先确定它是否实际上锁在内核,或者如果有一些用户的空间进程(es)消耗了太多的CPU。

可以主要ping(最好在一个单独的接口从你的FPGA以太网卡)?如果答复,内核不是锁起来。

硬件的问题?

如果可能的话,可以安装被暂时改变,以消除FPGA以太网卡,然后重现的问题?我会做这有助于隔离问题有关的具体硬件(FPGA以太网)。

用户的空间(软件)的问题?

如果你移除多从式的,可你还得到监狱/挂发生通过使用另一种方法生成的网流量?

你可以尝试创造一个壳运行至一个更高的优先,以便检索的数据时,系统似乎挂起。也许可以通过运行这个高优先级的外壳可以确定谁,如果任何人使用所有的CPU。你可以运行此外壳通过网络(telnet/ssh)或通过一种序列的终端。

#include <errno.h>
#include <sched.h>
#include <stdio.h>
#include <unistd.h>

int main()
{
    struct sched_param scheduling_parameters;

    scheduling_parameters.sched_priority = 10;

    if (sched_setscheduler(getpid(), SCHED_FIFO, &scheduling_parameters) < 0) {
        printf("error is %d\n", errno);
    }

    execlp("/bin/bash", "bash",0, 0, 0, 0);

    return 0;
}

核(软件)的问题?

你可以启用 魔法sysrq关键 和检查系统的状态,并从那里走。内核开发人员使用这个接口调试他们的软件。该CONFIG_MAGIC_SYSRQ的选择已经被启用了在编制内核的时间,以便使用这一功能。

之后根据经验缩小的错误降到一个具体模块,printk()仍然是一个很好的资源。

它也可能有助于使核debugger(KDB)和连接到这通过一串行总线。

其他提示

@Jscheimer:谢谢你的详细指针在我的问题。后很多的调试和一些讨论与其他系统的开发工作的地方,我终于找到根本原因。有一个DMA外围其进入图片在这整个安装。DMA是comfigured为排访问,但是某个地方在一些数据传送,这是接收一个地址不对齐,如果不检查的缓冲器对准我在代码,这是造成挂/冻结。没有模式为这种行为。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top