大家好,我是三颗芋圆,始于LWIP,陷于TCP/IP,忠于80211。
前面我们提到了Wi-Fi的传输接口有SDIO/USB/PCI等多种接口,常用的还是SDIO,那么这些接口的速率直接就会影响到Wi-Fi的性能,而速率的最关键的一个指标就是频率。
Tina上有多种方式可以修改和查看SDIO的频率。
一.查看SDIO的频率
1)启动log查看:
- sunxi-mmc sdc1: sdc set ios:clk 0Hz bm PP pm UP vdd 21 width 1 timing LEGACY(SDR12) dt B
- sunxi-mmc sdc1: no vqmmc,Check if there is regulator
- sunxi-mmc sdc1: sdc set ios:clk 400000Hz bm PP pm ON vdd 21 width 1 timing LEGACY(SDR12) dt B
- sunxi-mmc sdc1: sdc set ios:clk 400000Hz bm PP pm ON vdd 21 width 1 timing LEGACY(SDR12) dt B
- sunxi-mmc sdc1: sdc set ios:clk 400000Hz bm PP pm ON vdd 21 width 1 timing LEGACY(SDR12) dt B
- sunxi-mmc sdc1: sdc set ios:clk 400000Hz bm PP pm ON vdd 21 width 1 timing SD-HS(SDR25) dt B
- sunxi-mmc sdc1: sdc set ios:clk 50000000Hz bm PP pm ON vdd 21 width 1 timing SD-HS(SDR25) dt B
- sunxi-mmc sdc1: sdc set ios:clk 50000000Hz bm PP pm ON vdd 21 width 4 timing SD-HS(SDR25) dt B
- [SBUS] XRadio Device:sdio clk=50000000
如上是扫卡的打印,一开始是400kHZ,后面是50MHZ。
2)系统节点操作:
- root@TinaLinux:/sys/kernel/debug/xradio_host_dbg
- dbg_ap dbg_logfile dbg_sta hwinfo
- dbg_bh dbg_pm dbg_tpa_node set_sdio_clk
- dbg_common dbg_***us dbg_txrx tx_burst_limit
- dbg_etf dbg_scan dbg_wsm
3)uboot阶段查看
利用uboot的 fdt工具修改sdc1
- fdt print /soc/sdmmc@04021000
二.修改SDIO频率
1)在dts或者sys_config.fex中修改:
1.1)sys_config.fex
402 [sdc1]
- 403 sdc1_used = 1
- 404 bus-width = 4
- 405 sdc1_clk = port:PG00<2><1><3><default>
- 406 sdc1_cmd = port:PG01<2><1><3><default>
- 407 sdc1_d0 = port:PG02<2><1><3><default>
- 408 sdc1_d1 = port:PG03<2><1><3><default>
- 409 sdc1_d2 = port:PG04<2><1><3><default>
- 410 sdc1_d3 = port:PG05<2><1><3><default>
- 411 cap-sdio-irq =
- 412 max-frequency = 25000000 //从150M改为25M.
1.2)board.dts
- 565 &sdc1 {
- 566 bus-width = <4>;
- 567 no-mmc;
- 568 no-sd;
- 569 cap-sd-highspeed;
- 570
- 571
- 572
- 573
- 574
- 575
- 576
- 577 cap-sdio-irq;
- 578 keep-power-in-suspend;
- 579 ignore-pm-notify;
- 580 max-frequency = <150000000>;
- 581 ctl-spec-caps = <0x8>;
- 582 status = "okay";
- 583 };
2)节点操作
- /sys/kernel/debug/xradio_host_dbg/set_sdio_clk
默认是0表示即扫卡的频率
操作:echo 50000000 > set_sdio_clk
3)uboot阶段操作:
同样也可以在uboot阶段利用fdt工具操作
- fdt set /soc/sdmmc@04021000 max-frequency <150000000>
PS:注意uboot的修改只是单次有效,重启后就无效了。