1. 程式人生 > >Exynos4412 Android4.4 平臺 WiFi 功能移植 第一篇

Exynos4412 Android4.4 平臺 WiFi 功能移植 第一篇

     近期需要把WiFi無線網路功能移植到在iTOP4412開發平臺,查閱了相關資料,經過一段時間的研究、除錯,終於成功的將WiFi功能移植到了開發板上面,這裡筆者記錄移植過程及注意事項,方便以後工作需要。

      iTOP4412開發板的WiFi模組與板卡之間的連線採用SDIO介面,WiFi硬體模組使用的是MTK的MT6620晶片,MTK提供了Android4.0及Android4.4的driver, Porting Guid,有了這些就為我們的移植工作做了總體性的指導。

      但是僅僅有MTK提供的文件還是遠遠不夠的,畢竟硬體介面定義不同,kernel版本也不同,Android層與MTK提供的程式碼也有差異,這就需要我們在MTK文件的指導下,Step  by Step 進行 Porting 工作.

移植環境:

   1  iTOP4412 精英版 +  MT6620 WiFi模組

   2  kernel  3.0.15 version

   3  Android4.4.4 

   4  Ubuntu12.04  64BIt 開發環境

 硬體相關部分

 下圖為WiFi模組與開發板連線的引腳定義,通過該介面可以看出WiFi模組與CPU的互動介面.


      檢視WiFi模組的原理圖可知,WiFi模組與CPU之間採用SDIO介面進行資料和命令的互動工作,Pin1,2,3,5,6,7 為SDIO介面,另外還需要Pin8,Pin10 UART 串列埠, 另外Pin18,Pin17用於串列埠流控,實際是可以不使用流控功能。MT6620晶片是複合晶片,除了具備WiFi功能以後,還支援藍芽,FM,GPS功能,他們與CPU之間的通訊需要串列埠,另外MT6620韌體補丁的下載也是通過串列埠進行的,所以說串列埠是必不可少的硬體介面,即使您只使用該晶片的WiFi功能。

   除了SDIO介面,UART口以外,還需要與CPU進行互動的介面包括Pin16 PMU_EN ,使能引腳,預設低電平狀態,高電平有效。

  Pin15  WiFI_RESET引腳,預設低電平狀態,高電平有效,用於復位WiFi晶片;

  Pin13  WiFi INT  WiFI的中斷引腳,用於告知CPU有資料來了;

      以上這些引腳需要在BSP中配置,WiFI的驅動會通過這些引腳與MT6620晶片進行通訊;

另外需要強調的是WiFi模組佔用CPU的MMC3埠, 也可以說就是SDIO匯流排,關於MMC,SD,SDIO匯流排的來歷這裡不再描述,下圖為核心板WiFi相關部分



        在iTOP4412 精英版中mmc0,mmc1匯流排用於eMMC,mmc2用於TF卡,mmc3用於SDIO WiFi,關於wifi的其他硬體連線比如串列埠,使能(GPIO),復位(GPIO),中斷(GPIO)這裡不再貼出,具體的請檢視開發板的原理圖。

        這裡重點強調一下 HUB_CONNECT,也就是上圖中的L5 引腳,該引腳複用為mmc匯流排的CD引腳,也就是Card Detect引腳,用於告知MMC3控制器有裝置插入,屬於中斷引腳,我們需要把引腳與CPU的 某GPIO引腳連線:



    以上為iTOP4412 底板原理圖WiFi介面部分,請注意HUB_CONNECT引腳通過0歐電阻與6060_GPIO2進行了連線,6060_GPIO2為核心板GPIO引腳。

 這樣連線的目的是通過軟體輸出6060_GPIO2低電平,從而HUB_CONNECT引腳為低電平輸入狀態,MMC3控制認為有裝置插入到了MMC3總線上面,原理同TF卡,SD卡的檢測。

      以上為進行Porting前的準備工作,當然需要萬用表,示波器工具進行輔助的檢測,檢視WiFi模組的工作電壓是否正常,GPIO的當前狀態,MMC總線上面的時鐘及是否有資料從MMC3控制器輸出等等.