最近移植一个加密IC,在其他软件平台通讯是OK了,但到了LINUX就不行了,通讯时好时坏。经过一番郁闷痛苦的调试,终于调试通过。
问题在于LINUX驱动中使用的延时函数为msleep,网上查询到此函数并不是精准的延时,也就是说每次延时的时间不确定,从结果看来,这对于本次使用的加密IC来说是个灾难。问题的原因涉及到加密IC的功能设计,因此也无法完全解开疑惑。解决的办法比较简单,使用mdelay就可以了。
总结一下,调试时如果出现问题时,可以尝试着怀疑msleep。
最近移植一个加密IC,在其他软件平台通讯是OK了,但到了LINUX就不行了,通讯时好时坏。经过一番郁闷痛苦的调试,终于调试通过。
问题在于LINUX驱动中使用的延时函数为msleep,网上查询到此函数并不是精准的延时,也就是说每次延时的时间不确定,从结果看来,这对于本次使用的加密IC来说是个灾难。问题的原因涉及到加密IC的功能设计,因此也无法完全解开疑惑。解决的办法比较简单,使用mdelay就可以了。
总结一下,调试时如果出现问题时,可以尝试着怀疑msleep。