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





