摩托罗拉SE4500 三星 S3C6410 Wince6.0平台软解码调试记录以及驱动相关问题解释
虽然S3C6410出来很多年了,甚至于已经停产了,出货的几乎都有依赖于库存,SE4500也出来很多年了,但是网上依旧不会有调试资料帮助你,一切源于自私。希望本文能帮到你,不必感谢。本文来自C.S.D.N.(转载请注明来源)。
一、SE4500工作在3.3V,刚好三星的S3C6410也工作在3.3V,所以不需要电平转换即可,这一点挺好,只是三星的S3C6410的高电压就决定了不可能休眠功耗做的很低;
二、SE4500不供电时直接把I2C总线电压拉低到1.5V左右,原因是SE4500不上电时,会拉低I2C总线,解决方法有两种:1、要么选择一直给SE4500上电,这样白白浪费掉一部分电力; 2、要么选择使用类似TXB0102电平转换芯片隔离I2C,我们平台选择在驱动中直接给SE4500上电,不断电,系统休眠时依旧让其上电,通过配置GPIO引脚的sleep相关寄存器实现;
三、SE4500的SDL动态链接库无法加载是什么原因,原因是在platform.bib文件中,标记SDL_Drv.dll和SDL_IAL.dll必须为NK SHK,后面必须带有K,否则device.exe无法加载;
四、据说S3C6410官方提供的I2C驱动读写可能会出现问题,这个问题摩托罗拉公司已经帮助解决,请参考摩托罗拉提供的SDL软解库安装目录,针对SAMSUNG平台的I2C部分PDD层的实现代码,修改系统的相关实现;
五、请将CAM_PowerUp和CAM_PowerDown加入到cam_se4500.def文件中,以至此相关的操作;
六、可能会遇到打开一次程序关闭后,再次打开,只能出光不能解码的问题,请检查CAM_Open和CAM_Close的实现,有一个API在CAM_Init时被调用,在CAM_Close里面调用给关闭了,再次打开扫描头时调用CAM_Open的时候没有调用,所以会出现只出光不解码的问题,这是摩托罗拉的实现小bug,请修复该bug。
后记:调试成功后,我们发现解码速度挺快的,甚至赶上摩托罗拉PL-系列硬解码板的解码速度。