0

我期待在 Linux 中实现 CAN 总线通信的驱动程序。
需要一些设计建议。

Linux有用户空间和内核空间。驱动程序在用户空间的内核空间应用程序中运行。

1> 现在假设如果以非常高的速度接收数据包,那么驱动程序如何处理这种情况?

2> 如果数据包必须以高速率传输,那该怎么办?

3> 数据应该如何在用户和内核空间之间移动。我们应该使用系统调用还是除此之外的一些快速机制?

4> 可以在内核级别的线程中完成吗?但是,如果有两个线程在内核级别运行,从 CAN 总线到 TX,从 CAN 总线到 RX,那么我们是否必须使用互斥锁来保存关键部分(即我们的内部寄存器)

5> 如果假设共享库用于从应用程序访问驱动程序。共享库可以使用系统调用访问驱动程序功能吗?

完全混淆什么应该是正确的方法。

请建议。任何答复将是可观的。

4

1 回答 1

0

与您希望在其上运行 Linux 的大多数处理器相比,数据速率方面的 CAN 并没有那么快。大多数公共汽车的负载低于 60%,即只有大约 60kB/s!从用户空间到内核空间的简单数据包 FIFO 应该没问题。

如果您有按计划传输消息的硬实时截止日期,则可能会出现问题。或者更糟糕的是,在给定的时间段内响应接收到的消息发送消息。如果您有这些要求中的任何一个,Linux 可能不适合您——您需要一个合适的实时操作系统 (RTOS)。

于 2012-12-04T10:19:08.240 回答