zoukankan      html  css  js  c++  java
  • 应用开发笔记 | 米尔科技MYD-YA157C-V2开发板WIFI&BT 模块的移植

    本次开发笔记主要内容是 WIFI&BT 模块、SDIO WIFI 模块的移植和测试。

    1.硬件资源

    • SDIO WIFI 模块 

    • USB-TTL 模块 

    2.软件资源 Linux 5.4.31 

    3.环境准备

    • Linux 虚拟环境 

    • 安装好 SDK

    4.操作步骤 

    4.1.移植 AP6212 

    这个移植一般分两步,设备树配置硬件信息和拷贝 wifi 固件到系统。 

    1) 设备树配置 wifi 硬件信息

    351 /* Wifi */ 

    352 &sdmmc3 { 

    353    arm,primecell-periphid = <0x10153180>; 

    354 pinctrl-names = "default", "opendrain", "sleep"; 

    355    pinctrl-0 = <&sdmmc3_b4_pins_a>; 

    356    pinctrl-1 = <&sdmmc3_b4_od_pins_a>; 

    357    pinctrl-2 = <&sdmmc3_b4_sleep_pins_a>; 

    358    non-removable; 

    359    st,neg-edge; 

    360    bus-width = <4>; 

    361    vmmc-supply = <&v3v3>; 

    362    mmc-pwrseq = <&wifi_pwrseq>; 

    363    #address-cells = <1>; 

    364    #size-cells = <0>; 

    365    keep-power-in-suspend;

    366    status = "okay"; 

    367 

    368 brcmf: bcrmf@1 { 

    369 reg = <1>; 

    370 compatible = "brcm,bcm4329-fmac"; 

    371 }; 

    372 };

    这里分别对几个关键设备树语法进行说明. 

    • non-removable:表示不能进行热插拔,设备一直连接(比如 eMMC),因为板载的 AP6212 一直连接,所以需要此属性,假如是 SDIO WIFI 模块则不需要配置。
    • bus-width = <4>:数据总线位 
    • vmmc-supply:指向 regulator 设备树节点 
    • mmc-pwrseq:指定电源上电顺序 
    • keep-power-in-suspend:表示待机时不掉电 
    • mmc 控制器存在子节点时,必须指定下面两个选项 
    • #address-cells 值必须是 1 
    • #size-cells 值必须是 0 其中 MMC 子节点属性 reg 该值必须是 0~7,其中 0 表示 SD 卡,1~7 表示 SDIO 设 备比如 SDIO 接口的 WIFI 芯片。

    2)配置内核 

    在内核目录运行 make menuconfig(先确认对应的 ARCH 是否是 arm),检查对应的配 置选项。Networking support->Wireless->cfg80211 - wireless configuration API 配置为

    图 4-1.无线设备管理配置

    Device Drivers->Network device support->Wireless LAN->Broadcom FullMAC WLAN driver

    图 4-2.无线网络硬件 MAC 配置

    3)编译并更新

    编译内核模块和设备树(详情请参考 UDG 手册),然后更新到开发板上面,在终端中 输入命令检查 brcmfmac 驱动模块有没有加载。root@myir:/# lsmod | grep brcm brcmfmac 258048 0 cfg80211 585728 1 brcmfmac brcmutil 16384 1 brcmfmac

    4)驱动加载 

    当加载完成后,还需要加载固件,一般是驱动中断方式向系统文件申请固件,然后系 统文件把固件拷贝到内核 firmware buf,然后内核读取 wifi 固件并通过 SDIO 写入芯片内 部,这个固件路径一般是在内核定义好,也可以直接通过传入参数修改固件路径。默认固 件路径是/lib/firmware/brcm。

    图 4-3.WIFI 固件路径

    AP6212 模组 wifi 需要加载的固件为:brcmfmac43430-sdio.bin /brcmfmac43430- sdio.myir,stm32mp157c-ya157c-v2.txt/brcmfmac43430-sdio.clm_blob 蓝牙需要加载的固件:BCM43430A1.hcd5)wifi 测试过程 Wifi 测试详情请参考《MYD-YA157C_Linux 软件评估指南》。4.2.SDIO WIFI 移植和测试SDIO WIFI 模块移植一般也是分两步,设备树配置硬件信息,因为这个 SDIO WIF 用 的 TF 卡接口,所以 SDMMC1 设备树不需要配置什么,默认就可以。然后拷贝 SDIO WIFI 对应的固件到/lib/firmware/brcm。

    1) 内核驱动配置 

    在内核目录运行 make menuconfig 确认对应的 SDIO WIFI 配置信息。Networking support->Wireless->cfg80211 - wireless configuration API->[*] enable powersave by default

    图 4-4.无线网络管理

    Device Drivers->Network device support ->Wireless LAN-> [*] SDIO bus interface support for FullMAC driver

    图 4-5.SDIO bus 接口支持

    2) 查看接口 

    编译内核模块和设备树,然后更新到开发板上面,ifconfig -a 查看网络。

    图 4-6.wlan1 网络

    3) wifi 测试过程

    root@myir:~# wpa_passphrase "TP-LINK_D87A" > wifi.conf 

    wangsuna123 

    root@myir:~# wpa_supplicant -B -c wifi.conf -i wlan1 

    Successfully initialized wpa_supplicantroot@myir:~# [ 241.197380] IPv6: ADDRCONF(NETDEV_CHANGE): wlan1: link becomes ready

    root@myir:~# 

    root@myir:~# udhcpc -i wlan1 

    udhcpc: started, v1.29.3 

    udhcpc: sending discover 

    udhcpc: sending select for 192.168.0.102udhcpc: lease of 192.168.0.102 obtained, lease time 7200 

    /etc/udhcpc.d/50default: Adding DNS 192.168.1.1 

    /etc/udhcpc.d/50default: Adding DNS 192.168.0.1 

    root@myir:~# echo "nameserver 114.114.114.114" > /etc/resolv.conf 

    root@myir:~# ping www.baidu.com 

    PING www.a.shifen.com (14.215.177.39) 56(84) bytes of data. 

    64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=1 ttl=53 time=28.5 ms 

    64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=2 ttl=53 time=36.6 ms 

    64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=3 ttl=53 time=34.8 ms

    获取完整MYD-YA157-V2开发板WIFI&BT 模块的移植笔记,请访问米尔科技下载中心

    了解MYD-YA157-V2开发板信息

    本文来自米尔科技,原文地址: http://www.myir-tech.com/resource/553.asp,转载请注明出处。

  • 相关阅读:
    我的知识库(4) java获取页面编码(Z)
    知识库(3)JAVA 正则表达式 (超详细)
    The Struts dispatcher cannot be found. This is usually caused by using Struts tags without the associated filter. Struts
    某人总结的《英语听力的技巧 》,挺搞的
    我的知识库(5)java单例模式详解
    构建可扩展程序
    SerialPort (RS232 Serial COM Port) in C# .NET
    Python学习笔记——String、Sequences
    UI题目我的答案
    jQuery学习系列学会操纵Form表单元素(1)
  • 原文地址:https://www.cnblogs.com/cbd7788/p/14301541.html
Copyright © 2011-2022 走看看