3

这是问题所在:我需要通过 PIO 的 2 个引脚(1 个时钟,1 个数据)对一些硬件进行编程。时序限制很严格——10ms 时钟周期时间。当然,这一切都是在我维护非常高级别的服务(CAN 总线、TCP/IP)的同时。下游单元还通过将配置为输入的 PIO 引脚置为高电平来确认。所以这个循环必须读写。我需要在串行流中发送 16 位。

有没有一种既定的方法来做这种事情,或者我应该让硬件人员添加一个 PIC 或类似的东西。

在这个阶段,我更愿意避免像 RTAI 扩展这样的外来事物。我确实曾经看到过对用户模式 ​​IO 的引用,它暗示了一个可能的中断驱动驱动程序,但忘记了它。

欢迎任何指点。

4

1 回答 1

0

根据我的经验,最简单的方法是编写内核驱动程序。当然,前提是它不存在——1 个时钟、1 个数据听起来像 i2c(尽管 10ms 周期听起来比 i2c 慢得多),并且已经存在用于 Coldfire 的位碰撞 i2c 驱动程序。即使不是 i2c,您也可能会发现 i2c-adap-mcf_gpio 用作起点。

您实际上很幸运,因为它是一个 10 毫秒的周期——默认内核节拍是 10 毫秒(必要时可以调整),因此您应该能够使用适当的内核睡眠功能。

(这也取决于您使用的内核。简单的用户模式 ​​I/O 在 2.6 内核中很容易使用——2.4 内核中有一些特性,但它们可能需要更多的工作。)

于 2010-09-04T15:29:10.610 回答