我使用tiny210 的jpeg驱动,发现一个奇怪的现象,定位了好几天都没有找到问题到底在哪里,紧急请教楼主!帮忙判断下到底是不是210jpeg硬件的BUG问题啊!
环境:tiny210v2 内核版本:linux2.6.35.7
之前封装了应用库,其中编码函数save(),解码函数load()
save() 功能:
1 、打开Jpeg设备,mem设备。进行空间映射
2 、设置寄存器进行编码。
3、完成编码后 解除映射关系,关闭时钟。关闭jpeg设备
load()功能:
1、打开Jpeg设备、mem设备,进行空间映射
2、设置解码寄存器,进行解码
3、完成解码后,解除映射关系,关闭时钟,关闭Jpeg设备
一直使用load函数进行解码,均正常。
一直使用save函数进行编码,也正常。
但是问题是:load解码一次,在进行save编码,该过程正常,接着进行解码会失败。
解码失败的原因是JPGINTST(0xFB60_0038)寄存器值为0x20(bit 5 被置为1)该寄存器的描述如下:
Bitstream error status Vaild during decompression only
0: there is no syntax error on the compressed file 。
1: there is syntax error on the compressed file
很是奇怪,我在每次进行解码的时候,都是重新打开设备,进行地址映射,开时钟,进行软复位操作,在设置相关的寄存器,进行解码。按说是正常的,但是却出现这样的错误,
很是摸不准头脑,我也比较过开始解码启动前 所有寄存器的值,除了质量表和ham那个表有差异外,其他寄存器都是相同的,那几个表在解码时应该关系不大的,我试着写这些寄存器的值,
都没有办法写进去值,如果这样失败的话,在接着运行解码Locd函数,说不准什么时间就可以成功了,但是这个时间是不确定的,感觉比较像随机事件。
请问版主,之前测试的时候遇到过这种现象吗?这种问题大概会是什么原因?我自己感觉比较像硬件的原因!