我期待在Linux上实现CAN总线通信的驱动程序 需要一些设计建议。
Linux有用户空间&内核空间。驱动程序在用户空间的内核空间应用程序中运行。1>现在假设如果以非常高的速度接收数据包,那么驱动程序如何管理这种情况呢?
2 - ;如果数据包必须以高速传输那么该怎么做?
3>如何在用户和用户之间移动数据内核空间。我们应该使用系统调用还是除此之外的一些快速机制?
4>可以在内核级别的线程中完成吗?但是如果在内核级别有两个线程从CAN总线运行到TX并且从CAN总线接收RX然后我们必须使用互斥锁来保存关键部分(即我们的内部寄存器)
5个假设共享库用于从应用程序访问驱动程序。 共享库可以使用系统调用来访问驱动程序功能吗?
完全混淆应该是正确的方法。
请建议。任何回复都会很明显。
答案 0 :(得分:0)
与您希望运行Linux的大多数处理器相比,数据速率CAN并不是那么快。大多数公交车的载重量低于60%,仅为60kB / s!从用户空间到内核空间的简单数据包FIFO应该没问题。
如果您有按时完成传输邮件的实时截止日期,那么可能会出现问题。或者更糟糕的是在给定时间段内响应于所接收的消息而发送消息。如果你有这些要求中的任何一个,Linux可能不适合你 - 你需要一个合适的实时操作系统(RTOS)。