当前位置: 首页 > news >正文

【笔记】Android U RILJ 中与运营商名称SPN显示相关的日志分析

源码阅读:AOSPXRef

常用日志关键字

Note:">"下发MD,"<"MD上报,[]中的id有请求和返回的对应关系

KEYComment
> OPERATOR下发MD,请求运营商信息
< OPERATORMD上报运营商注册信息
> DATA_REGISTRATION_STATE下发MD请求驻网状态信息
< DATA_REGISTRATION_STATEMD上报驻网状态
Poll ServiceState doneSST 更新网络状态完成
updateSpnDisplayCdnr网络状态变化触发SPN更新

实网Log分析

// radio关闭时不会更新SPN

03-27 14:23:59.808824  2120  2120 D MTKSST  : [GsmSST1] updateSpnDisplay: radio is off w/ showPlmn=true plmn=null

03-27 14:23:59.808919  2120  2120 D MTKSST  : [GsmSST1] updateSpnDisplay: rawSpn = 

// 还没获取到运营商信息。(请求运营商信息的过程很快,耗时短,都不需要半秒的)

03-27 14:23:29.955064  2120  2120 D RILJ    : [1938]> OPERATOR [PHONE0]

03-27 14:23:29.967462  2120  2455 D RILJ    : [1938]< OPERATOR {, , } [PHONE0]

// 还没驻网成功,搜网或处于飞行模式

03-27 14:23:59.737880  2120  2585 D RILJ    : [1984]> DATA_REGISTRATION_STATE [PHONE0]
03-27 14:23:59.747966  2120  2455 D RILJ    : [1984]< DATA_REGISTRATION_STATE {.regState = NOT_REG_MT_SEARCHING_OP, .rat = UNKNOWN, .reasonForDenial = NONE, .cellIdentity = {.noinit = {}}, .registeredPlmn = , .accessTechnologySpecificInfo = {.noinit = {}}} [PHONE0]

// 驻网在本地LTE网络,从mccmnc和registeredPlmn可以确认。

疑问:根据什么确认显示alphaLong还是alphaShort?

03-27 14:23:59.969940  2120  2585 D RILJ    : [1988]> DATA_REGISTRATION_STATE [PHONE0]

03-27 14:24:00.049672  2120  2455 D RILJ    : [1988]< DATA_REGISTRATION_STATE {.regState = REG_HOME, .rat = LTE, .reasonForDenial = NONE, .cellIdentity = {.lte = {.base = {.base = {.mcc = 722, .mnc = 07, .ci = 256, .pci = 0, .tac = 1, .earfcn = 2525}, .operatorNames = {.alphaLong = AR - Movistar, .alphaShort = Movistar}, .bandwidth = 10000}, .additionalPlmns = [], .optionalCsgInfo = {.noinit = {}}, .bands = [5]}}, .registeredPlmn = 72207, .accessTechnologySpecificInfo = {.eutranInfo = {.lteVopsInfo = {.isVopsSupported = true, .isEmcBearerSupported = true}, .nrIndicators = {.isEndcAvailable = false, .isDcNrRestricted = false, .isNrAvailable = false}}}} [PHONE0]

03-27 14:23:59.960990  2120  2120 D RILJ    : [1986]> OPERATOR [PHONE0]

// 通知应用程序网络状态发生变化

03-27 14:23:59.986333  2120  2455 D RILJ    : Unsol response received; Sending ack to ril.cpp [PHONE0]
03-27 14:23:59.986511  2120  2455 D RILJ    : [UNSL]< UNSOL_RESPONSE_NETWORK_STATE_CHANGED [PHONE0]

// 驻网信息,由Modem根据当时注册网络的信息上报的,和Telephony的SST信息一致。

03-27 14:23:59.987577  2120  2455 D RILJ    : [1986]< OPERATOR {AR - Movistar, Movistar, 72207} [PHONE0]

// CS在无线局域网,注册在HOME LTE(在CS域中,语音和短信数据通过电路交换方式传输),可用服务:[VOICE, SMS, VIDEO]

