摩托羅拉SE4500 軟解碼調(diào)試記錄分享
???????? 雖然S3C6410出來很多年了,甚至于已經(jīng)停產(chǎn)了,出貨的幾乎都有依賴于庫存,SE4500也出來很多年了,但是網(wǎng)上依舊不會有調(diào)試資料幫助你,一切源于自私。希望本文能幫到你,不必感謝。本文來自C.S.D.N.(轉(zhuǎn)載請注明來源)。
一、SE4500工作在3.3V,剛好三星的S3C6410也工作在3.3V,所以不需要電平轉(zhuǎn)換即可,這一點(diǎn)挺好,只是三星的S3C6410的高電壓就決定了不可能休眠功耗做的很低;
二、SE4500不供電時直接把I2C總線電壓拉低到1.5V左右,原因是SE4500不上電時,會拉低I2C總線,解決方法有兩種:1、要么選擇一直給SE4500上電,這樣白白浪費(fèi)掉一部分電力; 2、要么選擇使用類似TXS0102電平轉(zhuǎn)換芯片隔離I2C,我們平臺選擇在驅(qū)動中直接給SE4500上電,不斷電,系統(tǒng)休眠時依舊讓其上電,通過配置GPIO引腳的sleep相關(guān)寄存器實現(xiàn);
三、SE4500的SDL動態(tài)鏈接庫無法加載是什么原因,原因是在platform.bib文件中,標(biāo)記SDL_Drv.dll和SDL_IAL.dll必須為NK SHK,后面必須帶有K,否則device.exe無法加載;
四、據(jù)說S3C6410官方提供的I2C驅(qū)動讀寫可能會出現(xiàn)問題,這個問題摩托羅拉公司已經(jīng)幫助解決,請參考摩托羅拉提供的SDL軟解庫安裝目錄,針對SAMSUNG平臺的I2C部分PDD層的實現(xiàn)代碼,修改系統(tǒng)的相關(guān)實現(xiàn);
五、請將CAM_PowerUp和CAM_PowerDown加入到cam_se4500.def文件中,以至此相關(guān)的操作;
六、可能會遇到打開一次程序關(guān)閉后,再次打開,只能出光不能解碼的問題,請檢查CAM_Open和CAM_Close的實現(xiàn),有一個API在CAM_Init時被調(diào)用,在CAM_Close里面調(diào)用給關(guān)閉了,再次打開掃描頭時調(diào)用CAM_Open的時候沒有調(diào)用,所以會出現(xiàn)只出光不解碼的問題,這是摩托羅拉的實現(xiàn)小bug,請修復(fù)該bug。
?????? 后記:調(diào)試成功后,我們發(fā)現(xiàn)解碼速度挺快的,甚至趕上摩托羅拉PL-系列硬解碼板的解碼速度。