Target 100m Range Wifi 802.11b Setting

本文介绍在NS3中配置Wifi802.11b仿真的过程,包括设置中心频率2.437GHz,以及默认的传播延迟模型ConstantSpeedPropagationDelayModel和衰减模型LogDistancePropagationLossModel。文章还讨论了模型参数的调整方法及环境噪声的设置。

Wifi 802.11b 采用频率 中心频率 2.412 ~ 2.484 GHZ , 通常称在 2.4GHZ. 我的ns3仿真设置2.437GHZ,即中心频率.

 

YansWifiChannelHelper::Default() 获得的信道缺省传播模型:ConstantSpeedPropagationDelayModel,缺省衰减模型:LogDistancePropagationLossModel。

  • ConstantSpeedPropagationDelayModel有一个属性是Speed,缺省为3e8,即光速。
  • LogDistancePropagationLossModel其实就是ns2中的Shadowing模型,即综合了Free space和two-ray的模型,比较接近真实。

数学表述如下: ,L0 是其参考衰减,缺省使用的是802.11a所在的频率 5.15GHZ,所以这个值必须修改,如果采用了802.11b协议。SystemLoss都使用缺省值1.

环境噪声设置

 

 

根据以下内容整理出一篇文档: BCM校准原理 版本/状态 责任人 起止日期 备注 V1.0/初稿 何良俊 2025.4.30 初次撰写 版本历史 目录 1. 前言 2 1.1. 任务概述 2 1.2. 术语定义 2 1.3. 涉及到的其他文档 2 2. 校准原理 2 2.1. 4PA参数校准原理 3 2.2. 4PA参数产测校准 3 3. NVRAM配置参数简介 4 3.1. PA参数 4 3.2. Board limit power相关参数 5 3.2.1. 基准功率值 5 3.2.2. 偏移值 5 3.3. 子带宽偏移 10 4. Region Limit Power 11 4.1. Channel Set 12 4.2. Rate Set 13 4.3. Sub Channel Rules 14 4.4. Base Locale 16 4.5. HT Locale 18 4.6. Region Rule 19 5. 验证方法 21   前言 任务概述 整理输出负责BBA平台BCM方案机型EB200v-Pro功率定制方面的问题与总结,方便后续开发。一些实际代码、文件路径等都以EB200v-Pro为例,其他机型可作为参考。 术语定义 术语 说明 Board Limit Power 板限功率,由设备本身出发,基于成本,功耗等原因对于发射功率的限制 Region Limit Power 法规限制功率,由法规限制而对功率做出的限制 Target power 目标功率,板限功率和法规限制功率取小值,实际发出来的功率 PA Power amplifier,功率放大器 ADC Analog-to-Digital Converter,模拟到数字转换器 DET电压 PA的检波电压 tssi Transmitter Signal Strength Indicator,变送器信号强度指示,Transceiver(收发器)通过ADC采集到的PA反馈的DET电压 idletssi Transceiver 中 ADC 无外部输入时量化的值,类似 ADC的“底噪” 涉及到的其他文档 参考文档及资料: BCM方案校准原理.pdf BCM功率控制.pptx ——丁彤 https://rdconfluence.tp-link.com/pages/viewpage.action?pageId=281846281 67XX-NVRAM-AN100 4ffe3e8e.pdf 校准原理 为了使天线的发射功率刚好就是想要的目标功率,Broadcom通过修改功率放大器(PA)的配置参数(PA参数)来调节天线发射功率。BCM校准原理其实就是利用公式去拟合图2.1(a)/图2.1(b)中的曲线(线性检波/对数检波),即Estimated Power和 TSSI关系。拟合过程中通过固定形式的公式计算出公式中相应的参数,即为PA参数。最终通过反馈控制TSSI的值达到控制功率的目的。 BCM方案用到的有3PA参数校准和4PA参数校准,其中3PA参数只支持线性检波,4PA参数既支持线性检波,又支持对数检波。EB200v-Pro用的是4PA参数校准。 4PA参数校准原理 4PA参数校准的DUT的实发功率计算公式为P = f(A, B, C, D, idx) , 其中,线性检波公式为: P=A/2^8 +B/2^24 〖idx〗^2+(C〖*idx〗^2)/(2^12 (〖idx〗^2-2*D) ) 对数检波公式为: P=A/2^8 +B/2^16 idx+C/2^22 〖idx〗^2+(D*idx)/(2^15 (idx-128) ) A,B,C,D为4个PA参数,idx为变量, idx = g(tssi, idletssi),其中, idletssi与无线芯片的温度等因素有关,发20M和40M的包时, idletssi值不一样;温度变化时,idletssi值也有差别,idletssi的值包含了温度信息。每个天线有对应的idletssi与tssi,不同信道差别不大。可通过以下指令读取idletssi与tssi: wl –i wlX phy_test_idletssi Y wl –i wlX phy_test_tssi Y 其中,X为无线接口,Y为chainY,天线编号 样机发不同的功率值,通过指令读取发包时相应的tssi与idletssi,计算对应的idx,再通过对应的检波公式计算出PA参数 4PA参数产测校准 BCM产测校准过程就是平移检波公式,得到新的PA参数。如果原PA参数 为A_old、B_old、C_old,D_old,则原功率和tssi对应关系如式: P_old = f(A_old, B_old, C_old, D_old, tssi) 例如当目标功率发20dBm,实测为(20+n) dBm,则实发功率需要降低n dBm,对应tssi和新功率P_new的关系: P_new = f(A_new , B_new , C_new , D_new , tssi) 根据4PA参数的检波公式可以看到,只需修正参数A的值即可准确的进行平移。 NVRAM配置参数简介 Board limit power用一些nvram值来进行设定,这部分nvram的值一般放在机型目录下的nvram.txt(或nvram.nvm)文件中,下面介绍其中一些与T10产测校准和Board limit power相关的参数字段。 PA参数 PA参数字段形如 paXg(Y)aZ= List ,其中Xg表示频段,如2g/5g/6g,Y表示带宽,20M带宽没有此项,aZ表示天线序号,Lsit为一列4x4位的16进制数(0可写为0x0000,或0x0),用”,”分割,不能包含空格,表示PA参数。 以EB200v-Pro为例,采用4PA参数校准,2g的PA参数List为44x4位的16进制数,按序依次为A、B、C、D参数,如下图: 4PA参数的产测校准只修改PA参数A,使用nvram show | grep pa2g指令查看校准后的PA参数,如下图,可以发现只修改了第一项参数: 5g的PA参数List为20个16bit的16进制数,每4个为一组,按序依次为A、B、C、D参数,共五组,分别表示5g的band1、band2、band3-1、band3-2、band4,Broadcom将band3划分成两部分,暂不清楚具体分法,与硬件组所给的功率表中band3划分不同,硬件组给的功率表是将band3按照每80M划分成三部分,以下为EB200v-Pro的5g PA参数: 使用nvram show | grep pa5g指令查看校准后的PA参数,如下图,校准后只修改了参数A: PA参数由硬件同事提供,通常取3-5pcs校准数据的平均值,拿到PA参数后不仅要更新nvram文件中的相应字段,还需更新到T10工具的配置文件中,路径为Dut/Config/Config.ini,产测校准时载入的默认PA参数来自该Config.ini文件。 Board limit power相关参数 Board limit power的计算方式是基准功率值减去偏移值的方式 基准功率值 形式为maxpXg(bY)aZ=H,Xg表示频段2G/5G/6G,bY表示band Y(0-4),表示5g的band1、band2、band3-1、band3-2、band42.4G只有1个band,故没有此项,aZ表示天线序号,H为0-255之间的整数(也可为十六进制数),单位是0.25 dBm,表示最大功率,其它功率都在此基础上减去一定的offset得来。 如下为EB200v-Pro的基准功率值,2g为23.5dBm,5g为26.5dBm: 偏移值 ppr_backoff偏移 nvram配置参数中有一个形式为ppr_backoff_Xg=H的字段,Xg表示频段2G/5G/6G,H为偏移值,单位是0.5dBm,该偏移值不仅影响board limit power,还会影响到region limit power,也就是说在计算target power时,都需要减去此偏移值: 11b速率偏移 cckbw20(ul)2gpo=H表示2.4G 11b速率功率的offset,H是4x4位16进制数字,由高位到低位分别代表115.52、1,单位0.5dbm,目前并不知道两个设定所代表的模式区别,通常设定为相同: Nibble 3 2 1 0 速率 11M 5.5M 2M 1M Max power 23.5 ppr_backoff_2g 1.5 Board limit power 22 22 22 22 offset 0 0 0 0 cckbw202gpo 0x0000 cckbw20ul2gpo 0x0000 如上表为EB200v-Pro的11b的功率转换,其基准功率值为23.5dBm,ppr_backoff偏移值为1.5dBm,board limit power为22dBm,故最终速率偏移值为0. 11g速率偏移 控制11g速率偏移的参数为ofdmlrbw202gpo和dot11agofdmhrbw202gpo,通常是4x4位16进制数字,单位0.5dbm,ofdmlrbw202gpo由高到低,第一二位无表示,第三位代表12,18,第四位代表6,9;dot11agofdmhrbw202gpo由高到低分别代表5448、36、24: Nibble 3 2 1 0 速率 \ \ 12,18 6,9 Board limit power \ \ 22 22 offset 0 0 0 0 ofdmlrbw202gpo 0x0000 速率 54 48 36 24 Board limit power 20 20 21 22 Offset(0.5 dBn) 4 4 2 0 dot11agofdmhrbw202gpo 0x4420 11a与11n/ac/ax/be MCS0-9偏移 形如mcsbwXYg(Z)po=H为控制11a与11n/ac/ax/be MCS0-9 offset的参数,bwX表示带宽,Yg表示2G/5G/6G,Z表示band(5G的取值有l,m,h,x1,x2,x3,x4,依次表示band1、band2、band3-1、band3-2、band4,x3,x4暂不清楚所表示的band),2.4G只有1个band,故没有此项,H为8×4位十六进制数,每4位表示一组速率集,单位是0.5 dBm: 以mcsbw205glpo为例,下表展示了其由高到低8个16进制数字分别代表的速率,其他的参数值各位数字代表含义与此相同。 mcsbw205glpo转换表 Nibble 7 6 5 4 3 2 1 0, 11a rate \ \ \ 54 48 36 24 6,9,12,18 11n mcs rate \ \ 7 6 5 4 3 0,1,2 11ac/ax/be mcs rate 9 8 7 6 5 4 3 2,1,0 Max power 26.5 ppr_backoff_5g 1.5 Board limit power 21 21 22 23 24 24 25 25 Offset(0.5dBm) 8 8 6 4 2 2 0 0 mcsbw205glpo 0x88642200 11ac/ax/be MCS10-13偏移 设置高速率的偏移值的参数形如mcsXqamYg(Z)po=H,Xqam用来区分MCS,其中1024qam表示MCS10-114kqam表示MCS12-13,Yg表示2G/5G/6G,Z表示band(5G的取值有l,m,h,x1,x2,x3,x4,依次表示band1、band2、band3-1、band3-2、band4,x3,x4暂不清楚所表示的band),2.4G只有1个band,故没有此项,H为8×4位十六进制数,每4位表示一组带宽速率集,单位是0.5 dBm: 以mcs1024qam5glpo为例,下表展示了其由高到低8个16进制数字分别代表的带宽速率,与此类似mcs4kqam由高到低分别表示13(160M)、12(160M)、13(80M)、12(80M)、13(40M)、12(40M)、13(20M)、12(20M): mcs1024qam5glpo转换表 Nibble 7 6 5 4 3 2 1 0, 11ac/ax/be mcs rate 11 10 11 10 11 10 11 10 bandwidth 160 160 80 80 40 40 20 20 Max power 26.5 ppr_backoff_5g 1.5 Board limit power 20 20 20 20 20 20 20 20 Offset(0.5dBm) A A A A A A A A mcsbw205glpo 0xAAAAAAAA 上述参数只能控制到160M带宽的MCS10-13的速率,对于320M带宽的MCS10-13,由形如mcsbw320Xqampo=H,mcsbw320Xqampo_h=H的参数控制,Xqam为1kqam表示MCS10-114kqam表示MCS12-13,其中mcsbw320Xqampo控制6g band0-2,mcsbw320Xqampo_h控制6g band3-5: Mcs expansion偏移 一个速率档位的偏移值由4bit的16进制数表示,其最大值为0xF,单位0.5dBm,即最多只能表示7.5dBm的偏移,对于大于7.5dBm的偏移,就需要用到形如mcsXpoexp=H的参数,其中mcsX表示速率,可取MCS8-13,H为32位的16进制数,其每一个bit位都有相应的含义,如下: 以EB200v-Pro 2g的MCS12-13为例,基准功率值为23.5dBm,ppr_backoff_2g为1.5dBm,MCS12-13的board limit power为14dBm,偏移8dBm,则其MCS12-13 offset二进制表示应为10000,mcs4kqam2gpo对应的MCS只能用4bit表示,故取二进制10000的后4bit填充进mcs4kqam2gpo的对应MCS位置,转为16进制为0x0,MCS12 offset二进制表示10000由低到高的第5 bit位为1,按照上表找到mcs12poexp的32bit中对应的2g 20M/40M的bit位,即bit0和bit8,再置1,得到的mcs12poexp=0000 0000 0000 0000 0000 0001 0000 0001,转换为16进制为0x00000101,MCS13同理: 子带宽偏移 子带宽的偏移是相对于主带宽的,偏移的目的是为了使子带宽的实发功率与主带宽一致,所以可以理解为子带宽的board limit要与主带宽一致。根据天线分为两部分: chan0-2为pdoffsetWinXmYgbZ=H,其中W为子带宽,Xm为主带宽,Yg为频段,bZ为band,bZ通常表示主带宽为40M和80M的band,160M的band划分不同,用cZ表示,H为16bit的16进制数,由低到高每五位(有符号数)分别表示chain0、chain1、chain2相较于主带宽的偏移,单位0.25dBm,每五位的最高位为符号位,0表示正,1表示负。 chain3为pdoffsetXinYmZgcore3=H和pdoffsetXinYmZgcore3_1=H,pdoffsetXinYmZgcore3的16bit数由低到高每五位(有符号数)分别表示band0、band1、band2,每五位的最高位为符号位,pdoffsetXinYmZgcore3_1的16bit数由低到高每五位(有符号数)分别表示band3、band4,后六位保留,单位0.25dBm,每五位的最高位为符号位。 Region Limit Power Broadcom的Region Limit设计了精细化的数据结构和定制接口,可以实现不同信道,不同速率之间自由控制,在功率表中也是表现为分信道集 x 分速率进行功率限制,也就是对某信道(集)的某个速率(集)要限制在多少dBm以下的功率。功率表文件一般在 bcmdrivers\broadcom\net\wl\impl105\main\components\clm-api\src 中(以EB200v-Pro为例)。 所使用的WiFi芯片架构不同,其功率表文件也不同,BCM机型有两种架构:NIC与Dongle。NIC架构中无线芯片只负责PHY层数据包的接收,收到包后,传给CPU的wl.ko处理;Dongle架构中,无线芯片处理MAC层WiFi协议的计算工作,报文数据的DMA操作,Host CPU中有一个dhd.ko负责处理与无线芯片的通信。 使用NIC架构的无线芯片,其功率表文件为wlc_clm_data_nic.c,使用Dongle架构的无线芯片,其功率表文件为指定芯片类型的文件。不同频段所使用的无线芯片架构可能不同,比如2.4G使用的是NIC架构的芯片,那么2.4G的功率表就需要在wlc_clm_data_nic.c文件中修改,5G使用Dongle架构的芯片BCM6715,那么5G的功率表就需要在其芯片类型的文件wlc_clm_data_6715b0.c中修改。需要确定2.4G、5G或其他频段的芯片及其架构设计,确定各个频段的功率表所在文件,避免一开始就弄错方向。 架构 说明 功率表文件名 代表芯片 NIC linux host端仅使用wl.ko wlc_clm_data_nic.c BCM4360/ 6750/6755等 Dongle 1. linux host端使用dhd.ko,wl.ko 2. 无线芯片的片上运行dongle(rtecdc.bin) 指定芯片类型的文件中:wlc_clm_data_6715b0.c、wlc_clm_data_43684b0.c BCM43684/ 4366/4365E等 Channel Set Channel Set的表达为一个数组:static const unsigned char locale_channels[] ,其中的每一行与 enum channel_set 一一对应,每一行第一个数字代表本channel set有几个channel range如下: 一个channel range则表示一组连续的channel 集合,不同区域可用的信道不一样,所以有很多channel range,分频段带宽进行设置,定义在形如static const struct clm_channel_range channel_ranges_Xg_Ym[]的数组中,其中每一项与enum range_Xg_Ym一一对应,其中Xg为频段,2g/5g/6g,Ym为带宽,每一项有两个数字表示该channel_range的起始channel: 功率表中的信道集也就是页面上显示的20M 的可选信道,如果新机型所支持的信道可以在原有的信道集中找到,在直接选择对应的信道集;若无法找到,则需要新增信道集,在 static const unsigned char locale_channels[] 数组中新增一行,添加上该channel set所需要的channel ranges,并且与之对应的在 enum channel_set 中新增 CHANNEL_SET_X = X, 即可实现信道集的新增。信道集为后面分信道控制功率提供基础。 Rate Set Rate Set与Channel Set类似,它表达的是不同速率的组合,为我们分速率控制功率提供基础,需要注意的是,很多rate都有多种模式,如54M速率就有普通OFDM、CDD、TXBF等模式,CDD和TXBF又按照不同数量的tx stream分多种。最重要的结构是多组如下组合的数据结构,其中每一项一一对应: static const unsigned char rate_sets_Xg_Ym[] enum rate_set_Xg_Ym static const unsigned short rate_sets_index_Xg_Ym[] 其中 Xg 为频段标志,2g/5g/6g,Ym为带宽标志,20m/40m/80m/160m/320m,速率集和前文提到的信道集结合,共同进行功率控制。 static const unsigned char rate_sets_Xg_Ym[]中每一项第一个数字表示该rate set含有的rate数,static const unsigned short rate_sets_index_Xg_Ym[]中记录的则是每一项rate set在rate_sets_Xg_Ym[]中的index。如果要求的速率集在现有代码中找不到,则需要新增速率集,方法如下: 在 static const unsigned char rate_sets_Xg_Ym[] 中新增速率集,如: /* XG YM rate set 29 */ 1, WL_RATE_2X2_STBC_MCS0, 在 enum rate_set_Xg_Ym 中增加 RATE_SET_XG_YM_29 = 29, 在 static const unsigned short rate_sets_index_Xg_Ym[] 中新加一个索引,其值为累计的速率个数(包含每一项rate set的首个表示速率个数的数字),也即在rate_sets_Xg_Ym[]中的index。 每一个速率的宏定义,如WL_RATE_2X2_STBC_MCS0可以在类似于bcmwifi_rates.h的 文件中找到,EB200v-Pro的该文件路径为:bcmdrivers\broadcom\net\wl\impl105\main\src\shared\bcmwifi\include\bcmwifi_rates.h Sub Channel Rules Sub Channel Rules(SCR)它表达了子信道的功率规则,部分客户端可能也不支持大带宽,只使用部分子信道,故需要指明实际使用带宽小于设定带宽时应该遵循何种规则,比如设定为80M时,发送20M的数据包,应该遵循20M、40M还是80M的功率规则。 这部分的数据结构层级关系如下: 其中 Xg为频段,Ym为带宽,ID为编号,后续引用这部分时,只会用一个简单的SCR_ID来表达所有频段和所有带宽情况下的引用情况。 以SCR_1的5G 80M为例,这条SCR规则就指定80M信道42~171的子信道规则,L和U分别表示左一半的40M信道和右一半的40M信道,他们都遵循自己所在的40M信道规则,其内部20M子信道的规则有L和U的字母组合表示,都遵循自己所在的20M信道规则,如在band1的CHANNEL_80M_42中,具体指代如下: 80M_42 L U 40M_38 40M_46 LL LU UL UU 20M_36 20M_40 20M_44 20M_48 Base Locale Base Locale里制定的是每个频段在 20M 带宽下802.11 a/b 协议速率的功率控制规则。有索引表和详表,索引表数据结构形如enum locale_Xg_idx,详表形如static const unsigned char locales_Xg_base[],其中Xg表示频段,2g/5g/6g,索引表中的每一个 IDX 都对应详表中对应位置的详细规则。以2G为例: 以locales_2g_base[]中的Locale A_226为例,每个locale中第一行CHANNEL_SET_2表示本规则所包含的信道集,即上文4.1 Channel Set 中提到的信道集设置。 第四行 1, /* 1 regulatory channel limit element(s) */ 数字代表本规则的最高功率规则数量N,后面N行即为具体的信道集最大功率限制,单位为1dBm,此处是有1条最高功率的规则,第五行为具体的最大功率限制,为30dBm。 第七行 1, /* 1 TX limit element(s) */ 数字表示后面还有N行规则,分信道和分速率对功率进行限制,此N行的单位为0.25dBm。计算方式为:假设功率表限制的功率为P_target,此处所填数字为P_limit,则: (P_limit+P_shift) *0.25 -P_pprbackoff * 0.5=P_target4-1 其中P_pprbackoff为上文3.2.2.1提到的ppr_backoff偏移,单位为0.5dBm,P_shift为本功率表文件中power_shift,单位为0.25dBm,定义在const struct clm_data_registry clm_data数据结构中,如下: 故分信道和分速率对功率限制的值P_limit为: P_limit=4 *(P_target + P_pprbackoff * 0.5) - P_shift 式4-2 此处Locale A_226的P_target = 30,ppr_backoff_2g为0,power_shift为48,最后计算出P_limit=72 如果新机型需要的功率控制规则在原有的规则表里没有合适的,则需要新增功率控制规则。具体做法如下(以5g为例): 在 enum locale_5g_idx 中新增一个IDX,命名为 LOCALE_5G_IDX_XXX 在 static const unsigned char locales_5g_base[] 中新增功率控制规则,指定信道集,最高功率,各信道集在各速率集的下的功率限制,速率集按照前文4.2 Rate Set中提到的进行选择或新增。 HT Locale HT Locale和Base Locale类似,通常用来设置非802.11a/b的功率,HT Locale的索引表形如 enum locale_Xg_ht_idx,详表形如static const unsigned char locales_Xg_ht[],Xg表示频段2g/5g/6g,同理,索引表里的每一项也和详表中的每一块规则一一对应。下以5G为例: locales_5g_ht中每一个locale规则下都有若干组不同带宽的、分信道x分速率的功率限制集,以Locale 10en_4为例,每一组的功率限制集第一行是若干标志位,CLM_DATA_FLAG_WIDTH_20表示当前功率限制集的带宽,为20M;CLM_DATA_FLAG_MORE表示这并非是该locale下的最后一部分,最后一组的功率限制集没有此FLAG;第二行的数字N表示该组功率限制集的条目数,后面的N行即为具体的分信道x分速率的功率限制,单位是0.25dBm,计算方式同上文4.4 Base Locale。 如果新机型的HT Locale的功率控制规则在原有的规则中无法找到,则需要新增 HT规则,与Base Locale类似,在enum locale_Xg_ht_idx和static const unsigned char locales_Xg_ht[]中新增。 Region Rule Region Rule为一条对各频段Base Locale和HT Locale以及SCR规则的引用,多条Region Rule构成我们的国家码列表,这也是更改国家码及对应功率的最初入口。Region Rule 中的国家码即是上层(BCM方案为 oal_wifi_bcm.c)中配置的国家码,并指定各频段Base 和 HT的功率应该遵循哪种功率控制规则,是整个法规限制功率(Region limit)的对外接口。其中主要有两个数据结构,enum ccrevs和static const clm_country_rev_definition_cd13_t country_definitions[],具体如下: 显然,enum ccrevs 中的每一项对应 country_definitions 中的一行国家码,拿其中一条rule举例: REGION("AR", 924, A_369, 11_233, An7_229, 1n_208, NONE, NONE, REG_FLAGS_4), /* AR/924; Flags: FCC-b, TXBF */ 表示设定国家码为AR/924时,遵循2.4G的Base locale为A_369,HT Locale为An7_229,5G的Base Locale为11_233,HT locale为1n_208,6g为NONE,子信道规则为SCR_4。其中locale XXX为前文索引数据结构中LOCALE_5G_IDX_XXX的后缀,比如5G的Base Locale 11_233在enum locale_5g_idx即为LOCALE_5G_IDX_11_233。 如果要新增国家码规则,则在enum ccrevs中新增CCREV_XX_Y(XX为国家,Y为Index),在country_definitions中新增一行规则,指定国家码,索引,2.4G Base locale、5G Base locale、2.4G HT Locale、5G HT Locale、6G Base locale、6G HT Locale、子信道规则及标志位。同时将country_definition_set中的数字加一: 新增完国家码规则后,在上层中设置配置的国家码,在样机启动时,会首先从user_nvram.setting文件中读取,其中可以设置最初的country/rev,如果未设置rev,比如只设置country_code=AR,或者rev设置不正确,比如rev=0,在country_definitions中找不到AR/0的国家码规则,那么驱动就会选择country_definitions中国家码为AR的第一条规则,即AR/922,如果国家码country_code在country_definitions中也不存在,那么驱动会选择country_definitions中的第一条规则,即#a/0。 另外,上层平台也会使用指令配置国家码,BCM方案是在oal_wifi_bcm.c文件的oal_wifi_bcm_setWlanBasicCfg(WIFI_CFG *pWifiCfg)函数中配置,通常指令为wl -i wlX country [country_code]/[rev],如下: 验证方法 以上Region limit和Board limit的所有参数均可通过验证实际发射功率来验证,但做最后实发功率验证前,可以先做白盒测试,即用命令查看这些参数最终组合计算出的功率表是否正确,具体命令为 wl -i wlX curpower(EB200v-Pro中2.4G:wl1,5G:wl0),当前版本上只有产测模式的驱动才支持此条命令。输出结果分为三个区域,Regulatory Limits,Board Limits和Power Targets,Regulatory Limits和Board Limits的显示没有算上ppr_backoff_Xg的偏移,Power Targets为前两部分取小得出,并且算上ppr_backoff_Xg的偏移值,输出中并未分信道显示,要查看多个信道情况,需要额外的切换信道操作,以EB200v-Pro 5G band1 160M为例: 只有使用产测驱动,才能在串口使用指令查看功率表,让软件使用产测驱动运行的步骤如下: 打开产测驱动,在docker的build目录下执行make MODEL=XXX SPEC=XXX supplier_menuconfig 选择 WLAN Selection 勾选 Build HND Mfg image 使用 git clean -xdf 清除先前的编译正式驱动的产物,才能编译产测驱动,同理,要再编译正式驱动,也需清楚编译产测驱动的产物 使用make MODEL=XXX SPEC=XXX all编译产测驱动。 注意,如果是BBA2.5平台机型,如VX420-G2h2.20,可能会在 make menuconfig的时候找不到 BUILD HND Mfg image,此时可以在编译内核模块(kernel_build modules_build)时加上编译产测驱动的选项,即 make MODEL=XXX SPEC=XXX kernel_build modules_build WLTEST=1,也可编译产测驱动,编译后的产测驱动位于\bcmdrivers\broadcom\net\wl\impl87\main\build\dongle\6715b0-ram\config_pcie_fdap_下,名称一般为rtecdc.bin,编译后需要将rtecdc.bin手动替换掉机型目录(mfg\)下的原产物,再执行一次fs_build image_build,此时软件运行使用的就是产测驱动。 在串口输入 wl ver 可见带有WLTEST的字样即为产测驱动。 产测驱动主要是用来做产测校准和debug的,部分功能和细节上没有正式驱动完善,所以发布的软件和问题的跟踪均以正式驱动为准。校准时驱动会根据校准标志位(tp_wltest)判断是否进产测模式,然后产测校准软件会拉起一个产测脚本bcm_rftest.sh(编译前的位置在机型目录下,在样机中的位置一般为/etc/bcm_rftest.sh),卸载正常驱动,加载产测驱动,以EB200v-Pro为例,其中wl.ko是NIC架构所必需的,dhd.ko为dongle架构必需,负责主CPU与无线芯片CPU通信模块:
12-04
本设计项目聚焦于一款面向城市环保领域的移动应用开发,该应用以微信小程序为载体,结合SpringBoot后端框架与MySQL数据库系统构建。项目成果涵盖完整源代码、数据库结构文档、开题报告、毕业论文及功能演示视频。在信息化进程加速的背景下,传统数据管理模式逐步向数字化、系统化方向演进。本应用旨在通过技术手段提升垃圾分类管理工作的效率,实现对海量环保数据的快速处理与整合,从而优化管理流程,增强事务执行效能。 技术上,前端界面采用VUE框架配合layui样式库进行构建,小程序端基于uni-app框架实现跨平台兼容;后端服务选用Java语言下的SpringBoot框架搭建,数据存储则依托关系型数据库MySQL。系统为管理员提供了包括用户管理、内容分类(如环保视频、知识、新闻、垃圾信息等)、论坛维护、试题与测试管理、轮播图配置等在内的综合管理功能。普通用户可通过微信小程序完成注册登录,浏览各类环保资讯、查询垃圾归类信息,并参与在线知识问答活动。 在设计与实现层面,该应用注重界面简洁性与操作逻辑的一致性,在满足基础功能需求的同时,也考虑了数据安全性与系统稳定性的解决方案。通过模块化设计与规范化数据处理,系统不仅提升了管理工作的整体效率,也推动了信息管理的结构化与自动化水平。整体而言,本项目体现了现代软件开发技术在环保领域的实际应用,为垃圾分类的推广与管理提供了可行的技术支撑。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值