03-27 14:24:00.057818  2120  2585 D NRM-C-0 : onRequestNetworkRegistrationInfoComplete result: 0, info: NetworkRegistrationInfo{ domain=CS transportType=WWAN registrationState=HOME networkRegistrationState=HOME roamingType=NOT_ROAMING accessNetworkTechnology=LTE rejectCause=0 emergencyEnabled=false availableServices=[VOICE,SMS,VIDEO] cellIdentity=CellIdentityLte:{ mCi=256 mPci=0 mTac=1 mEarfcn=2525 mBands=[5] mBandwidth=10000 mMcc=722 mMnc=07 mAlphaLong=AR - Movistar mAlphaShort=Movistar mAdditionalPlmns={} mCsgInfo=null} voiceSpecificInfo=VoiceSpecificRegistrationInfo { mCssSupported=false mRoamingIndicator=0 mSystemIsInPrl=0 mDefaultRoamingIndicator=0} dataSpecificInfo=null nrState=**** rRplmn=72207 isUsingCarrierAggregation=false}

// PS状态变化,从搜网到注册完成,驻网在HOME LTE,具备DATA能力,

03-27 14:24:00.074533  2120  2601 D NRM-I-0 : onRequestNetworkRegistrationInfoComplete result: 0, info: NetworkRegistrationInfo{ domain=PS transportType=WLAN registrationState=NOT_REG_OR_SEARCHING networkRegistrationState=NOT_REG_OR_SEARCHING roamingType=NOT_ROAMING accessNetworkTechnology=UNKNOWN rejectCause=0 emergencyEnabled=false availableServices=[] cellIdentity=null voiceSpecificInfo=null dataSpecificInfo=android.telephony.DataSpecificRegistrationInfo :{ maxDataCalls = 0 isDcNrRestricted = false isNrAvailable = false isEnDcAvailable = false mLteAttachResultType = 0 mLteAttachExtraInfo = 0 LteVopsSupportInfo :  mVopsSupport = 1 mEmcBearerSupport = 1 } nrState=**** rRplmn=null isUsingCarrierAggregation=false}

03-27 14:24:00.103294  2120  2585 D NRM-C-0 : onRequestNetworkRegistrationInfoComplete result: 0, info: NetworkRegistrationInfo{ domain=PS transportType=WWAN registrationState=HOME networkRegistrationState=HOME roamingType=NOT_ROAMING accessNetworkTechnology=LTE rejectCause=0 emergencyEnabled=false availableServices=[DATA] cellIdentity=CellIdentityLte:{ mCi=256 mPci=0 mTac=1 mEarfcn=2525 mBands=[5] mBandwidth=10000 mMcc=722 mMnc=07 mAlphaLong=AR - Movistar mAlphaShort=Movistar mAdditionalPlmns={} mCsgInfo=null} voiceSpecificInfo=null dataSpecificInfo=android.telephony.DataSpecificRegistrationInfo :{ maxDataCalls = 16 isDcNrRestricted = false isNrAvailable = false isEnDcAvailable = false mLteAttachResultType = 0 mLteAttachExtraInfo = 0 LteVopsSupportInfo :  mVopsSupport = 2 mEmcBearerSupport = 2 } nrState=**** rRplmn=72207 isUsingCarrierAggregation=false}

// TS.25是MD配,但是来源TS.25的SPN显示优先级很低

03-27 14:24:00.208931  2120  2120 D MtkRILJ : lookupOperatorNameMVNO plmn name update to TS.25/MVNO: AR - Movistar

// ServiceState 更新网络状态完成,切换到LTE,alphatag更新到AR - Movistar

03-27 14:24:00.223138  2120  2120 D MTKSST  : [GsmSST0] Poll ServiceState done: newSS={mVoiceRegState=0(IN_SERVICE), mDataRegState=0(IN_SERVICE), mChannelNumber=2525, duplexMode()=1, mCellBandwidths=[10000], mOperatorAlphaLong=AR - Movistar, mOperatorAlphaShort=AR - Movistar, isManualNetworkSelection=false(automatic), getRilVoiceRadioTechnology=14(LTE), getRilDataRadioTechnology=14(LTE), mCssIndicator=unsupported, mNetworkId=-1, mSystemId=-1, mCdmaRoamingIndicator=-1, mCdmaDefaultRoamingIndicator=-1, mIsEmergencyOnly=false, isUsingCarrierAggregation=false, mArfcnRsrpBoost=0, mNetworkRegistrationInfos=[NetworkRegistrationInfo{ domain=PS transportType=WLAN registrationState=NOT_REG_OR_SEARCHING networkRegistrationState=NOT_REG_OR_SEARCHING roamingType=NOT_ROAMING accessNetworkTechnology=UNKNOWN rejectCause=0 emergencyEnabled=false availableServices=[] cellIdentity=null voiceSpecificInfo=null dataSpecificInfo=android.telephony.DataSpecificRegistrationInfo :{ maxDataCalls = 0 isDcNrRestricted = false isNrAvailable = false isEnDcAvailable = false mLteAttachResultType = 0 mLteAttachExtraInfo = 0 LteVopsSupportInfo :  mVopsSupport = 1 mEmcBearerSupport = 1 } nrState=**** rRplmn=null isUsingCarrierAggregation=false}, NetworkRegistrationInfo{ domain=CS transportType=WWAN registrationState=HOME networkRegistrationState=HOME roamingType=NOT_ROAMING accessNetworkTechnology=LTE rejectCause=0 emergencyEnabled=false availableServices=[VOICE,SMS,VIDEO] cellIdentity=CellIdentityLte:{ mCi=256 mPci=0 mTac=1 mEarfcn=2525 mBands=[5] mBandwidth=10000 mMcc=722 mMnc=07 mAlphaLong=AR - Movistar mAlphaShort=AR - Movistar mAdditionalPlmns={} mCsgInfo=null} voiceSpecificInfo=VoiceSpecificRegistrationInfo { mCssSupported=false mRoamingIndicator=0 mSystemIsInPrl=0 mDefaultRoamingIndicator=0} dataSpecificInfo=null nrState=**** rRplmn=72207 isUsingCarrierAggregation=false}, NetworkRegistrationInfo{ domain=PS transportType=WWAN registrationState=HOME networkRegistrationState=HOME roamingType=NOT_ROAMING accessNetworkTechnology=LTE rejectCause=0 emergencyEnabled=false availableServices=[DATA] cellIdentity=CellIdentityLte:{ mCi=256 mPci=0 mTac=1 mEarfcn=2525 mBands=[5] mBandwidth=10000 mMcc=722 mMnc=07 mAlphaLong=AR - Movistar mAlphaShort=AR - Movistar mAdditionalPlmns={} mCsgInfo=null} voiceSpecificInfo=null dataSpecificInfo=android.telephony.DataSpecificRegistrationInfo :{ maxDataCalls = 16 isDcNrRestricted = false isNrAvailable = false isEnDcAvailable = false mLteAttachResultType = 0 mLteAttachExtraInfo = 0 LteVopsSupportInfo :  mVopsSupport = 2 mEmcBearerSupport = 2 } nrState=**** rRplmn=72207 isUsingCarrierAggregation=false}], mNrFrequencyRange=0, mOperatorAlphaLongRaw=AR - Movistar, mOperatorAlphaShortRaw=Movistar, mIsDataRoamingFromRegistration=false, mIsIwlanPreferred=false}

03-27 14:24:00.224207  2120  2120 D MTKSST  : [GsmSST0] RAT switched Unknown -> LTE at cell 256

// 非漫游,根据EF中displayRule显示SPN值,但是实际界面显示了PLMN

03-27 14:24:00.252327  2120  2120 D MTKSST  : [GsmSST0] carrierName=, overrideName=

03-27 14:24:00.252465  2120  2120 D ServiceStateTracker: [0] updateSpnDisplayCdnr: curSpn = ; curPlmn = AR - Movistar; curDisplayRule = 2

03-27 14:24:00.258072  2120  2120 I CDNR : getCarrierDisplayNameFromEf withoutRoaming = false

03-27 14:24:00.258204  2120  2120 I CDNR : getCarrierDisplayNameFromEf registeredPlmnNumeric = 72207; isRoaming = false; showSpn = true; showPlmn = false; spn = 

// 根据EF内容,更新了SPN为AR - Movistar,同PLMN,所以会显示AR - Movistar

03-27 14:24:00.258433  2120  2120 D CDNR : getCarrierDisplayNameFromEf displayRule = { SPN_bit = 2, PLMN_bit = 0 }; spn = AR - Movistar; plmn = AR - MovistarshowSpn = true; showPlmn = false

03-27 14:24:00.258617  2120  2120 D CDNR : CarrierName from EF: { spn = AR - Movistar, dataSpn = null, showSpn = true, plmn = AR - Movistar, showPlmn = false

03-27 14:24:00.267668  2120  2120 D ServiceStateTracker: [0] updateTctSpnDisplay: updateSpnDisplay: changed sending intent, rule=2, showPlmn='false', plmn='AR - Movistar', showSpn='true', spn='AR - Movistar', dataSpn='null', subId='2'

03-27 14:24:00.303102  2120  2120 D ServiceStateTracker: [0] setCarrierText simNumeric:72207, operatorNumeric:72207, gid1:FFFFFFFF, carrierText:AR - Movistar

相关说明

1、不同平台的Modem配置TS.25或许会存在差异,比如6835芯片的配置路径在modem_t_6835 / mcu/custom/service/plmn/TS25。

2、TS25文件用于显示运营商名称,较新的平台机制(带MIPC的平台)才移到Modem维护的。没有TS.25时,会在Telephony AP侧配置,spn-conf.xml中。

定制方案

无法修改网络上报的信息,客制化只能在Telphony FW中配置运营商名称期望值。

针对平台定义的运营商名称,修改在spn-conf.xml,具体看mk编译生效文件的路径,可能用:

  • /device/mediatek/system/common/
  • /device/mediatek/common/
<spnOverride numeric="72207" spn="Movistar"/>
<spnOverride numeric="722070" spn="Movistar"/>

相关文章:

【笔记】Android U RILJ 中与运营商名称SPN显示相关的日志分析

源码阅读&#xff1a;AOSPXRef 常用日志关键字 Note&#xff1a;">"下发MD&#xff0c;"<"MD上报&#xff0c;[]中的id有请求和返回的对应关系 KEYComment> OPERATOR下发MD&#xff0c;请求运营商信息< OPERATORMD上报运营商注册信息> DA…...

蓝桥杯【奇怪的捐赠】c语言

我会将这题的解题的核心思路解为将10进制转化成7进制&#xff0c;毕竟题目上说的很清楚7的几次方 然后附上我认为的最优解 #include<stdio.h> int main() {int n 1000000;int sum 0;while (n ! 0){int a;a n % 7;n n / 7;sum a ;}printf("%d", sum);retu…...

【3月比赛合集】5场可报名的「创新应用」、「数据分析」和「程序设计」大奖赛,任君挑选!

CompHub[1] 实时聚合多平台的数据类(Kaggle、天池…)和OJ类(Leetcode、牛客…&#xff09;比赛。本账号会推送最新的比赛消息&#xff0c;欢迎关注&#xff01; 以下信息仅供参考&#xff0c;以比赛官网为准 目录 创新应用赛&#xff08;2场比赛&#xff09;数据分析赛&#…...

vue3 视频播放功能整体复盘梳理

回顾工作中对视频的处理&#xff0c;让工作中处理的问题的经验固化成成果&#xff0c;不仅仅是完成任务&#xff0c;还能解答任务的知识点。 遇到的问题 1、如何隐藏下载按钮&#xff1f; video 标签中的controlslist属性是可以用来控制播放器上空间的显示&#xff0c;在原来默…...

vue-ueditor-wrap上传图片报错:后端配置项没有正常加载,上传插件不能正常使用

如图所示&#xff0c;今天接收一个项目其中富文本编辑器报错 此项目为vue2项目&#xff0c;富文本编辑器为直接下载好的资源存放在public目录下的 经过排查发现报错的函数在ueditor.all.min.js文件内&#xff0c;但是ueditor.all.min.js文件夹是经过压缩的 所以直接&#xff…...

数据仓库的发展历程

数据仓库的概念可以追溯到20世纪60年代,但真正形成理论并被企业广泛应用还需要一个较长的发展过程。大致可以分为以下几个阶段: 决策支持系统(DSS)时期(1960s-1970s) 这一时期,随着管理信息系统(MIS)和电子计算机的兴起,企业开始尝试构建面向决策的数据处理系统。最初的决策支…...

MySQL开窗函数

测试环境&#xff1a;mysql8.0.18 官方文档&#xff1a;https://dev.mysql.com/doc/refman/8.0/en/window-functions.html 一、窗口函数介绍二、语法结构三、自定义窗口1.rows&#xff08;重点&#xff09;2.range3.默认窗口 四、常用窗口函数示例1.row_number & rank &…...

Java学习笔记(23)

多线程 并发 并行 多线程实现方式 1.继承Thread类 自己创建一个类extends thread类 Start方法开启线程&#xff0c;自动执行重写之后的run方法 2.实现runable接口 自己创建一个类implements runnable Myrun不能直接使用getname方法&#xff0c;因为这个方法是thread类的方法…...

nodejs下载安装以及npm、yarn安装及配置教程

1、nodejs下载安装 ​ 1.1、使用nodejs版本管理工具下载安装&#xff0c;可一键安装、切换不同nodejs版本&#xff0c; nvm-setup.zip&#xff1a;安装版&#xff0c;推荐使用 本次演示的是安装版。 1、双击安装文件 nvm-setup.exe 选择nvm安装路径 例如&#xff1a;E:\Soft…...

Playwright库page.evaluate()方法执行JavaScript 表达式

page.evaluate() 方法是 Playwright 中常用的方法之一&#xff0c;用于在页面上下文中执行 JavaScript 代码。它允许在浏览器环境中执行各种操作&#xff0c;如操作 DOM 元素、获取页面数据、执行复杂的计算等&#xff0c;并将结果返回到 Node.js 或 Python 代码中。 在 Playw…...

【微服务】OpenFeign+Sentinel集中处理远程调用异常

文章目录 1.微服务基本环境调整1.对10004模块的application.yml调整2.启动nacos以及一个消费者两个提供者3.测试1.输入http://localhost:8848/nacos/index.html 来查看注册情况2.浏览器访问 http://localhost:81/member/nacos/consumer/get/13.结果 2.使用OpenFeign实现微服务模…...

集合嵌套,Collections,斗地主案例,日志框架

文章目录 集合嵌套List嵌套ListList嵌套MapMap嵌套Map Collections类方法排序 sort 乱序 shuffle 斗地主案例需求思路代码 日志框架介绍优势体系结构Logback概述快速入门配置详解 集合嵌套 List嵌套List public static void main(String[] args){//一个年级有许多班级&#xf…...

maven pom relativePath属性的作用

maven pom relativePath属性的作用 文章目录 maven pom relativePath属性的作用一、relativePath出现的地方二、relativePath默认值三、四、<relativePath>一个pom路径 一、relativePath出现的地方 搭建maven项目&#xff0c;子模块指定父模块试&#xff0c;经常会在par…...

【STM32 HAL库SPI/QSPI协议学习,基于外部Flash读取。】

1、SPI协议 简介 SPI 协议是由摩托罗拉公司提出的通讯协议 (Serial Peripheral Interface)&#xff0c;即串行外围设备接口&#xff0c;是 一种高速全双工的通信总线。它被广泛地使用在 ADC、LCD 等设备与 MCU 间&#xff0c;要求通讯速率 较高的场合。 SPI 物理层 SPI 通讯…...

Nginx入门--初识Nginx的架构

一、概述 Nginx的架构设计旨在高效处理并发的网络请求。它采用了事件驱动的、非阻塞的IO模型&#xff0c;可以同时处理成千上万个并发连接&#xff0c;而不会消耗太多的系统资源。 二、主要组件 Nginx的主要组件包括&#xff1a; Master Process&#xff08;主进程&#xf…...

网络性能提升10%,ZStack Edge 云原生超融合基于第四代英特尔®至强®可扩展处理器解决方案发布

随着业务模式的逐渐转变、业务架构逐渐变得复杂&#xff0c;同时容器技术的兴起和逐渐成熟&#xff0c;使得Kubernetes、微服务等新潮技术逐步应用于业务应用系统上。 为了充分释放性能、为业务系统提供更高效的运行环境&#xff0c;ZStack Edge 云原生超融合采用了第四代英特尔…...

双非计算机考研目标211,选11408还是22408更稳?

求稳得话&#xff0c;11408比22408要稳&#xff01; 很多同学只知道&#xff0c;11408和22408在考察的科目上有区别&#xff0c;比如&#xff1a; 11408考的是考研数学一和英语一&#xff0c;22408考察的是考研数学二和英语二&#xff1a; 考研数学一和考研数学二的区别大吗…...

简单了解策略模式

什么是策略模式&#xff1f; 策略模式提供生成某一种产品的不同方式 Strategy策略类定义了某个各种算法的公共方法&#xff0c;不同的算法类通过继承Strategy策略类&#xff0c;实现自己的算法 Context的作用是减少客户端和Strategy策略类之间的耦合&#xff0c;客户端只需要…...

算法——运动模型

智能驾驶中常用的速度计算算法包括基于GPS的速度计算、惯性测量单元&#xff08;IMU&#xff09;的速度计算、雷达测距的速度计算、视觉测距的速度计算等。这些算法可以单独使用或者结合使用&#xff0c;以提高速度计算的准确性和稳定性。 智能驾驶中常用的加速度计算算法包括…...

基于R语言lavaan结构方程模型(SEM)技术应用

结构方程模型&#xff08;Sructural Equation Modeling&#xff0c;SEM&#xff09;是分析系统内变量间的相互关系的利器&#xff0c;可通过图形化方式清晰展示系统中多变量因果关系网&#xff0c;具有强大的数据分析功能和广泛的适用性&#xff0c;是近年来生态、进化、环境、…...

Flask RESTful 示例

目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题&#xff1a; 下面创建一个简单的Flask RESTful API示例。首先&#xff0c;我们需要创建环境&#xff0c;安装必要的依赖&#xff0c;然后…...

【kafka】Golang实现分布式Masscan任务调度系统

要求&#xff1a; 输出两个程序&#xff0c;一个命令行程序&#xff08;命令行参数用flag&#xff09;和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽&#xff0c;然后将消息推送到kafka里面。 服务端程序&#xff1a; 从kafka消费者接收…...

RocketMQ延迟消息机制

两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数&#xff0c;对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后&#xf…...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中&#xff0c;每个页面需要使用ref&#xff0c;onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入&#xff0c;需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码

目录 一、&#x1f468;‍&#x1f393;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站效果 五、&#x1fa93; 代码实现 &#x1f9f1;HTML 六、&#x1f947; 如何让学习不再盲目 七、&#x1f381;更多干货 一、&#x1f468;‍&#x1f…...

C++.OpenGL (20/64)混合(Blending)

混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别

【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而&#xff0c;传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案&#xff0c;能够实现大范围覆盖并远程采集数据。尽管具备这些优势&#xf…...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)

考察一般的三次多项式&#xff0c;以r为参数&#xff1a; p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]&#xff1b; 此多项式的根为&#xff1a; 尽管看起来这个多项式是特殊的&#xff0c;其实一般的三次多项式都是可以通过线性变换化为这个形式…...

嵌入式常见 CPU 架构

架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集&#xff0c;单周期执行&#xff1b;低功耗、CIP 独立外设&#xff1b;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel&#xff08;原始…...