FAQ
代码编译
Q:git代码下载不成功,怎么解决?
A:(1)由于系统环境自带的git缓存buffer较小导致,可以参考buffer修改 来修改本地git缓存
(2)网络状况不好导致,如果下载时下载速度一直在90kb/s以下,会导致下载失败,建议待网络环境良好或者更换下载时间段进行下载,可能仍然需要花长时间下载
(3)如果办公环境下载速度一直在几十kb/s左右,可以尝试使用电脑无线网卡连接手机热点进行下载,速度会有很大提升,但是会有一点浪费流量,请谨慎选择此方法。
(4)使用gitee码云下载
Q:编译出现图示问题,怎么解决?
A:这个是由于编译指令漏了项目名或者项目名错误。具体支持的版型可以查看make.sh脚本代码中的参数选项。 例如编译ac28版型:./make.sh ac28
Q:第一次使用脚本编译出现图示问题,怎么解决?
A:出现图示问题是由于第一次脚本编译,有一些package的依赖没有选上导致编译不通过 在这个状态下继续使用 make -j1 V=s继续编译 或者make -j4 V=s、 make -j8 V=s,使用多个线程,提高编译速度继续编译 注:如果是使用的虚拟机,尝试将虚拟机的内存改大,4G及以上
Q:脚本编译的项目如何添加?或者如何自己新建编译版型?
A:因为硬件的不同,编译时需要对版型进行区分选择相应的配置文件 参考新的版型引入指南
Q:如何判断编译成功?
A:出现图示log即为编译成功。编译成功会在/bin/target/siflower/下生成对应的镜像文件
如果使用脚本编译,则会在编译根目录生成带分支名称/版型名称/commit的镜像
Q:编译uboot出现下图错误如何解决?
A:这是由于系统的dtc版本太低导致的,使用sudo apt-get install device-tree-compiler安装更新即可成功编译
Q:uboot.img和uboot.bin有什么区别?
A: uboot.img只是比uboot.bin多了个头,而这个头包括了如何/从哪里执行这个uboot. uboot.bin一般是按照具体地址烧写, 而uboot.img则包含地址等信息,无需按照地址下载,所以这个也决定了uboot.bin适用于Norflash,而uboot.img更适合SD卡。
Q:uboot下的擦除指令?
A:擦除要区分是nor flash 或者 nand flash (【指令】earse【地址】【长度】) nor flash: 1) sf probe 2) sf erase 0x90000 0x10000 nand : 1) spi_nand probe 2)spi_nand erase 0xa0000 0x20000
Q:uboot烧录失败怎么处理?
A:uboot烧录失败后无法正常启动,则不能继续通过uboot更新镜像,可通过irom usb下载(如果有USB口),或者摘下flash使用烧录器的方式重新烧录镜像
Q:为什么一个uboot只能对应一个ddr型号?
A:因为每个DDR的时序参数不一样,所以必须针对不同的DDR颗粒去做调整。如果选择差不多参数的颗粒,一组参数同时符合多颗DDR,这样同一个uboot就可支持几颗DDR 目前已有通用的128M_ddr2参数和128M_ddr3参数
Q:目前支持哪些方式进入后台进行调试?
A:1)开发板或者产品板预留了串口,PC端利用串口工具,如“SmartTTY”等工具,波特率设置为115200,其他默认,将串口线接到板子串口正常上电即可。 2)利用网口通过ssh 访问192.168.4.1也可以进入系统,登录账号root,密码admin。 3)openwrt打开telent 访问
- Q:板子与PC端如何进行文件传输? A:如果系统为Windows可以通过下载winSCP工具或者利用类似SmartTTY工具建立ssh连接,通过网线连接,进行文件传输操作。 如果系统为linux,使用网线连接后,可以直接通过linux的scp指令进行文件传输 scp /home/usrname/test/1.txt admin@192.168.4.1:/tmp/ 注:无论哪种操作,登录账号root,密码admin。
Q:板子上电反复出现下图log,是什么原因?
A: 这是由于FLASH中未烧录任何程序导致的,可以使用FLASH烧录器烧录uboot或者烧录完整的4M/8M/16M的flash镜像。
Q:烧录镜像后出现下图log,会是什么原因导致的?
A:1) uboot软件的ddr大小与实际贴片的ddr大小不一致,或者型号不对应。 2) ddr未贴好或者ddr物料损坏。 3) uboot编译有问题
Q:启动过程出现下图log,无法正常启动,会是什么原因导致的?
A:1) FLASH型号无法识别出大小,导致不能正常启动,或者烧录镜像超过FLASH大小。 2) FLASH损坏或者为贴好导致启动失败。 3) 未烧录好或者不正常烧录镜像。
Q:目前方案flash分区是什么样的?在哪里可以查看 A:分区配置在linux-4.14.90-dev/linux-4.14.90/arch/mips/boot/dts/siflower/版型.dts中可以查看
以16M方案为例,具体分配如下Q:Factory分区的值可以修改吗?通过什么方式进行修改? A:此分区是可以在串口通过指令进行修改的, 例如:修改romtype ```printf “\x22\x00\x00\x00”| dd of=/dev/mtdblock3 bs=1 count=4 seek=161``
例如:修改macaddr
printf "\xa8\x5a\xf3\x00\x14\x6e"| dd of=/dev/mtdblock3 bs=1 count=6 seek=0
例如:s手动写PCBT
printf "PCBT"| dd of=/dev/mtdblock3 bs=1 count=4 seek=23
参数说明 bs固定为1 count为写入值的大小 seek是偏移量(参考flash分区说明),任何一个参数重新写入后需要重新启动机器才会生效。
分区具体参考FLASH分区开发手册
WIFI
Q:目前wifi是否支持b/g/n和a/n/ac混合模式? A:支持 2.4Gwifi
在/etc/config/wireless中config wifi-device ‘radio0’下配置:
11b:hwmode配置为11b,删除htmode
11g(实际为b/g mixed):hwmode配置为11g,删除htmode
11n(实际为b/g/n mixed):hwmode配置为11g,htmode有值(频段带宽配置为自动:htmode=HT40,ht_coex=1;配置为40/20MHZ:htmode=HT40/HT20)
(ht_coex为2.4G 20/40MHZ自动切换的配置,仅在2.4G频段带宽为自动时配置为1,其余情况配置为0或删除)5Gwifi: 在/etc/config/wireless中config wifi-device 'radio1'下配置: hwmode配置均为11a 11a:删除htmode 11n:htmode配置为HT20或HT40 11ac:htmode配置为VHT20,VHT40或VHT80
Q:串口频繁打印如下log,是什么问题
A:日志有大量 RIU_IRQMACCCATIMEOUTMASKED_BIT 反映出来rx一直检测到能量,需要检查一下环境,有两种可能。 1、周围有大的干扰,排查干扰源,比如有ate测试在跑。 2、板子线路上有问题,比如天线焊接短路了等。 解决办法:切换信道看是否恢复,如没有,检查周围环境以及板子情况
- Q:串口打印”sf_wifi_rf_irq_handle, irq : 0x8”是代表什么意思? A:这个是rf的中断的日志,代表射频需要校准,一般是温度变化太多导致
- Q :如何去获取wifi下挂载的设备信息? A: 使用iw wlan0 station dump可以获取到2.4GWiFi下挂载设备的mac地址及tx rx等数据(wlan0换成wlan1可以查看5G的),再用cat /tmp/dhcp.leases指令可以查看对应mac地址设备的ip地址和host name
- Q:如何查看wifi和终端设备的协商速率? A:可以通过rc下的节点查看,rc默认不开,需要手动打开.如5g
echo 1 > sys/kernel/debug/ieee80211/phy1/siwifi/enable_rc
,然后重新连接wifi 接着在串口cat /sys/kernel/debug/ieee80211/phy1/siwifi/rc/设备Mac/rx_status
查看 比如mcs9就代表协商速率到866Mbps - Q:如何查看2.4G/5G和设备端之间发送的状态? A:可以在串口
cat /sys/kernel/debug/ieee80211/phy1/siwifi/rc/设备Mac/status
查看 比如mcs9就代表当前TX工作在866Mbps,并且可以通过查看发送和成功包的个数,了解当时发送成功率如何 - Q:如何获取连接到wifi的设备的连接时长? A:可以cat /etc/config/wldevlist查看对应mac地址的设备的option associate_time参数。但是这个参数不是实时更新的,可能过一段时间更新一次。
- Q:编译镜像前如何修改页面wifi信息? A:修改代码里对应的package/kernel/mac80211/files/lib/wifi/mac80211.sh脚本里的相关参数
Q:WiFi如何固定发射速率? A:跑信令仪器的时候需要固定发射速率,否则速率会根据速率调整算法变化。
以5G的80M带宽mcs9为例,步骤如下
1、上电后, 执行echo 1 > /sys/kernel/debug/ieee80211/phy1/siwifi/enable_rc
2、仪器连接上5G
3、执行如下命令固定速率到80M/mcs9-sgi (301为mcs9-sgi的index值)
echo 301 > /sys/kernel/debug/ieee80211/phy3/siwifi/rc/终端mac地址/fixed_rate_idx
4、跑信令测试。
- Q:如何编译外置PA/内置PA镜像? A:1)修改openwrt目录.config 关闭2.4g外置PA,CONFIG_PACKAGE_SFUMAC_LB_EXT_PA_SUPPORT=y不选 关闭5g外置PA,CONFIG_PACKAGE_SFUMAC_HB_EXT_PA_SUPPORT=y不选 2)去掉对应版型dts如下配置 force_expa = <1>
有线网络
- Q:软件LAN WAN划分如何实现的? A: 编译镜像前在/openwrt-18.06 /target/linux/siflower/sf19a28-fullmask/base-files-SF19A28-版型/etc/board.d路径下修改 01_network 文件中完成划分 参考文档有线网络和服务介绍
Q:当板子启动初始化之后,网口数据tx/rx不通时如何处理? A:当出现数据不通时,即ping包延迟大或者断断续续,需要调整对应的tx/rx delay,使用devmem命令调试gmac芯片中预留的tx/rx delay寄存器
目前镜像都支持第一次上电加载时驱动,检测到factory分区没有校准值,则进行自校准一次 另外在支持autoDelay指令的镜像中可以通过以下指令来校准网口TX/RX delay值 ```echo autoDelay > sys/kernel/debug/gmac_debug``
Q:Vlan功能是否支持?如何配置? A:支持。 Vlan本身是数据包多了一段数据,使用openwrt标准配置去按照你们需求处理,处理特定的tag,在协议栈自己创建对应的vlan interface处理即可。 network里vlan网络端口配置
option vlan 表示对应vlan id option ports 表示这个vlan数据包会到那几个口, 5t 表示cpu口
- Q:系统下GMAC_Delay重新校准? A:在串口执行echo autoDelay > sys/kernel/debug/gmac_debug
- Q:软重启网口没有link,而断电重启不会出现此问题是什么原因? A:在软重启会先down以太网接口,此时驱动会disable all phy,interface up后会重新enable all phy;如果发现uboot阶段,所有网口依旧没有link,说明uboot中没有进行switch 的hw reset(uboot阶段通过gpio触发),reset后网口会恢复默认配置;而断电重启不会有此流程,所以不会出现此现象; 需要确认uboot中CONFIG_SFA18_ESWITCH_RST_GPIO的配置, 这是一个用户可以修改的宏,表示的是switch hw reset对应的GPIO number,不同客户使用我们芯片时,硬件接的GPIO number可能是不一样的需要对照硬件改为对应的gpio num 即硬件上switch hw reset接的对应的gpio为11, 则CONFIG_SFA18_ESWITCH_RST_GPIO 需要配置为11
- Q:是否支持的NAT数量不低于10000?支持UDP穿越NAT? A:支持不低于10000,udp穿越NAT由具体的udp方案决定
- Q:有线性能的测试包长是大包还是小包? A:有线性能的测试包长都是大包,小包数据需要用仪器测试
- Q:为什么以太网测试lan-lan双向能到1800Mbps+,lan-wan双向只能到900Mbps+? A: 因为我们方案是rgmii接口接的switch ,故跑lan-lan双向 , lan-wan双向结果会有不同
跑lan-wan时:
对于我们cpu来说 wan rx , lan rx 共享1G带宽,wan tx lan tx 共享1G带宽,故总和不会超过1G ,所以lan-wan双向900Mbps+是正常的
跑lan-lan时:
可以理解为在switch芯片内部打流,故lan1/lan2 tx/rx都是独享1G带宽,故总和会在1800Mbps+
- Q:比如qos,黑白名单这些规则是通过netfilter,tc实现的还是芯片实现?调用驱动接口还是iptables? A:qos,黑白名单都是在上层软件实现的,但目前SDK黑白名单功能是没有的,需要开发。对设备上网权限的实现是基于iptables和ipset,设备限速是基于tc 实现的,
Q:etc/config/目录下的这几个配置文件(basic_setting network wirless dhcp firewall)是在代码什么位置实现的? A:basic_setting就是放在对应的target/linux/siflower/sf19a28-fullmask/版型/etc/config下 network是由 package/base-files/files/bin/config_generate这个脚本生成的 wireless是由package/kernel/mac80211/files/lib/wifi/mac80211.sh生成的 dhcp是由package/network/service/dnsmasq/下配置生成的 firewall是由package/network/config/firewall/下生成的 这几个配置文件都可以先直接准备好放在target/linux/siflower/sf16a18-fullmask/版型/etc/config/下,这样板子启动的时候会使用已经存在的配置文件
如果想要在编译镜像之前修改这些配置,请修改对应配置文件
系统配置
- Q:系统下/etc/config/目录下各个配置文件的作用是什么? A:参考config文件配置手册
- Q:编译镜像页面默认英文,如何修改? A:修改feeds/luci/modules/luci-mod-admin-full-siflower/root/etc/config/luci里的lang配置。
- Q:修改网页接口出错导致网页报错打不开怎么办? A:当接口出错时,调用该接口时会网页会得到相关错误信息,其中会提示哪个文件的哪一行出了问题。通过串口工具(或ssh)打开提示路径下出错的lua文件。先根据错误提示修改有误的地方,然后执行指令rm -rf /tmp/luci*,再重新进入网页即可。
- Q:使用nand flash的产品uboot和openwrt该如何编译? A: 参考SPI Nand Flash物料调试指南
- Q:如何修改串口波特率? A:目前由于在驱动代码中固定串口波特率为115200,其中ttyS0是可以在串口 通过stty -F /dev/ttyS0 speed 9600指令进行修改。
- Q:如何查看系统时钟频率? A:在串口执行 cat sys/kernel/debug/clk/clk_summary即可查看
- Q:如何查看CPU主频? A:在串口执行
cat sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
即可查看 使用以下指令可以修改cpu频率echo 1000000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
echo 1000000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
- Q:如何查看芯片温度? A:在串口执行
cat sys/kernel/debug/aetnensis/temperature
即可查看
Q:矽昌mac地址使用和分配规则是怎么样的? A:siflower 方案mac地址使用情况如下,所有的mac使用的地址都是以一个基础的mac地址往后增加9从而得到十个mac地址供系统使用。
wifi所用的起始mac地址可以通过factory分区查看:
2.4Gcat /sys/devices/platform/factory-read/macaddr_lb
5Gcat /sys/devices/platform/factory-read/macaddr_hb
每个WiFi会各用到4个mac地址
以A8:5A:F3:09:80:1C 这个mac地址为举例,板子起来后通过命令读取
macaddr_lb : A8:5A:F3:09:80:1C
macaddr_hb : A8:5A:F3:09:80:20
所以2.4G 用到的mac地址为 A8:5A:F3:09:80:1C~ A8:5A:F3:09:80:1F
第一个80:1C使用作为2.4G ssid名称,可以通过ifconfig查看到
第四个80:1F即为2.4G的实际mac地址。
第二个80:1D用作租赁网络2.4G的mac地址
第三个80:1E用作访客网络2.4G的mac地址5G用到的mac地址为 A8:5A:F3:09:80:20~ A8:5A:F3:09:80:23
第一个80:20使用作为5G ssid名称
第四个80:23即为5G的实际mac地址,可以通过ifconfig查看到
第二个80:21用作租赁网络5G的mac地址
第三个80:22用作访客网络5G的mac地址所以WiFi的mac地址查询:
cat /sys/devices/platform/factory-read/macaddr_lb
的值+3即为 2.4G的mac地址
cat /sys/devices/platform/factory-read/macaddr_hb
的值+3即为 5G的mac地址修改初始的mac地址,即macaddr0
指令 :
printf “\xa8\x5a\xf3\xff\x12\x7a”| dd of=/dev/mtdblock3 bs=1 count=6 seek=0
引号中为要修改的mac地址,修改后重新上电才会生效
重启后系统WiFi,lan,wan用到的mac地址会使用这个修改的mac地址按照上述的计算方法通过驱动来统一计算分配。
Q:为什么wifi灯通过节点方式控制不了?需要如何控制? A:wifi的灯并不是控制不了,而是当前在sys/class/leds下的节点是wifi驱动注册实现的,四个节点分别检测节点名称对应的phy的数据包,有数据就闪一下。修改单独一个节点就可能会出现无法控制或常亮的情况。
如果实在要控制,可以尝试以下步骤:
1、分别对4个节点echo none > /sys/class/les/phy0rx/trigger,取消phy数据包的触发源
2、将所有节点的brightness置为1(echo 1 > sys/class/leds/phy1rx/brightness),此时灯灭了。
3、将其中一个节点的brightness置为0,灯就亮了。
此时就可以通过控制一个节点的brightness控制led灯。若要恢复则重新echo触发源到4个节点并且brightness配置回默认值或者重启即可。如果完全不需要wifi驱动控制的这一套led触发机制,可以:
1、将package/kernel/sf_smac/Makefile中的LED config注掉。
2、将dts中wifi的gpio删去
3、按照文档[GPIO综合使用手册 ,添加一套自己的led节点(记得gpio口要配置正确,可参考之前删去的wifi的gpio)
4、在make kernel_menuconfig中Device Drivers–>LED_Support中确认已支持led gpio,并记得添加trigger,常用的有timer、default-on等
5、完成以上步骤后,sys/class/leds下就会出现一个自己注册的节点,控制这个wifi灯。此时echo指令到trigger节点已能很方便地控制led若还想要实现更方便或更复杂的闪灯逻辑,可以参考文档中的“使用led-button package进行管理”,对需要的动作进行自行适配。
如果开发完成(假设行为编号为20),运行指令 /bin/led-button -l 20,就可以让led实现20对应的行为。
测试问题
- Q:siflower性能如何测试?有无指导文档? A:性能测试说明及方案参考https://siflower.github.io/2020/11/30/siflower_throughput_guide/
- Q:射频性能标定相关说明文档? A:射频性能测试参考https://siflower.github.io/2020/12/01/siflower_ate_test_guide/
Q:WIFI吞吐量测试常见问题解决? A:1) 设置为2.4G 40M带宽 5G 80M带宽,网卡和wifi间协商速率达不到300/866 mbps? ·检查网卡是否支持1200M ·移动设备调整路由与网卡天线的位置 ·检查天线有无松动或者损坏 ·是否屏蔽箱信号反射太强,需要增加衰减器 ·如果使用的天线是客户自己的,更换我们的天线进行测试 ·确认配测网卡型号以及驱动版本是否需要更新
2) IxCharoit/iperf软件打开跑流失败,无法进行测试 ·检查测试软件设置IP是否正确 ·关闭电脑防火墙以及杀毒软件 ·重启软件 ·网线接入端是否松动或者网线是否损坏
3) 跑流测试数据比过往测试数据低或者差异较大? ·检查软件版本 ·检查打流时任务管理器wifi连接速率和网络使用情况 ·检查硬件电路:天线是否焊接正常,RF电路有无损坏 ·利用确认正常的机器,在相同环境测试,排除环境问题
4) 同样的环境吞吐性能变差(连接速度网络使用率下降) ·检查屏蔽箱内部是否有较大干扰源,如金属风扇,金属器件 ·重启板子或者重启Ixcharoit软件 ·调整天线方向,如板子摆放位置,网卡天线摆放位置,旋转一定的角度
Q:射频性能测试常见问题解决 A:1) 当使用ate_cmd遇到任何warning,error等问题 ·是否正常初始化,ate_init ·发送指令的各个参数是否正确 ·发送之后是否正确执行了停止操作 2) 如果串口卡死或者板子死机? ·重新板子或者看能否重新ate_init 3) 测试时如果发现功率为负,或者抓不到功率信号 硬件方向 ·检查板端馈线是否焊接正确,或者扣线方式有没有扣紧 ·检查仪器RF口线材是否松动,重新拧紧 ·检查线材是否有问题,需要更换 ·检查仪器问题,是否长时间未校准,导致抓取结果较差
软件方向 ·初始化的天线是否与接到仪器的一致,如ate_init hb1 则对应接ant1到仪器 ·指令参数是否输入正确/工具是否选择正确 ·仪器端设置是否与板端发送信号设置相对应 如果以上措施都检查没问题还是不正常,请检查板子RF电路是否存在问题。 4) 测试时发现功率偏低,或者EVM偏低? ·是否未调节合适的gain值 ·EVM偏低,检查测试时仪器是否打开全包 ·功率偏低,检查是否未补偿线损到仪器 ·evm偏低,检查线是否焊接好,或者线是否有问题 ·板子RF电路是否存在问题
5) 接收灵敏度测试值比标准数据差 ·是否进行XO校准,检查XO值是否写入 ·接收测试时RX波形选择是否正确 ·检查测试环境,线材是否有损耗 ·硬件问题,检测RF电路是否存在问题影响接收性能
- Q:如何退出ate模式 A:当完成射频测试需要恢复正常模式,在完成停止指令后以下指令即可
sfwifi reset fmac
文档信息
- 本文作者:Phoenix
- 本文链接:https://siflower.github.io/2021/12/07/a28_faq_guide/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)