关于使用GPIO和CPLD通信的一个奇怪问题

jackydi 2014-06-30 04:01:02
这段时间遇到一个奇怪的问题,如下:

我使用GPIO与CPLD之间通信,软件通过GPIO接口向CPLD写入命令后,CPLD执行。

有的命令是单板自身程序运行时就定时写入,比如点灯,有的命令是通过服务器端下达到子卡,子卡程序解析后,再向cpld中写入命令,比如复位命令或者其他命令,问题就是出在这里。

同一个命令,如果在telnet上直接输入这个命令,每次都可以执行成功,但是如果是在服务器上下达命令,然后在程序中解析并执行这个命令,就不一定能执行成功,而函数接口都是同一个。

还有一个现象,就是如果这个命令中包含有打印函数,比如我在命令函数中,执行具体写入GPIO之前先打印一条语句,在服务器上下达命令就可以每次都执行成功了。当然包含其他操作也可能可以,不过我没有测试。

第三个现象,如果在一个CPLD命令中,CPLD同时执行两个操作,比如点灯和复位。在telnet上输入命令时可以都正确执行,但是如果从服务器上下达命令,就只是点灯,复位就不执行。看起来好像是CPLD中的问题,但是为什么会受到软件打印函数的影响呢?

谁能帮我分析一下这个问题是怎么回事?谢谢了
...全文
381 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
jackydi 2014-07-03
  • 打赏
  • 举报
回复
对于添加打印就可以成功复位的问题,也就可以理解了,打印语句间接起到了延时的作用,延长了复位信号的输出时长。
jackydi 2014-07-03
  • 打赏
  • 举报
回复
问题解决了。是CPLD程序写的有问题。原来CPLD程序中对复位命令的处理中使用了一个中间变量,控制输出复位信号的时长,但是这个变量在其他命令中也有操作。结果刚刚写入复位命令之后,其他在程序中的定时操作命令就把这个中间变量清除掉了,从而导致复位信号时长不够,复位失败。
jackydi 2014-07-02
  • 打赏
  • 举报
回复
引用 5 楼 lerd_cs 的回复:
在shell下直接输入命令,命令运行在优先级是1的shell任务中。程序解析执行时,优先级可能比较低,命令可能会被打断,影响时序? 命令中有没有加关中断,开中断的保护啊?
命令中没有加保护机制,不排除被打断的可能。 但是解释不了为什么执行命令前打印一条消息就可以成功的问题啊,在这种情况下,命令同样有可能被打断啊,而且几率应该是一样的。
lerd_cs 2014-07-02
  • 打赏
  • 举报
回复
在shell下直接输入命令,命令运行在优先级是1的shell任务中。程序解析执行时,优先级可能比较低,命令可能会被打断,影响时序? 命令中有没有加关中断,开中断的保护啊?
zhxianbin 2014-07-01
  • 打赏
  • 举报
回复
同一个命令,如果在telnet上直接输入这个命令,每次都可以执行成功,但是如果是在服务器上下达命令,然后在程序中解析并执行这个命令,就不一定能执行成功,而函数接口都是同一个。 最明显的可能 解析错了
jackydi 2014-07-01
  • 打赏
  • 举报
回复
引用 1 楼 u012586257 的回复:
时序问题?也许只是需要加一点点延时?打印程序起到延时作用
开始我也怀疑是写入GPIO的时序,但是为什么在同一个命令中,有的操作可以执行有的就不能执行呢?理论上讲,CPLD中的操作应该与处理器上运行的软件没有任何关系,但是从现在来看,确实还受到了影响,但是如果这样理解的话,也解释不了为什么在一个命令中,会执行一部分操作?
jackydi 2014-07-01
  • 打赏
  • 举报
回复
引用 3 楼 zhxianbin 的回复:
同一个命令,如果在telnet上直接输入这个命令,每次都可以执行成功,但是如果是在服务器上下达命令,然后在程序中解析并执行这个命令,就不一定能执行成功,而函数接口都是同一个。 最明显的可能 解析错了
这个.....应该不会。 与GPIO的接口命令是写在内核中的,服务器命令解析是在应用程序中完成的,解析完毕后,调用内核中的接口向GPIO中写入相应命令,不同命令使用不同的函数接口,因此可以排除函数参数的原因了。 另外,如果在内核中的接口命令中添加一条打印语句,则从服务器上下达命令是也能每次都执行成功,说明应用程序对服务器的命令解析是正确的。但是去掉内核命令中的打印语句,就不能执行成功了,应用程序对服务器的命令解析并没有修改。所以我才会感到奇怪。
mangoalx 2014-06-30
  • 打赏
  • 举报
回复
时序问题?也许只是需要加一点点延时?打印程序起到延时作用

2,179

社区成员

发帖
与我相关
我的任务
社区描述
xworks是美国 Wind River System 公司( 以下简称风河公司 ,即 WRS 公司)推出的一个实时操作系统。
社区管理员
  • VxWorks开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