Android 4 / iMX6系統開發手記


年前做過一款Android 2.3,用飛思卡爾iMX5的系統,

過了幾天豬狗不如的生活。。終於搞定。

有了上次經驗,這次用iMX6做Android 4的平台,就順暢了很多。

 

第一天,下載系統

下載飛思卡爾的iMX6安卓軟件包。下過來后,按照文檔的指示,下載repo,

克隆各種git倉庫路徑。。網速太慢,晚上放着下。。

 

第二天,編譯系統

第二天早上一看,代碼全下好了,好現象!還是按照文檔,編譯uboot,kernel,boot.img,system.img等各部分。期間遇到編譯錯誤若干,還好都不難解決,基本上還是編譯iMX5安卓時遇到的老問題,還有就是linux編譯機器要裝一個軟件包。大半天的功夫,編譯完成。

接下來的功夫,參考硬件設定的管腳分配,在linux kernel的arch/arm下,將管腳分配的代碼重新整理一遍。上百管腳映射到代碼里,真不是省心的事情。

------ (分割線,等待硬件打板子貼片回來)

 

(N天后的)第三天,軟硬件聯合調試

硬件板子終於回來,開始軟硬件聯合調試,真正的挑戰開始了。剛開始心里非常沒譜,這拿到手里的就是塊磚啊,能不能運行起來是個未知數。。。如果硬件有什么問題,咱調試軟件可就苦了。事后證明,我們的硬件工程師Y大神,是非常牛逼且細致的,幾乎沒出什么問題。

軟件調試的過程,就是拔除一個個問題的過程。

第一步,先把uboot啟動起來。開始極不順,uboot燒進去,板子啥輸出都沒有。這不是板子,就是磚拿。。后來發現問題了,弄錯一個芯片小型號,找到對應型號的uboot,串口終於打出數據。低級錯誤,簡直。。

第二步,啟動linux kernel。研究下uboot的啟動參數,將booti命令指向正確的mmc設備,linux正常啟動。

第三步,讓linux kernel正確加載init並引導文件系統。這里又遇到不小的困難,kernel啟動完就不動了。不過呢,咱不是飛思卡爾做系統的工程師,所以咱相信,一定是小問題。。各種可能的問題一一考慮,文件系統所在的分區對否?mmc卡的驅動對否?加載順序對否?mmc卡4線還是8線模式?mmc卡硬件上供電沒?一一確認修改無誤后,並調整mmc卡為4線,調整文件系統所在的mmc卡為linux識別到的第一塊卡。android系統的串口終端命令行,終於運行起來了。

碰壁無數,懷疑無數,Y大神給打氣無數。。好在收獲不小。此時天色已晚,代碼漸欲迷人眼,收拾裝備,明日再站。

 

第四天,繼續軟硬件聯合調試

安卓的串口界面出來了,是個好現象,給了大家不少的鼓舞。不過遺憾的是,仍舊沒看到lvds屏幕顯示出圖形界面。Y大神幫看了又看硬件電路,覺得應該沒有問題的。屏幕的背光能亮,但是屏幕上就是完全沒有內容。Y大神提醒,會不會IPU的輸出通道設錯了呢?果真如此的話,也是很令人吐血的,一則系統默認的參數,不大可能留着第一個通道不用,用第二個;二則咱trace了下內核關於IPU部分的代碼,鎩羽而歸。

然而,事情就是如此的巧合,事后證明,的確是這個地方問題所在。期間種種迂回曲折,不說了。

屏幕點亮后,啟動進入安卓界面,接上鼠標,管用!再測試RTC,管用!興奮異常!

然后將觸控屏的驅動加到內核里,再次管用!當然還有點問題,觸控屏的位置不對,聯想到Android 4和以前的2.3不同,它的觸控屏需要有個idc描述文件。抄段idc文件,用PID/VID命令方式,放到指定的idc目錄下。能使用觸屏的安卓系統,也做出來了。

一面是疲憊,一面是激動,安卓系統雖然成功運行,后續需要優化的其實還很多。

此時又是天色已晚,代碼漸欲迷人眼。鏖戰幾天,人跟散架了似的。跟老總告假調休,將代碼提交到倉庫,后續的工作交代給同事,休假去也。

(轉載請標明:http://www.cnblogs.com/xhawk18/)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM