新闻详情

新闻详情

首页 / 资讯中心 / 详情

展讯SPRD AT指令实战:从SIM卡查询到产测自动化

发布时间:2026/9/25 4:17:12来源:尧图网络
展讯SPRD AT指令实战:从SIM卡查询到产测自动化
上个月帮客户定位一台展讯8910模组的异常现象是设备已经正常入网却始终拿不到SIM卡的ICCID。板子已经贴片返回没法拿示波器去戳卡槽只能靠AT指令一层层往下查。查到最后发现问题并不在硬件而是我把SPRD扩展的那条私有指令返回格式理解错了。展讯SPRD AT指令看着跟3GPP标准里的AT命令长得一模一样但很多细节是展锐自己定制的照搬高通平台那套调试手法大概率会被坑。这篇文章就把展讯平台从基础查询到高级配置的AT指令完整整理一遍既有标准27.007里的通用项也有展锐私有扩展还包含串口脚本自动化跑产测的思路。适合刚接展讯、展锐方案的朋友也适合老工程师快速检索。文中涉及的指令以我实际接触过的8910、UMS9620、UMS9110等展锐平台为参考具体到某个型号最终还是要以模块厂商release note为准。1. 展讯SPRD AT指令的基础框架与使用入口1.1 一条AT指令的完整组成细节全在结束符里AT指令在展讯平台上的基本结构跟其他平台没有本质区别AT前缀加指令名加参数最后加结束符。正常应答是回车换行包裹的内容紧跟OK或ERROR。比如查询模块型号ATCGMM CGMM: UMS9110 OK这里有个坑展讯不同基线的串口驱动对结束符处理不一致。大部分模块接受\r\n但也有部分模组出厂默认只认\r你发\r\n它会回一个空行然后才应答脚本解析就乱了。我踩过一次在某个4G模组上发送AT\r\n一直没反应改成AT\r秒回。所以写自动化脚本时结束符最好做成可配置参数先手动确认再批量执行。指令的四种形式也要养成肌肉记忆ATCMD无参数执行命令很多指令不带参数时等效于查询。ATCMD?查询支持的范围展讯的扩展指令常在这里返回厂商自定义格式。ATCMD?查询当前配置值。ATCMDvalue设置参数。刚拿到一块展讯模组我建议第一件事就是发ATCGMM?这类测试命令看模块支持哪些能力而不是直接按文档里的指令往模块里灌。文档是理想实际固件才是现实。1.2 找到正确的AT口多COM口下别发错地方展讯USB模组插上电脑后Windows下经常枚举出好几个COM口名称可能是SPRD AT、USB MODEM、Diag口、NEMA口之类的组合。AT指令通常只走标着AT或者Modem的那个口但是有些模组的Diag口也会回显一部分AT日志这时候容易搞混。我自己的判断方法很简单每个COM口都发一条无参数AT能回OK的就是真正的AT口。注意有的口发AT会回一堆十六进制数据或者乱码那是诊断口不是AT口别在这上面浪费时间。Linux下展锐模组通常枚举为/dev/ttyUSB0到/dev/ttyUSB2或者/dev/ttyACM0。先查看dmesg尾部日志确认USB VID/PID是否正确加载了cdc_acm、option驱动再逐个端口测试。物理UART的情况则复杂一些展锐芯片可能引出UART1和UART2默认AT口映射到UART1但有些开发板把调试log和AT口弄到同一条物理串口上上电时全是log刷屏这时AT响应会被淹没。解决办法是把调试串口和AT串口分开配置或者在驱动里关掉内核log输出。1.3 先用CMEE把详细错误码打开不然排查效率低一半展讯平台很多模组出厂默认ATCMEE0意味着所有错误只回一个冷冰冰的ERROR。这让人完全没法判断到底是SIM卡没插好、指令不支持还是密码错误。建议上电后第一件事就执行ATCMEE2设置成功后会返回OK之后的错误响应会变成CME ERROR: code带数字错误码。常见的展讯错误码含义如下错误码意义常见场景0电话故障模块内部异常复位后再试3操作不被允许当前状态不允许例如SIM未READY就激活PDP4操作不支持固件未实现该指令或该参数无效10SIM卡未插入卡没插好或者卡电源未起来11SIM需要PIN码开了PIN码但没输入12SIM需要PUK码PIN错太多次被锁13SIM卡故障卡损坏或卡座接触不良16密码错误PIN/PUK输入错误20存储已满短信或电话本空间耗尽展讯扩展指令的错误码可能到5xx段这些就需要查具体基线的文档了。在脚本里错误码解析可以单独做一个映射表方便产测日志快速定位。2. 基础查询指令设备型号、SIM卡和驻网状态2.1 固件版本、IMEI和芯片信息一次查清楚做售后或者产线定位时最先要确认的就是当前模块跑的是什么固件。展讯平台的ATI返回内容比较多通常包含厂商名、SIMCom或移远等模组厂商的型号标识、芯片代号以及固件编译时间。更标准化的几个查询命令ATCGMM // 查询型号返回字符串 ATCGMR // 查询固件版本 ATCGSN // 查询IMEI号在某些展讯基线里ATCGSN只返回纯IMEI数字串没有CGSN:前缀而在另一些基线里前缀又会回来。写脚本时别用“是否有前缀”做判断应该用正则匹配15位或16位数字稳妥得多。还有一条容易被忽略的是查询芯片唯一ID或者MAC地址展讯平台一般用私有扩展指令。曾有客户测试时把两个模块的IMEI刷成一样的结果无法区分设备最后靠芯片UID才把数据理清楚。2.2 SIM卡链路排查CPIN、CIMI和ICCID的读取顺序排查SIM卡问题我习惯按“电气连接 - PIN状态 - 卡识别 - 数据读取”这个顺序来。先用ATCPIN?看SIM是否就绪返回CPIN: READY表示卡OK如果返回CPIN: SIM PIN或CPIN: SIM PUK那就是卡自己开了密码锁。有些展讯模组还支持ATCPIN1234输入PIN码但每次重启后要重新输入不能跨重启保存。接着用ATCIMI读IMSI这个值对于区分运营商、判断卡归属非常重要。IMSI的MCCMNC部分能直接看出是哪家运营商的卡比如46000是中国移动46001是中国联通46011是中国电信。读ICCID就比较有意思了。展锐平台常见的私有扩展有两种写法一个是ATSPICCID另一个是ATCCID不同基线支持的指令名不一样。在部分固件里ATSPICCID返回的是ATSPICCID SPICCID: 8986061681186012345 OK但在另一版固件里它可能只返回一段裸数字连前缀都没有。产线脚本解析时最好统一用正则提取连续10位以上数字不要依赖指令名和前缀。如果ATCPIN?一直返回CME ERROR: 10但是卡明明插好了先别急着换硬件。展讯平台的开卡时序比较敏感尤其热插拔的卡座上电瞬间GPIO中断没抓到卡检测状态可能就没更新。关掉飞行模式或者重新开一下SIM电源往往能恢复。2.3 信号强度与网络注册状态怎么读ATCSQ返回的是接收信号强度指示和信道误码率格式是CSQ: rssi, ber。rssi范围0到31数值越大信号越好99表示未知或不可检测。但要注意这里返回的是“接收电平等级”不是实际的dBm值。换算经验公式是dBm -113 rssi * 2例如rssi19对应大约-75dBm整体算中等偏上的信号。网络注册状态用ATCREG?查询2G/3G网络LTE则用ATCEREG?5G平台还有ATC5GREG?。返回格式是CREG: n, stat其中stat值0未注册正在搜索1已注册归属网络2未注册正在搜索但被拒绝3注册被拒绝4未知5已注册漫游网络在展讯双卡双待平台上两个卡槽各自上报的注册状态可能通过不同的指令或者带索引参数来区分。我之前遇到过只发ATCREG?永远只回卡1的状态卡2得配合ATCGDCONT?才能判断有没有实际附着。遇到这种多卡项目一定要先看双卡初始化时用的AT索引方式。2.4 运营商标识和时间的坑ATCOPS?能查当前运营商返回里有MCC/MNC和接入技术。比如COPS: 0,0,CHINA MOBILE,7尾部的7代表LTE接入。做网络测试时这个返回值比信号强度更有参考价值因为它能确认模块到底注册在哪种制式下面。时间同步方面展讯模组通常会在注册网络成功后主动上报NITZ时间也就是运营商下发的基站时间。ATCCLK?可以查询当前RTC时间。常见的坑是模块如果没装RTC电池或者32K晶振没起振每次冷启动时间都会重置到固件默认值。这种情况下即便脚本里用ATCCLK设置了时间断电后依然丢失不要指望这个功能扛掉电保存。3. 网络附着与数据通道配置指令3.1 APN和PDP上下文怎么填才不会被拒配置数据业务核心就是配置PDP上下文。展讯平台通用的设置方式是ATCGDCONT1,IP,cmnet第一个参数是context ID第二个是PDN类型第三个是APN。国内三大运营商常用APN如下中国移动cmnetcmwap后者用于WAP网关中国联通wonet3gnetuniwap中国电信ctnetctwap除了APN有些省份和MVNO虚拟运营商可能需要单独配用户名密码或者使用IPv4/IPv6双栈。展讯较新的平台支持IPV4V6类型ATCGDCONT1,IPV4V6,cmnet设置完成后用ATCGDCONT?确认是否生效返回的PDP地址字段如果已经有IP分配说明网络侧分配成功了。如果返回的地址全是0说明上下文还没拿到地址需要继续做激活不要急着ping外网。实际项目中还有一类问题APN配错了但模块还是会显示注册成功只是数据流量走不通。比如移动卡配成电信的ctnetRRC层可能正常但GGSN/PGW侧会拒绝PDP激活请求表现为CME ERROR: 3或者ERROR。所以排查数据业务时先确认APN用的是运营商官方配置再往上排查。3.2 数据业务的激活顺序和Ping测试设置好PDP上下文后通常需要手动附着并激活ATCGATT1 // 网络附着 ATCGACT1,1 // 激活context 1有些展讯固件只要执行CGATT1就会自动激活默认context但最好一步步来便于定位哪一步失败。激活之后用ATCGPADDR1获取IP地址。Ping测试展讯平台一般支持但指令名称有差异。有些基线用ATCGPING1,223.5.5.5有些则用ATPING。这里我给个建议别在脚本里写死Ping命令格式先用手动串口工具测试再在代码里适配。之前一个项目里模组厂商在固件里把Ping结果格式改成了CGPING: 1,4,32,56,100之类的自定义格式原有脚本按老格式解析直接挂掉。如果Ping不通先ping网关地址确认上行正常再ping公网地址区分是路由问题还是DNS问题。很多展讯模组默认没配DNS需要手动设置ATCGDCONT1,IP,cmnet,,0,0这种操作要看具体基线有的平台用ATDNS1或类似指令启用域名解析。3.3 CFUN的四种状态功耗测试和断网恢复都靠它ATCFUN在展讯平台里是高频命令作用是控制模块功能等级ATCFUN0射频关闭模块基本是休眠或待机态。ATCFUN1全功能射频和协议栈都开启。ATCFUN4飞行模式射频关闭但协议栈仍在AT命令还可用。很多从高通平台转过来的工程师习惯用CFUN0做飞行模式但在展讯平台上CFUN0的含义更接近“最小功能”可能连SIM卡都不读。项目里有一个功耗测试步骤需要模块保持AT响应但射频关闭正确做法是ATCFUN4不是0。需要注意的是切换CFUN会让模块重新注册网络测试过程如果对驻网时间敏感要预留10到20秒的等待窗口。展讯部分基线还支持ATCFUN1,1实现软复位但这不是通用行为。模块死机时如果无法用AT恢复还是老老实实拉RESET引脚。4. 高级配置展讯工程模式、射频、音频与功耗调试4.1 工程模式入口与风险提示展讯平台真正高级的配置项大部分不在标准AT指令集里而在工程模式Factory Mode下才开放的扩展指令中。普通商用固件里这些扩展指令要么被编译掉要么统一返回CME ERROR: 4。进入工程模式的方式在不同模组厂商之间差别很大有的用厂商私有串口工具有的在固件开发版里直接开放有的需要特殊解锁指令。这里不便一概而论但有一点必须强调工程模式下的指令很多会直接读写NV内存操作不当会让模块变砖或者射频参数损坏。进去之前一定要先把原始NV全部备份记录好改动前和改动后的参数对照表。射频校准这件事展讯平台通常不走AT口直接校准而是用展锐官方校准工具通过诊断口配合综测仪完成。AT层暴露出来的更多是读取射频状态参数或者手动打开某个频段的射频通道用于产线上的简单验证。比如某些工程固件支持ATRFTEST系列命令来进入射频测试模式设置信道、频段和功率等级。这类命令对终端用户固件是不开放的别指望量产固件里能跑。4.2 射频状态查询和产测辅助在生产测试场景下AT指令组合可以做以下事情通过ATCGSN读取IMEI和写号记录比对。通过ATCSQ读取信号等级判断天线是否焊接良好。通过ATCOPS?读取注册网络确认整机入网能力。通过ATCGPIN或ATSPICCID读取卡数据验证SIM卡读写通路。这些测试点虽然基础但足够排查90%以上的主板级问题。真到了需要调谐匹配或者功率校准的阶段AT指令只是辅助最终还是要看综测仪上的TX Power、RX Sensitivity数值。我曾经见过一个项目产线上某批板子AT能注册、CSQ也很好但是打电话时音频断断续续最后排查发现是听筒的PA供电没起来这就是AT指令覆盖不到的硬件盲区。4.3 音频调试和功耗测试的AT手段音频方面标准指令里面音量控制是ATCLVL静音控制是ATCMUT查询语音服务状态是ATCHUP或者ATCEER。展讯工程固件里通常还有一些专门的音频增益调节扩展比如设置听筒、麦克风、免提各路增益但不同厂商指令名差异很大我没法在这里给一个统一的清单。原则就是先查ATCLVL?看支持的范围别贸然设超过上限的值否则喇叭可能出现削顶失真。功耗测试场景下展讯比较常用的扩展指令是ATPMETEST进入功耗测试模式可以配合精密电源测量模块在不同状态下的电流。过程通常是先把模块切到飞行模式ATCFUN4。关闭不需要的外设比如GPS、蓝牙、WiFi。执行扩展功耗测试命令观察待机电流曲线。结束后一定要发退出命令或者复位模块否则模块可能一直停留在测试模式里。很多人在这一步踩坑进入功耗测试模式后直接断开电源再上电发现模块无法正常启动需要重新烧录固件。原因就是测试模式在NV里写了异常状态标志没有正常退出造成的。这个事情上务必记得“进去容易出来难”。4.4 NV和EFS操作能不动就不动展讯平台的NV项Non-Volatile items存放在EFS分区中很多高级配置会通过厂商私有工具直接操作而不是AT指令。AT层能看到的NV操作命令很少而且对终端用户来说基本都是禁用的。我个人的建议是除非你是在开发固件或者做底层调试否则不要尝试用AT指令去改NV。展讯平台的NV配置一旦损坏轻则射频参数丢失导致搜不到网重则开机直接进crash dump。之前有个项目客户误信网上流传的“提高功率”AT指令把某个NV值改了结果一连片板子的接收灵敏度全部恶化最后只能返工重新校准。5. SIM应用访问通过AT发APDU和读ICCID的高级姿势5.1 ATCSIM直接向SIM卡下发APDU如果你要读取SIM卡里的特殊文件或者跟电信卡、银行U盾卡做交互那就需要绕过模块本身直接向SIM卡发送APDU命令。展讯平台的标准做法是用ATCSIM。ATCSIM的格式是ATCSIM长度,APDU hex数据其中长度是APDU数据本身的字节数。例如要选择SIM卡根目录下的ICCID文件EF_ICCID文件ID是2FE2APDU是00 A4 00 00 02 2F E2一共7个字节所以命令是ATCSIM7,00A40000022FE2正常情况下返回类似CSIM: 10,...9000其中9000是成功的SW状态码。然后再用READ BINARY命令读取文件内容ATCSIM5,00B000000A这里的0A是要读10个字节正好对应20位数字ICCID的BCD编码。返回数据是16进制字符串前面部分是ICCID内容结尾是SW。这里有个关键经验SIM卡文件里存的ICCID是交换位的BCD不是按ASCII顺序排列的。比如实际ICCID开头是8986文件里可能是98 68这种颠倒形式。写解析程序时要按BCD nibble交换规则还原才能得到真正的20位ICCID否则产线扫码会得到一堆混乱数字。5.2 逻辑通道和ATCRSM的使用场景在支持UICC/SIM Toolkit的卡上直接使用ATCSIM下APDU可能会冲突这时需要先用ATCCHO打开逻辑通道而且多个应用同时访问卡时逻辑通道特别有用。ATCCHO执行后返回对应的信道号之后在APDU里使用该信道号就能访问对应的SIM应用。用完记得用ATCCHC关闭信道否则通道一直占着SIM Toolkit消息可能无法正常下发。ATCRSM是另一个好用的标准命令它可以直接读取SIM卡里的EF文件不用自己拼完整APDU。例如ATCRSM176,28470,0,0,10这种方式的参数含义分别是“命令类型、文件ID、P1、P2、长度”具体文件ID需要对着SIM卡规范查。跟ATCSIM相比CRSM更简单安全但灵活度差一些遇到需要SELECT不同DF路径的场景还是CSIM更直接。5.3 展讯SIM卡检测与热插拔指令展讯平台在SIM卡检测上一般有扩展指令常见的是ATSIMDET或ATSIMST。有的固件支持通过AT指令启用/关闭热插拔检测ATSIMDET1启用后插卡或拔卡时会主动上报URC例如SIMDET: 1或者类似格式。不同固件上报的事件内容不完全一致有的用0代表拔卡1代表插卡有的反过来。这里要提醒一下热插拔上报依赖模组硬件的GPIO中断AT指令本身只是开关和状态查询。如果模组的SIM_DET引脚没有接到卡座检测脚上怎么配置都没用。还有展讯平台的热插拔方案在解决SIM卡电平抖动方面有自己的一套机制有些平台要求卡检测引脚接上拉或下拉电阻画板的时候没注意这些问题后面插拔卡会随机出现“检测不到”“反复注册”的幺蛾子。6. 实战排障展讯AT口无响应、报错与指令版本问题6.1 AT无响应先查这三个地方遇到AT无响应我的排查固定顺序是物理连接和串口驱动。排查AT是否有回包的先决条件是硬件通信正常。USB模组先确认设备管理器里有没有识别到COM口Linux下确认dmesg有没有枚举成功。用示波器点一下TX/RX引脚确认模块有没有真的在发数据。波特率和结束符。展讯平台默认波特率几乎没有统一标准有115200、9600、460800多种。如果连上后回乱码或一条命令发出去毫无反应挨个波特率试一遍同时把结束符从\r\n换成\r再试。端口是否被占用。调试的时候经常同时开着好几个串口助手占用了同一个COM口结果AT测试工具里怎么发都没反应。有一次客户说模块完全无响应远程查了一圈最后发现是串口线中间有一段接触不良TX通、RX不通AT命令能发出去但模块的响应回不来。这种硬件问题别指望软件能绕过去换个线立刻恢复正常。6.2 ERROR和CME ERROR的快速定位思路先分清错误类型。裸ERROR是通用失败CME ERROR: 3这类数字错误码才有具体的语义。展讯平台的CME ERROR: 3特别常见通常表示“当前状态不允许执行这个操作”。比如SIM卡的PIN码没通过验证就去激活PDP模块就会回3。CME ERROR: 4则表示命令本身不被固件支持。这个情况在展讯平台上出现频率不算低因为很多模块厂商会根据客户需求裁剪功能同一颗芯片这个固件支持ATCGPING另一个固件就不支持。遇到4不要去硬试看release note对比固件版本。CME ERROR: 16是密码错误常见于PIN码或PUK码输错。如果连续输错多次SIM卡会被锁死只能找运营商要PUK码。还有一个容易忽略的CMS ERROR这是短信相关的错误码格式和CME ERROR不同。发短信失败时先看CMS ERROR后再去查协议错误定级。比如CMS ERROR: 302通常表示短信中心地址没配对。6.3 URC异步上报会搅乱脚本解析展讯平台在开机、搜网、注册、短信到达时都会上报主动消息也就是URC。比如注册状态变化时可能上报CREG: 1SIM卡热插拔时上报SIMDET: 0还有NITZ时间同步和信号强度周期上报。这些URC不会等AT命令执行完随时可能插入串口。脚本解析最容易犯的错是发送ATCSQ后把串口读到的第一行当作CSQ的响应。如果刚好赶上一条网络注册URC插队第一行可能是CREG: 1解析就崩了。正确做法是循环读取串口数据直到出现OK或ERROR为止再在缓冲区内搜索关键响应。批量测试时还要防止上一次命令的URC残留到下一个命令。一个简单的策略是发新命令前先把串口接收缓冲区的老数据全部清空。这个方法简单粗暴但在产测场景下非常有效。6.4 同一指令在不同固件里的表现差异很大展讯这个平台指令版本差异踩起来是真的酸爽。同一个ATSPICCID在A版本固件返回带前缀的SPICCID: xxx在B版本固件可能只返回数字还可能在前面多一行“wrong cmd”日志。遇到这种情况文档只是参考实测为准。还有大小写问题。标准AT指令本身不区分大小写但展锐部分私有扩展指令对大小写敏感写成atspiccid可能直接回ERROR。我在自动脚本里都会给私有扩展指令保留固定写法不强制转小写避免有些固件对转换大小写后的指令不认账。另外有些展讯模组会根据SIM卡状态动态启用指令。比如没有插卡的时候ATSPICCID返回ERROR插卡后立即执行也可能因为卡数据还没读完而返回ERROR。代码里遇到这种情况加一个重试机制隔200毫秒到500毫秒再读一次成功率会高很多。7. 把AT指令用脚本自动化Python串口实操7.1 最小可用的AT指令交互代码日常调试时我习惯写一个简洁的Python函数发送AT命令并接收响应核心逻辑就三件事清空缓冲区、发送指令、读取直到出现OK或ERROR。import serial import time def send_at(port, cmd, baudrate115200, end\r\n, timeout5): with serial.Serial(port, baudrate, timeouttimeout) as ser: ser.reset_input_buffer() ser.write((cmd end).encode()) time.sleep(0.3) resp ser.read(ser.in_waiting or 1024).decode(errorsignore) return resp print(send_at(COM5, ATI)) print(send_at(COM5, ATCSQ))注意end参数单独提出来就是为了应对前面提到的\r和\r\n差异。有些模块在设置完ATCMEE2后后面所有命令的响应都会变长脚本里超时时间可以适当放宽。7.2 批量读取IMEI和ICCID并结构化解析产线上最常见的需求是把IMEI和ICCID读出来然后写进数据库或者打印标签。用Python实现时先发送ATCGSN用正则提取15位数字再根据实测结果选择ATSPICCID或ATCCID用正则提取20位数字。import re def extract_imei(port): resp send_at(port, ATCGSN) m re.search(r\d{15}, resp) return m.group(0) if m else None def extract_iccid(port): for cmd in (ATSPICCID, ATCCID): resp send_at(port, cmd) if ERROR in resp: continue m re.search(r\d{19,20}, resp) if m: return m.group(0) return None这段代码看似简单但已经在多个项目里证明足够用了。遇到ICCID返回带字母的卡比如虚拟卡再单独处理普通手机卡和物联网卡基本都是20位数字。7.3 多模组并行测试注意串口隔离产测线如果要同时测多条模组通常是一台工控机接多路USB转串口或者用USB HUB扩展多个模组。Python里可以用concurrent.futures.ThreadPoolExecutor给每个COM口开一个线程并行跑但要注意每路串口必须独立打开不能共享同一个serial实例。并行测试时还有一个细节各模组的URC上报时间点不可控如果读串口时同时有大量日志刷入可能把命令响应挤到缓冲区后面。所以测试脚本里除了清空缓冲、等OK/ERROR还要对读取结果做二次校验比如IMEI位数不对就重读。稳一点的流程是每条核心指令最多重试3次还不过就标记FAIL别让单个卡死的模组拖停整条线。8. 版本差异带来的坑release note永远不够用文章写到后面我想专门聊一个经常被忽略的点展讯平台的AT指令“标准”是分层级的3GPP标准一层、展锐基带SDK一层、模组厂商封装一层。你拿到的release note再多都不如直接拿当前固件实测一遍。我做过一个项目客户提供了所谓“最新版”AT指令手册里面有ATSPICCID的完整说明。结果实际固件里这个指令被改名了多了一个下划线。最后是靠向原厂FAE要内部基线资料才发现文档滞后了三个版本。这种事情在展讯生态里并不罕见因为模组厂商会根据自己的客户定制指令集同一个芯片平台A模组厂商和B模组厂商的扩展AT命令表可能差了十万八千里。所以我现在拿到新的展讯模组第一件事不是翻手册而是把这个模组上电后所有能用的?测试命令全部测一遍。先发ATCGMM?、ATCSQ?这类标准命令再逐个试私有扩展把每个指令的实际返回格式记录下来形成一张固件能力表。后续所有脚本都基于这张表开发而不是基于文档。还有一个心得也要分享不管指令手册怎么标凡是涉及NV写入、工程模式切换、射频通道开关的指令在批量导入前一定要先拿两台设备做AB测试。一台按标准流程操作一台改动某项参数后跑完整测试项对比结果没差异再放开到产线。展讯的NV参数之间经常有连带关系你改的指令本身可能没问题但它影响的寄存器可能跟另一个功能共享这种联动问题是最难排查的只有靠严密的变更记录去控制风险。这套“实测优先、兼容层兜底”的思路后来帮我省了很多事。反正做展讯平台的AT开发心态上就得有准备今天能用明天可能就废所有解析逻辑尽量做到对指令名和返回格式都宽容才能在各种固件版本之间活下来。就先写到这有遇到展讯私有AT指令不同基线表现不一致的朋友可以把具体指令和现象发出来一起对一下。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Flink + Hologres 云原生实时数仓:从能跑到敢上生产的调优与避坑指南 2026/9/25 4:57:41

Flink + Hologres 云原生实时数仓:从能跑到敢上生产的调优与避坑指南

简介:这份PDF文档面向数据架构师、实时计算开发者和数据平台负责人,聚焦云原生环境下实时数仓的构建与优化,帮助解决传统数仓延迟高、Lambda架构复杂、资源消耗大等痛点。内容围绕Flink与Hologres组合展开,涵盖HTAP与HSAP技术理念…

阅读更多 →
shuohao-skills 完全指南:5 个 AI 短剧制作 Skill,把一本小说直接变成角色设定、剧本与分镜投产包 2026/9/25 4:57:41

shuohao-skills 完全指南:5 个 AI 短剧制作 Skill,把一本小说直接变成角色设定、剧本与分镜投产包

shuohao-skills 完全指南:5 个 AI 短剧制作 Skill,把一本小说直接变成角色设定、剧本与分镜投产包 【免费下载链接】shuohao-skills AI 短剧制作的 skill 集合:拆角色、排大纲、出场景与道具设定、写剧本、切分镜 | Agent skills for AI shor…

阅读更多 →
企业 AI Agent Harness Engineering 安全合规白皮书:等保三级要求下的数据隐私保护方案与 TaoToken 统一 Key 通道配置 2026/9/25 4:57:40

企业 AI Agent Harness Engineering 安全合规白皮书:等保三级要求下的数据隐私保护方案与 TaoToken 统一 Key 通道配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
Metasploitable2 靶机安装教程:VMware 网络配置与 Kali 连通性验证 2026/9/25 4:57:34

Metasploitable2 靶机安装教程:VMware 网络配置与 Kali 连通性验证

1. 为什么我至今还在用 Metasploitable2 做入门靶机搞安全入门的朋友大概率都经历过这个阶段:装完 Kali Linux,打开终端,面对一堆工具却不知道从哪下手。工具会敲命令,但不知道打谁、怎么打、打完看什么。这时候你需要的不是更多工…

阅读更多 →
SnowEyes:浏览器端实时敏感信息检测原理与实战 2026/9/25 4:57:34

SnowEyes:浏览器端实时敏感信息检测原理与实战

1. 雪瞳不是“爬虫”,而是浏览器端的敏感信息显微镜你打开一个网页,点开开发者工具,CtrlF 搜password、token、api_key、secret——这种操作我做过不下两百次。但每次都要手动翻 Network 面板、Sources 标签页、Console 输出、甚至 localStor…

阅读更多 →
华为MDE岗位:模型驱动工程在通信研发中的落地实践 2026/9/25 4:57:28

华为MDE岗位:模型驱动工程在通信研发中的落地实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