娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2024年12月03日(星期二)

正在發生

2021年12月03日 | 購買開發板后在iTOP4412開發板上移植SDIO接口WIFI方法

發布者:Shuxiang 來源: eefocus關鍵字:iTOP4412  開發板  移植  SDIO接口 手機看文章 掃描二維碼
隨時隨地手機看文章

近期需要把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 開發環境


1.2  硬件相關部分


下圖為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芯片; 

Pin 13  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控制器輸出等等.

 

1.3  Kernel

1.3.1 概述

iTOP4412開發板采用的是Linux 3.0.15 版本,MTK官方給的移植Porting沒有說明針對具體的 kernel版本,由于是Android4.4,所以kernel應該是3.0以后的版本或者更高支持;

 

首先按照PoringGuid的指導說明,把New和Modify文件夾下面關于kernel部分的修改放到我們的kernel代碼里面,MT6620的驅動分兩個部分, 一部分放在driver/misc/目錄下面,文件夾名稱 mediatek,里面存放的是WMT,既wireless manage tools, 里面提供了與MT6620  download  firmware patch ,enable /disable WIFi芯片,power on, power off操作的相關驅動部分, 及SDIO總線設備接口驅動Host Interface drivers,這些驅動工作正常后才開始加載WiFi 網絡相關驅動。

 

我們以驅動庫 .ko 的形式編譯驅動模塊,driver/misc/mediatek/ 庫文件與WiFi網絡庫文件 列表如下::

 

mtk_hif_sdio.ko ----mmc總線相關接口,mmc總線發現SDIO設備,分配總線地址后,會與該驅動進行適配.適配成功后該驅動會調用WiFi網絡驅動;

mtk_stp_uart.ko-----串口相關驅動,通過串口下載固件補丁,設置芯片參數;

mtk_stp_wmt.ko-----core 部分,提供WiFi上電,斷電等等相關操作;

mtk_wmt_wifi.ko ----字符設備驅動,創建設備節點用于與用戶空間交互; 

wlan_mt6620.ko -- -- WiFi網絡相關驅動,不需要我們進行修改;

 

另外這里附一張MMC驅動框架圖:

 

因為我們的MT6620模塊掛載到了MMC總線上面,屬于MMC子系統的工作實例,我們非常有必要熟悉一下mmc驅動架構,是我們移植工作的非常重要的一部分,關于MMC子系統的詳細介紹這里不再說明.

 

 1.3.2 代碼修改

 

1  根據硬件連接情況配置必要的平臺資源

 

 修改文件:  kernel/iTop4412_Kernel_3.0/arch/arm/mach-exynos/mach-itop4412.c

 

 關鍵函數1: 該函數配置WiFi相關的GPIO引腳為初始化輸出狀態,或者配置為中斷狀態

            WIFI驅動會改變這些引腳的狀態,這里僅僅是初始化.

 

   static void __init mtk_combo_init(void)

    {

 

        //MT66XX PMUEN

        if(gpio_request(EXYNOS4_GPC1(0), "GPC1_0"))

        {

                printk(KERN_ERR "failed to request GPC1_0 for MT6620  PMUEN controln");

        }

        //MT66XX SYSRST

        if(gpio_request(EXYNOS4_GPC1(1), "GPC1_1"))

        {

       printk(KERN_ERR "failed to request GPC1_1 for MT6620  SYSRST controln");

 

        }

        s3c_gpio_cfgpin(EXYNOS4_GPC1(0), S3C_GPIO_OUTPUT);

        s3c_gpio_cfgpin(EXYNOS4_GPC1(1), S3C_GPIO_OUTPUT);

 

        gpio_direction_output(EXYNOS4_GPC1(0), 0);

        gpio_direction_output(EXYNOS4_GPC1(1), 0);

 

 

        gpio_free(EXYNOS4_GPC1(0));

        gpio_free(EXYNOS4_GPC1(1));

 

        mdelay(5);

 

        //need config eint models for Wifi & BGA Interupt

        if (gpio_request(EXYNOS4_GPX2(5), "WiFi INT"))

                printk(KERN_WARNING "MT6620 WiFi INT(GPX2.5) Port request error!!!n");

        else    {

                s3c_gpio_setpull(EXYNOS4_GPX2(5), S3C_GPIO_PULL_NONE);

                s3c_gpio_cfgpin(EXYNOS4_GPX2(5), S3C_GPIO_SFN(0xF));

                gpio_free(EXYNOS4_GPX2(5));

        }

 

        if (gpio_request(EXYNOS4_GPX2(4), "BGF INT"))

                printk(KERN_WARNING "MT6620 BGA INT(GPX2.4) Port request error!!!n");

        else    {

                s3c_gpio_setpull(EXYNOS4_GPX2(4), S3C_GPIO_PULL_NONE);

                s3c_gpio_cfgpin(EXYNOS4_GPX2(4), S3C_GPIO_SFN(0xF));

                gpio_free(EXYNOS4_GPX2(4));

        }

 

        //normal it is high level

        if (gpio_request(EXYNOS4_GPX3(2),  "6260_GPIO2")!=0) {

             printk("[mt6620] ERROR:Cannot request 6260_GPIO2n");

         } else {

             gpio_direction_output(EXYNOS4_GPX3(2), 1);/* WLAN_CHIP_PWD */

             gpio_set_value(EXYNOS4_GPX3(2), 1);

             mdelay(100);

             gpio_free(EXYNOS4_GPX3(2));

}

 

    return; }


