当前位置: 技术问答>linux和unix
请教个嵌入式读写错误的问题
来源: 互联网 发布时间:2016-07-28
本文导语: 由于不是做硬件的,所以问题描述起来可能会让您讲的不是很清晰,但是也非常盼望得到牛人您的帮助! 我是做嵌入式多媒体开发的,在anroid的平台上,用的是linux的内核。android多媒体处理是通过opencore进行处理...
由于不是做硬件的,所以问题描述起来可能会让您讲的不是很清晰,但是也非常盼望得到牛人您的帮助!
我是做嵌入式多媒体开发的,在anroid的平台上,用的是linux的内核。android多媒体处理是通过opencore进行处理。opencore就像Gstream等类似的多媒体处理架构。现在呢有视频不能解,会出错。然后查到后来发现往解码器的输入数据会有几个字节出错。出错后解码器就坏掉了。
追到后来,发现存取数据的buffer里面的数据就是错的。 而且我们的系统和驱动在smdk开发板上已经能够很好的运行,但是在我们自己的板子就会出现这种错误。
甚至:
oscl_memcpy(destBuf, _pCacheBufferStart + _currentCachePos, thisRead);
if(fpsrc)
fwrite(_pCacheBufferStart + _currentCachePos,1,thisRead,fpsrc);
if(fpdst)
fwrite(destBuf,1,thisRead,fpdst);
其中oscl_memcpy 的功能和memcpy一样。fpsrc 和fpdst 都是文件
上面的两个文件竟然每次都会有几个字节的不同!!!! 非常地奇怪!!!!
同样的操作在smdk板子,fpsrc和fpdst 是相同的,没有出错
opencore出错的可能性比较小,因为如果这里有错,那android也没戏了。但是问题是如果是硬件的问题我们的系统怎么能起来呢?
请教大家,这个可能性会在哪里呢?
在应用层都调了好长时间了!!
我是做嵌入式多媒体开发的,在anroid的平台上,用的是linux的内核。android多媒体处理是通过opencore进行处理。opencore就像Gstream等类似的多媒体处理架构。现在呢有视频不能解,会出错。然后查到后来发现往解码器的输入数据会有几个字节出错。出错后解码器就坏掉了。
追到后来,发现存取数据的buffer里面的数据就是错的。 而且我们的系统和驱动在smdk开发板上已经能够很好的运行,但是在我们自己的板子就会出现这种错误。
甚至:
oscl_memcpy(destBuf, _pCacheBufferStart + _currentCachePos, thisRead);
if(fpsrc)
fwrite(_pCacheBufferStart + _currentCachePos,1,thisRead,fpsrc);
if(fpdst)
fwrite(destBuf,1,thisRead,fpdst);
其中oscl_memcpy 的功能和memcpy一样。fpsrc 和fpdst 都是文件
上面的两个文件竟然每次都会有几个字节的不同!!!! 非常地奇怪!!!!
同样的操作在smdk板子,fpsrc和fpdst 是相同的,没有出错
opencore出错的可能性比较小,因为如果这里有错,那android也没戏了。但是问题是如果是硬件的问题我们的系统怎么能起来呢?
请教大家,这个可能性会在哪里呢?
在应用层都调了好长时间了!!
|
首先使用开发板提供的实验方案,完整的单独测试你的板子每一个硬件是否正常
例如:完整的Flash、内存读写测试
例如:完整的Flash、内存读写测试
|
莫非是板子的布线有问题,造成电磁干扰
外行的随便猜测下……
外行的随便猜测下……
|
最烦这种了,我也跳调过一些板子。
遇到一些你这种情况的时候,要么是内存某些地方操作越界了,或者某些地方有低级错误(因为代码涉及层数比较多,往往容易出现低级错误)。
你再耐心排查一下,一般只要不是kernel panic这类错误,我感觉都可以慢慢排出来。
遇到一些你这种情况的时候,要么是内存某些地方操作越界了,或者某些地方有低级错误(因为代码涉及层数比较多,往往容易出现低级错误)。
你再耐心排查一下,一般只要不是kernel panic这类错误,我感觉都可以慢慢排出来。