磷霉素氨丁三醇散怎么服用啊!一? 磷霉素氨丁三醇散副作用
2023-09-25
很多朋友对Tina,Linux_Wi-Fi开发指南不是很了解,每日小编刚好整理了这方面的知识,今天就来带大家一探究竟。
Tina Linux Wi-Fi 开发指南1 前言1.1 文档简介介绍了Wi-Fi 驱动在全志平台上的移植,并介绍了Tina Wi-Fi 管理框架,包括Station、Ap 和Wi-Fi FAQ。
1.2 目标读者包括Tina平台的客户以及对Tina Wi-Fi感兴趣的同事。
1.3 适用范围:全志软件平台Tina v3.0及以上版本。全志硬件平台R系列(R6、R11、R16、R18、R30、R40、R328、R331、R329、R818、R528…)。全志硬件平台MR系列(MR133、MR813…)。全志硬件平台H系列(H133…)。全志硬件平台V系列(V853…)。
2 Wi-Fi 简介2.1 Wi-Fi 的几种工作模式目前,Tina 平台上的Wi-Fi 一般可以有STATION、AP、MONITOR 三种工作模式。 • 工作站:连接到无线网络的终端。大多数无线网卡默认都是这种模式,也是常用的模式。 • AP:无线接入点,常称为热点,如路由器功能。 • MONITOR:也称为混杂设备监控模式,所有数据包均不经过过滤就传输到主机。
2.2 Tina Wi-Fi 软件结构
图2-1:Tina软件结构图
• wifimanager-v2.0:除了wifimanager-v1.0的功能(STATION模式下使用,提供Wi-Fi连接扫描等功能)外,还集成了softap(启动AP功能)和smartlink(多种网络配置)模式))功能,一个应用程序集成了多种wifi功能,方便客户使用和管理。 • wpa_supplicant:开源无线网络配置工具,主要用于支持WEP、WPA/WPA2和WAPI无线协议和加密认证。实际工作内容是通过socket与驱动程序交互,向用户报告数据。 • hostapd:是AP 和认证服务器的用户模式守护进程。 • 监视器:混杂设备监听模式下的Wi-Fi 处理应用程序。
2.3 Wi-Fi 常用命令介绍2.3.1 station 模式详细信息请参见Tina_linux_wifimanger2.0_开发指南。
执行以下命令前请确保wifi_deamon后台进程已启动。如果没有启动,请先启动wifi_deamon后台进程。
wifi -o sta 以sta 模式打开wifimanager
wifi -s 扫描周围网络
wifi -c ssid [passwd] 以加密或非加密方式连接指定网络
wifi -d 断开连接的网络
wifi -l [all] 列出已保存的网络
wifi -a [启用/禁用] 重新连接到断开的网络
wifi -r [ssid/all] 删除保存的指定网络注意:
ssid 网络名称
密码密钥
2.3.2 ap模式下,执行以下命令前请确保wifi_deamon后台进程已启动。如果没有启动,请先启动wifi_deamon后台进程。
wifi -o ap [ssid] [passwd] 以ap 模式打开wifimanager
wifi -l 列出AP热点连接的STA信息注意:
ssid 网络名称
密码密钥
AP模式和station模式不一定共存于不同的模块上。详细信息请参见第5 节。
2.3.3 监控模式在执行以下命令之前,请确保wifi_deamon 后台进程已启动。如果没有启动,请先启动wifi_deamon后台进程。
wifi -o Monitor 以监视模式打开wifimanager 注意:
不
2.3.4 额外功能在执行以下命令之前,请确保wifi_deamon 后台进程已启动。如果没有启动,请先启动wifi_deamon后台进程。
wifi -f 关闭wifimanager
wifi -p [softap/ble/xconfig/soundwave] 使用softap/ble/xconfig/soundwave配置网络
wifi -D [error/warn/info/debug/dump/exce] 设置打印级别
wifi -g 获取mac地址信息
wifi -m [macaddr] 设置mac地址
wifi -h 打印wifimanager 说明注意:
网络分布模式并不是所有模块都支持,取决于具体模块。
Mac 地址设置只能临时设置。
3 Wi-Fi模块移植
图3-1:主控与Wi-Fi 硬件连接简化图
Wi-Fi 模块的工作条件,如上图所示,需要满足以下条件: • 电源:一般有两个电源,其中VCC-Wi-Fi 为主电源,VCCIO- Wi-Fi是IO上拉供电。 • 使能:为了正常工作,需要将WL-REG-ON 设置为高电平。 • SDIO:与SOC 的通信通过USB、SDIO 等方式进行。这里以SDIO 为例,其中SDIO 0~3 为SDIO 的4 条数据线。 • 唤醒主机:当系统处于睡眠状态时,Wi-Fi 模块可以通过WL-WAKE-AP 通过中断唤醒主机。有些模块还使用该引脚作为主机接收数据的中断。 • 24/26MHz 时钟信号。 • 32.768KHz 信号:根据模块不同,有的模块是通过(5)中的输入clk 内部分频得到的,有的则需要外部单独输入信号。
对于Wi-Fi模块移植来说,重点是以上条件。针对以上工况,全志提供了相应的驱动程序。根据总线设备驱动模型,只需要根据各个平台调整驱动即可。
只需在计算机上配置设备即可。除了dts(linux-3.4内核没有dts)之外,allwinner设备还可以通过sys_config.fex进行配置。 sys_config.fex的优先级高于dts。一般来说,
这种情况下直接配置sys_config.fex即可。
阐明:
- Tina3.5.0 及之前版本sys_config.fex 路径: tina/target/allwinner/xxx(cowbell_perf1)/configs/- Tina3.5.1 及之后版本sys_config.fex 路径: tina/device/config/chips/xxx (r328)/configs/xxx(perf1)/- Tina3.5.0及之前版本的dts路径: tina/lichee/linux-xxx/arch/arm/boot/dts/- Tina3.5.1及之后版本dts路径:蒂娜/设备/配置/芯片/xxx(r328)/configs/xxx(perf1)/board.dts
linux 3.4 设备(sys_config.fex 配置)
[rf_para] module_num=10 module_power1='axp22_dldo1' module_power1_vol=3300000 module_power2='axp22_dldo2' module_power2_vol=3300000 module_power3='axp22_aldo3'module_power3_vol=3300000 power_switch=chip_en=lpo_use_apclk='losc_out' [wifi_para] wifi_used=1 wifi_sdc_id=1 wl_reg_on=port:PL06 wl_host_wake=port:PL07 [mmc1_para] sdc_used=1 sdc_detmode=4 sdc_buswidth=4 sdc_clk=port:PG00 sdc_cmd=port:PG01 sdc_d0=port:PG02 sdc_d1=port:PG03 sdc_d2=端口:PG04 sdc_d3=端口:PG05 sdc_det=sdc_use_wp=0 sdc_wp=sdc_isio=1 sdc_regulator='无'
linux 3.4驱动路径,详细参考以下代码路径
蒂娜/lichee/linux-3.4/drivers/misc/rf_pm
linux3.4以上,设备(sys_config.fex配置)
[sdc1] sdc1_used=1 总线宽度=4 sdc1_clk=端口:PG00 sdc1_cmd=端口:PG01 sdc1_d0=端口:PG02 sdc1_d1=端口:PG03 sdc1_d2=端口:PG04 sdc1_d3=端口:PG05 sd-uhs-sdr50=s d- uhs -ddr50=sd-uhs-sdr104=cap-sdio-irq=keep-power-in-suspend=ignore-pm-notify=max-Frequency=150000000 mix-Frequency=150000000 [wlan] wlan_used=1 Compatible='allwinner,sunxi-wlan' Clocks='losc_out' wlan_power_num=2 wlan_power1='vcc-wifi1' wlan_power2='vcc-wifi2' wlan_io_regulator='vcc-io-wifi' wlan_busnum=1 wlan_regon=端口:PE06 wlan_hostwake=端口:PE05 [regulator0] 兼容='axp221s-regulator' 调节器_count=20 . 调节器2='axp221s_dcdc2 无vdd-cpua' 调节器3='axp221s_dcdc3 无vdd- sys vdd-gpu'调节器4='axp221s_dcdc4无'调节器5='axp221s_dcdc5无vcc-dram'6='axp221s_rtc无vcc-rtc'调节器7='axp221s_aldo1无vcc-25 csi-avdd'调节器8='axp221s_aldo2无vcc-ephy0' Regulator9='axp221s_aldo3 none avcc vcc-pll'Regulator10='axp221s_dldo1 none vcc-io-wifi vcc-pg' Regulator11='axp221s_dldo2 none vcc-wifi1' 调节器12='axp221s_dldo3 none vcc-wifi2' 调节器13='axp221s_dldo4 none vdd-sata-25 vcc-pf'调节器14='axp221s_eldo1 none vcc-pe csi-iovcc'
Linux 3.4以上驱动,具体请参考以下代码路径
蒂娜/lichee/linux-XXX/drivers/misc/sunxi-rf
3.1 模块移植步骤下面总结了将新模块移植到Tina 平台的步骤。
3.1.1 修改模组厂提供的Wi-Fi驱动。模组厂提供的驱动适配Tina平台。主要修改为调用Tina平台提供的开关机、刷卡功能以及修改固件的下载路径。配置Kconfig和
生成文件等
下面介绍Tina平台向驱动程序提供的功能。 Linux 3.4 与其他内核略有不同。
linux 3.4
#include #include /* *功能:sdio扫描卡*参数id:卡号,(sdio 0或1.) *参数insert:0,插入卡并扫描卡; 1、取出卡。 *返回值:无*/extern void sunxi_mci_rescan_card(unsigned id, unsigned insert); /* *功能:给Wi-Fi模块上电并启用。 *参数on:0,上电; 1、关闭电源。 *返回值:无*/extern void wifi_pm_power(int on);
linux 3.4 或以上
#include #include #include /* *功能:获取使用的sdio卡号,对应sysconfig.fex中的wlan_busnum *返回值:sdio卡号*/extern int sunxi_wlan_get_bus_index(void); /* *功能:sdio扫描卡*参数id:卡号,(sdio 0或1.) *返回值:无*/extern void sunxi_mmc_rescan_card(unsigned ids); /* *功能:给Wi-Fi模块上电并启用。 *参数on:0,上电; 1、关闭电源。 *返回值:无*/extern void sunxi_wlan_set_power(bool on); /* *功能:获取gpio wlan hostwake pin申请的中断号*参数:void *返回值:irq number *说明:有些模块,主控接收数据是由hostwake pin产生的中断触发的,*所以主控控制需要提供中断号。 */extern int sunxi_wlan_get_oob_irq(void); /* *功能:获取主机唤醒引脚以设置中断标志*参数:void *返回值:irq flag */extern int sunxi_wlan_get_oob_irq_flags(void);
第一步,将Wi-Fi驱动放入linux-4.9/drivers/net/wireless并填写相应的开机、刷卡等功能。
Linux 3.4的驱动请参考:
esp8089模块:
蒂娜/lichee/linux-3.4/drivers/net/wireless/esp8089/sdio_stub.c
xr819模块:
蒂娜/lichee/linux-3.4/drivers/net/wireless/xradio/wlan/platform.c
Linux 3.4及以上版本驱动请参考:
蒂娜/lichee/linux-4.9/drivers/net/wireless/rtl8723ds/platform/platform_ARM_SUNnI_sdio.c
第二步,增加内核的menuconfig配置和编译。只需要修改以下几个地方即可。
tina/lichee/linux-4.9/drivers/net/wireless/Kconfig 示例:+source 'drivers/net/wireless/xr829/Kconfig'tina/lichee/linux-4.9/drivers/net/wireless/Makefile 示例:+obj- $(CONFIG_XR829_WLAN) +=xr829/
配置完成后,可以执行make kernel_menuconfig并选择它。编译时,会编译指定的驱动程序。
设备驱动程序--- [*] 网络设备支持--- [*] 网络设备支持--- [*] 无线LAN --- [] xxx 模块
3.1.2 增加make munconfig的配置。这一步主要是将内核中编译好的ko文件和固件复制到文件系统中。首先是配置固件。固件文件一般存储方式如下,带有模块文件名,需要添加一个mk文件才能在make munconfig中可见。
tina/package/firmware/linux-firmware/XXXmoduletina/package/firmware/linux-firmware/XXXmodule/XXX.mk 示例: tina/package/firmware/linux-firmware/xr829 make munuconfig 固件--- xr829 -firmware...... Xradio xr829 固件
二是配置ko。
tina/target/allwinner/xxx schema/modules.mk 示例:Tina-3.5.0 及更早版本:tina/target/allwinner/cowbell-perf1/modules.mk Tina-3.5.1 及更高版本:tina/target/allwinner/r328s2 -perf1/modules.mk make munuconfig 内核模块--- 无线驱动程序--- XXX 模块
3.1.3 配置sys_config.fex前面已经解释过,参见第3章开头的描述。
3.1.4 验证根据前面的配置,make kernel_menuconfig 选择了对应的模块,make menuconfig 选项对应了固件和模块,同时make munconfig 新选择了以下内容,即可验证。
make menuconfig Allwinner --- 无线--- wifimanager-v2.0.... Tina wifimanager- v2.0 wifimanager-v2.0-demo.... Tina wifimanager-v2.0 应用程序演示
验证命令
检查模块是否加载:lsmod 卸载模块:rmmod ps 检查wifi_deamon 后台进程是否启动。如果没有,请先启动wifi_deamon后台进程。连接路由命令:wifi -c ssid passwd 扫描周边热点:wifi -s
3.1.5 模块移植示例
以RTL8723DS为例:
获取信息1.1 建议从RTL原厂获取最新版本的完整信息,包括驱动程序、文档和工具。 (您也可以从其他内核适配版本获取驱动)
内核适配
2.1 将整个驱动SDK 复制到tina/lichee/linux-xxx/drivers/net/wireless/2.2 将驱动重命名为rtl8723ds 2.3 修改tina/lichee/linux-xxx/drivers/net/wireless/目录下的Kconfig 和Makefile Kconfig : +source 'drivers/net/wireless/rtl8723ds/Kconfig' Makefile: +obj-$(CONFIG_RTL8723DS) +=rtl8723ds/(注意:这里的命名必须一致) 2.4 修改驱动的原生代码2.4.1 驱动的Makefile (tina/lichee /linux-xxx/drivers/net/wireless/rtl8723ds/Makefile) +CONFIG_RTW_ANDROID=0 (# CONFIG_RTW_ANDROID - 0: 无Android, 4/5/6/7/8/9/10 : Android 版本) +CONFIG_PLATFORM_I386_PC=n + CONFIG_PLATFORM_ARM_SUNxI=y 2.4.2 替换适配sunxi的平台文件(tina/lichee/linux-xxx/drivers/net/wireless/rtl8723ds/platform)。可以从已适配的其他模块获取:platform_ARM_SUNxI_sdio.c
Tina模块适配
3.1.从任何其他支持的IC解决方案复制模块配置define KernelPackage/net-rtl8723ds SUBMENU:=$(WIRELESS_MENU) //make menuconfig的菜单位置一般不改变。 TITLE:=RTL8723DS support (staging) //make menuconfig提示DEPENDS:=+r8723ds-firmware +@IPV6 +@USES_REALTEK +@PACKAGE_realtek-rftest + @PACKAGE_rtk_hciattach //添加tina依赖,可以理解为select FILES:=$ ( LINUX_DIR)/drivers/net/wireless/rtl8723ds/8723ds.ko KCONFIG:=//添加内核依赖以了解位选择. AUTOLOAD:=$(call AutoProbe,8723ds) endef Define KernelPackage/net-rtl8723ds/description//make menuconfig 说明RealTek RTL8723DS 支持的内核模块endef $(eval $(call KernelPackage,net-rtl8723ds)) 一个完整的模块注:建议直接添加到平台通用配置中:tina/target/allwinner /xxx-common/modules.mk 3.2.firmwareconfiguration/package/firmware/linux-firmware/rtl8723ds///更新驱动时更新固件文件(如果有最新的) 3.3.sys_config.fe
以上知识分享希望能够帮助到大家!
版权声明:本站所有作品图文均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系我们
推荐阅读
2023-09-25
2023-09-25
2023-09-25
2023-09-25
2023-09-25
2023-09-25
2023-09-25
2023-09-25
2023-09-25
2023-09-25
2023-09-25
2023-09-25
2023-09-25
2023-09-25
栏目热点
磷霉素氨丁三醇散怎么服用啊!一? 磷霉素氨丁三醇散副作用
LilyGoT手表键盘C3迷你电脑套件
索泰ZBOXEdgeCI342迷你电脑正式上市
谷歌在最新的视频预告片中展示了PixelWatch的独特设计
三星与设计师Juun.J合作推出限量版可折叠产品和配件
从2023年起Fitbit设备将需要Google帐户
TOKKCAMC2+智能WiFi独立日 夜视摄像头
三星正在与全球时尚品牌JUUN.J合作
OnePlusNordWatch的颜色选项通过泄露的渲染揭示
就在第一款Nothing手机发布之前一种新的TWS芽设计浮出水面