關鍵函數2: setup_mt6620_wlan_power_for_onoff

 

該函數為導出函數,WIFi驅動會調用該函數,該函數關鍵地方是讓MMC控制器驅動掃描MMC總線上面的設備,MMC掃描到了WiFI模塊才會加載相應的WiFi驅動,這里是主動讓MMC掃描,我們的SD卡是采用中斷觸發的方式掃描,他們本質上都是掃描MMC總線上面的新設備,然后加載對應的設備驅動,具體的可以看一下MMC子系統相關內容.

 

函數所屬文件: kernel/iTop4412_Kernel_3.0/arch/arm/mach-exynos/mach-itop4412.c

 

void setup_mt6620_wlan_power_for_onoff(int on)

{

    int chip_pwd_low_val;

    int outValue;

 

    printk("[mt6620] +++ %s : wlan power %sn",__func__, on?"on":"off");

 

#if 1

    if (on) {

         outValue = 0;

    } else {

        outValue = 1;

    }

 

   if (gpio_request(EXYNOS4_GPX3(2),  "6260_GPIO2")!=0) {

        printk("[mt6620] ERROR:Cannot request 6260_GPIO2n");

    } else {

        gpio_direction_output(EXYNOS4_GPX3(2), 1);/* WLAN_CHIP_PWD */

        gpio_set_value(EXYNOS4_GPX3(2), outValue);

        mdelay(100);

        gpio_free(EXYNOS4_GPX3(2));

   }

 

    if(on)

    {

     //need reset on mt6620 ? need test......

    }

#endif

 

    extern void sdhci_s3c_sdio_card_detect(struct platform_device *pdev);

 

   // mdelay(200);

 

   //need sdhc controler check wifi catd states......

   sdhci_s3c_sdio_card_detect(&s3c_device_hsmmc3);

 

   printk("[mt6620] --- %sn",__func__);

[1] [2] [3]
關鍵字:iTOP4412  開發板  移植  SDIO接口 引用地址:購買開發板后在iTOP4412開發板上移植SDIO接口WIFI方法

上一篇:迅為4412開發板Linux驅動教程之GPIO的初始化
下一篇:iTOP-4412開發板Linux系統下使用wifi模塊配置

推薦閱讀

三十而立,四十而不惑,五十而知天命……從改革開放到現在家電已經進入到“不惑”的年紀。40年間中國家電產業從小到大,從弱到強,走過了高速發展的歷程,幾十年來家電的變革也印證著生活的巨變。  四十年前,勤是美德;四十年后,懶才快樂  在人類的清潔歷史中可分為三個階段:1、原始清潔方式:掃把;2、現代清潔方式:吸塵器;3、智能清潔方式:掃地機...
Nordic Semiconductor新型多協議系統級芯片(SoC) nRF52833支持藍牙5.1、藍牙Mesh、802.15.4、Thread、ZigBee和專有2.4GHz協議。為配合基于nRF52833的開發工作,儒卓力還在電子商務網站www.rutronik24.com.cn提供一款靈活的單板開發套件(DK)。 nRF52833 SoC用途多樣,不僅廣泛支持多個協議,并且具有從-40°C到105°C的擴展溫度范圍、512KB閃存和128KB ...
集微網消息,近期以來,半導體產業細分領域的產品缺貨漲價狀況不斷,晶振市場也不例外。在通用型元器件領域,缺貨較為嚴重的仍是中高端的溫補、熱敏等晶振產品,加之上半年全球晶振龍頭愛普生停產,自今年一季度以來,晶振漲價情況也出現,且維持著未大幅回調的走勢。直至當下,在境外疫情更加肆掠的情況下,國際大廠的供應體系還未恢復,部分中高端晶振產...
榮耀今天在線上舉行新品發布會,而公司CEO也是秀了下他們的智能制造工廠,相當的給力。按照趙明在發布會上的說法,新落成于深圳坪山的榮耀智能制造工廠,一條146米的產線上,僅有24名工人,自動化率超過75%,平均每28.5秒下線一臺手機。在他看來,高度自動化的機器只是智能制造的一部分,智能制造最關鍵的是人。在坪山工廠,工人工資比行業平均高40-50%,...

史海拾趣

問答坊 | AI 解惑

從GPS到RFID日益豐富的定位技術

[摘要]  在很多類似的東西里,找到自己需要的東西,是很多人在生活中經常會遇到的問題。拿筆者來說,上學的時候經常遇到的苦惱就是:在幾十輛甚至一百多輛自行車中,尋找自己的自行車,這種麻煩在下雪之后尤為突出,因為這些自行車看起來都是那么 ...…

查看全部問答∨

請教:lm324振鈴檢測電路

這是一個電話鈴流檢測電路 請教為什么輸出波形不規則,下面是電路圖。…

查看全部問答∨

51單片機關資料

51單片機關資料,    51入門…

查看全部問答∨

我給大家共享一些MTK平臺的資料吧

里面是一些MTK手機的基本知識了,只能看個大概 [ 本帖最后由 flyingdsp 于 2009-9-23 13:35 編輯 ]…

查看全部問答∨

Bluetooth問題

現在我要實現兩臺PDA互傳資料, 我先是查找機器,找到了,Connect,接下去是不是就可以做傳輸動作,還是要listen呢? 這過程有不太理解,希望大家幫我下,謝謝. 就是要實現兩臺PDA互傳資料的流程,是要怎么實現?…

查看全部問答∨

WinCE串口數據接收實時性問題

要求在300ms內接收4000Byte數據 發現以115200bps發送 接收需要1s多時間 而且WinCE無法正確接受(偶爾能接到正確數據) 初試化的時候超時設置為 ReadTotalTimeoutMultiplier = 1; 請問如何才能達到在300ms內正確接收4000Byte數據?…

查看全部問答∨

evc4.0下 調用軟鍵盤 Debug正常 release報錯

evc4.0下 調用軟鍵盤       頭文件里已經包含了  #include "Sipapi.h"                        #pragma comment (lib, ...…

查看全部問答∨

請教定制Shell的問題

請教一個問題: 我看了你的BLOG,知道你修改過explorer.exe。我想請教一下,我看了一些資料, 當然只是初步的了解,感覺用自己的程序替換explorer.exe不是很難,可以完全 自己實現類似于explorer.exe的功能,而界面可以完全自己設計。請問你當時 ...…

查看全部問答∨

Driverstudio中的link error

--------------------Configuration: Start - Win32 Checked------------------- Linking... LINK : fatal error LNK1181: cannot open input file "C:\\PROGRA~1\\NuMega\\DRIVER~1\\DRIVER~3\\lib\\I386\\checked\\vdw_wdm.lib" 執行 link ...…

查看全部問答∨

請教串口

我用147的串口0通過232然后與pc相連,為什么上電的時候總是會收到00呢,怎么處理呢?…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 重庆市| 鄢陵县| 西丰县| 新巴尔虎左旗| 内丘县| 甘谷县| 大渡口区| 大厂| 德昌县| 平潭县| 重庆市| 嫩江县| 嵩明县| 呼玛县| 揭东县| 都安| 建宁县| 六安市| 育儿| 容城县| 花莲县| 南陵县| 柳林县| 二连浩特市| 乌兰察布市| 桓仁| 璧山县| 临湘市| 封丘县| 龙井市| 昌图县| 思南县| 梓潼县| 长子县| 绵阳市| 天峻县| 乐平市| 云林县| 庐江县| 荥阳市| 宝鸡市|