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

全志A133 android10 适配SLM770A 4G模块

一,模块基本信息

1.官方介绍

SLM770A是美格智能最新推出的一款LTE Cat.4无线通讯模组,最大支持下行速率150Mbps及上行速率50Mbps。同时向下兼容现有的3G和2G网络,以确保即使在偏远地区也可以进行网络通信。
SLM770A模组支持分集接收和MIMO技术,优化数据传输的速度并提高通讯质量。支持NCM/PPP/ECM/TCP/UDP/DTSL/HTTP(S)/FTP/MQTT等多种拨号方式及内置网络协议。集成了UART/I2C/PCM/SPI/SDIO等丰富的硬件接口。广泛应用于工业路由、安防监控、CPE、车载DVR、共享等领域。

2.子端口说明

虚拟出来的各个子端口主要用来实现AT命令收发,网络通信,GPS,诊断等功能。
在这里插入图片描述


二,驱动移植与RIL适配

1.添加usb串口驱动

1.1 内核配置打开相应宏
代码路径:longan/kernel/linux-4.9/arch/arm64/configs/sun50iw10p1smp_a100_android_defconfig

#串口驱动
CONFIG_USB_SERIAL_GENERIC=y
CONFIG_USB_SERIAL_OPTION=y
CONFIG_USB_SERIAL_QT2=y
#RNDIS驱动支持
CONFIG_MII=y
CONFIG_USB_USBNET=y
CONFIG_USB_NET_CDCETHER=y
CONFIG_USB_NET_RNDIS_HOST=y

1.2 修改option驱动,添加模块支持
代码路径:longan/kernel/linux-4.9/drivers/usb/serial/option.c

diff --git a/longan/kernel/linux-4.9/drivers/usb/serial/option.c b/longan/kernel/linux-4.9/drivers/usb/serial/option.c
index 7ca999924d..965b6ed3ce 100644
--- a/longan/kernel/linux-4.9/drivers/usb/serial/option.c
+++ b/longan/kernel/linux-4.9/drivers/usb/serial/option.c
@@ -88,6 +88,18 @@ static void option_instat_callback(struct urb *urb);
#define HUAWEI_PRODUCT_E173S6                  0x1C07
#define HUAWEI_PRODUCT_E261                     0x1446
+//fy add for meig modem supported start.
+#define MEIG_VENDOR_ID                                 0x2DEE
+#define MEIG_PRODUCT_SRM815                    0x4D22
+#define MEIG_PRODUCT_SRM815_ECM                0x4D23
+#define MEIG_PRODUCT_SLM790                    0x4D20
+#define MEIG_PRODUCT_SLM770                    0x4D57
+#define MEIG_QCM_VENDOR_ID                     0x05C6
+#define MEIG_QCM_PRODUCT_SLM750_SRM815_SLM868  0xF601
+#define MEIG_PRODUCT_SRM811_RNDIS              0x4D51
+#define MEIG_PRODUCT_SRM811_NCM                0x4D52
+//fy add for meig modem supported end.
+
#define QUANTA_VENDOR_ID                       0x0408
#define QUANTA_PRODUCT_Q101                    0xEA02
#define QUANTA_PRODUCT_Q111                    0xEA03
@@ -593,6 +605,35 @@ static const struct option_blacklist_info yuga_clm920_ac5_blacklist = {
static const struct usb_device_id option_ids[] = {
+       //fy add for meig modem supported start.
+       { USB_VENDOR_AND_INTERFACE_INFO(MEIG_VENDOR_ID, 0xff, 0x03, 0x03) }, //3g app
+       { USB_VENDOR_AND_INTERFACE_INFO(MEIG_VENDOR_ID, 0xff, 0x03, 0x13) }, //app
+       { USB_VENDOR_AND_INTERFACE_INFO(MEIG_VENDOR_ID, 0xff, 0x03, 0x01) }, //modem
+       { USB_VENDOR_AND_INTERFACE_INFO(MEIG_VENDOR_ID, 0xff, 0x03, 0x12) }, //at
+       { USB_VENDOR_AND_INTERFACE_INFO(MEIG_VENDOR_ID, 0xff, 0x03, 0x14) }, //gprs
+
+       { USB_VENDOR_AND_INTERFACE_INFO(MEIG_VENDOR_ID, 0xff, 0x02, 0x03) }, //3g app
+       { USB_VENDOR_AND_INTERFACE_INFO(MEIG_VENDOR_ID, 0xff, 0x02, 0x13) }, //app
+       { USB_VENDOR_AND_INTERFACE_INFO(MEIG_VENDOR_ID, 0xff, 0x02, 0x01) }, //modem
+       { USB_VENDOR_AND_INTERFACE_INFO(MEIG_VENDOR_ID, 0xff, 0x02, 0x12) }, //at
+       { USB_VENDOR_AND_INTERFACE_INFO(MEIG_VENDOR_ID, 0xff, 0x02, 0x14) }, //gprs
+
+       { USB_DEVICE(MEIG_VENDOR_ID, MEIG_PRODUCT_SRM815),
+       .driver_info = RSVD(4) | RSVD(5) | RSVD(6) | RSVD(7) },
+       { USB_DEVICE(MEIG_VENDOR_ID, MEIG_PRODUCT_SRM815_ECM),
+       .driver_info = RSVD(4) | RSVD(5) | RSVD(6) | RSVD(7)},
+       { USB_DEVICE(MEIG_QCM_VENDOR_ID, MEIG_QCM_PRODUCT_SLM750_SRM815_SLM868),
+       .driver_info = RSVD(4) | RSVD(5) | RSVD(6) | RSVD(7)},
+       { USB_DEVICE(MEIG_VENDOR_ID, MEIG_PRODUCT_SLM790),
+       .driver_info = RSVD(0) | RSVD(5) | RSVD(6) | RSVD(7)},
+       { USB_DEVICE(MEIG_VENDOR_ID, MEIG_PRODUCT_SLM770),
+       .driver_info = RSVD(0) | RSVD(5) | RSVD(6) | RSVD(7)},
+       { USB_DEVICE(MEIG_VENDOR_ID, MEIG_PRODUCT_SRM811_RNDIS),
+       .driver_info = RSVD(0) | RSVD(1) },
+       { USB_DEVICE(MEIG_VENDOR_ID, MEIG_PRODUCT_SRM811_NCM),
+       .driver_info = RSVD(0) | RSVD(1) },
+       //fy add for meig modem supported end.
+{ USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) },{ USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) },{ USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA_LIGHT) },

1.3 添加USB设备节点权限
代码路径:android/device/softwinner/ceres-common/ueventd.sun50iw10p1.rc
文件中添加以下配置内容:

/dev/ttyUSB*                0777    system      system

1.4 编译更新内核
驱动加载后,插入模块时。dev/目录会生成ttyUSB串口设备:

console:/ # ls -l dev/ttyUSB*
crwxrwxrwx 1 system system 188,   0 2025-02-20 13:20 dev/ttyUSB0
crwxrwxrwx 1 system system 188,   1 2025-02-20 13:20 dev/ttyUSB1
crwxrwxrwx 1 system system 188,   2 2025-02-20 14:45 dev/ttyUSB2

2.添加RIL配置

2.1 驱动包解压
将Meig_Android_Driver_V5.0.7.3.zip解压到Android源码根目录vendor/meig 目录:
在这里插入图片描述
SLM770A 4G模块资料下载链接:https://download.csdn.net/download/weixin_45639314/90408097

2.2 在mk文件中添加美格ril配置
代码路径:android/device/softwinner/ceres-b6/ceres_b6.mk

diff --git a/android/device/softwinner/ceres-b6/ceres_b6.mk b/android/device/softwinner/ceres-b6/ceres_b6.mk
index 321272978e..8e36d8cd74 100644
--- a/android/device/softwinner/ceres-b6/ceres_b6.mk
+++ b/android/device/softwinner/ceres-b6/ceres_b6.mk
@@ -159,9 +159,9 @@ PRODUCT_PACKAGES += \
#PRODUCT_PACKAGES += AllwinnerGmsIntegration
-############################### 3G Dongle Support ###############################
+############################### 4G Dongle Support ###############################
# Radio Packages and Configuration Flie
-$(call inherit-product-if-exists, vendor/aw/public/prebuild/lib/librild/radio_common.mk)
+$(call inherit-product-if-exists, vendor/meig/meig_radio.mk)BUILD_WITH_GOOGLE_APPS := false
ifeq ($(strip $(BUILD_WITH_GOOGLE_APPS)), true)

2.3 添加HIDL配置
代码路径:android/device/softwinner/ceres-b6/configs/manifest.xml

diff --git a/android/device/softwinner/ceres-b6/configs/manifest.xml b/android/device/softwinner/ceres-b6/configs/manifest.xml
index fb82972d59..b9c7cb5178 100644
--- a/android/device/softwinner/ceres-b6/configs/manifest.xml
+++ b/android/device/softwinner/ceres-b6/configs/manifest.xml
@@ -25,6 +25,24 @@<name>IUsb</name><instance>default</instance></interface>
+    </hal>
+     <hal format="hidl">
+        <name>android.hardware.radio.deprecated</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IOemHook</name>
+            <instance>slot1</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.radio</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IRadio</name>
+            <instance>slot1</instance>
+        </interface></hal><hal format="hidl"><name>android.hardware.audio.effect</name>

二,调试

1.状态查看

console:/ # getprop | grep ril
[gsm.version.ril-impl]: [MEIG_RIL_Android7.x-later-V5.0.7.3]
[init.svc.vendor.meig-ril]: [running]
[init.svc.vendor.ril-daemon]: [stopped]
[ril.datachannel]: [/dev/ttyUSB1]
[rild.dongle_name]: [SLM770A]
[rild.libargs]: [-d /dev/ttyUSB2]
[rild.libpath]: [/vendor/lib/libmeig-ril.so]
[ro.boottime.vendor.meig-ril]: [5185500126]
[ro.radio.noawril]: [true]
[ro.radio.noril]: [false]
[sys.mgril.unrecverr]: [false]
[vendor.rild.libargs]: [-d /dev/ttyUSB2]
[vendor.rild.libpath]: [/vendor/lib/libmeig-ril.so]

2.usb串口驱动检查

adb root
adb shell
dmesg | grep option

打印以下信息:
在这里插入图片描述

3.查看节点

console:/ # cat sys/kernel/debug/usb/devicesT:  Bus=01 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#=  5 Spd=480  MxCh= 0
D:  Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=2dee ProdID=4d57 Rev= 1.00
S:  Manufacturer=Marvell
S:  Product=Mobile Composite Device Bus
S:  SerialNumber=200806006809080000
C:* #Ifs= 6 Cfg#= 1 Atr=c0 MxPwr=500mA
A:  FirstIf#= 0 IfCount= 2 Cls=e0(wlcon) Sub=01 Prot=03
I:* If#= 0 Alt= 0 #EPs= 1 Cls=e0(wlcon) Sub=01 Prot=03 Driver=rndis_host
E:  Ad=87(I) Atr=03(Int.) MxPS=  64 Ivl=4096ms
I:* If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=rndis_host
E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=0c(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=0b(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
E:  Ad=88(I) Atr=03(Int.) MxPS=  64 Ivl=4096ms
E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=0a(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
E:  Ad=89(I) Atr=03(Int.) MxPS=  64 Ivl=4096ms
E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=0f(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none)
E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=0e(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

相关文章:

全志A133 android10 适配SLM770A 4G模块

一&#xff0c;模块基本信息 1.官方介绍 SLM770A是美格智能最新推出的一款LTE Cat.4无线通讯模组&#xff0c;最大支持下行速率150Mbps及上行速率50Mbps。同时向下兼容现有的3G和2G网络&#xff0c;以确保即使在偏远地区也可以进行网络通信。 SLM770A模组支持分集接收和MIMO技…...

第3章 3.2 配置系统 .NET Core配置系统

3.2.1 配置系统的基本使用 .NET Core中的配置系统支持非常丰富的配置源&#xff0c;包括文件&#xff08;JSON、XML、INI等&#xff09;、注册表、环境变量、命令行、Azure Key Vault等&#xff0c;配置系统还支持自定义配置源。 用配置系统开发包Microsoft.Extensions.Confi…...

装修流程图: 装修前准备 → 设计阶段 → 施工阶段 → 安装阶段 → 收尾阶段 → 入住

文章目录 引言I 毛坯房装修的全流程**1. 装修前准备****1.1 确定装修预算****1.2 选择装修方式****1.3 选择装修公司****1.4 办理装修手续****2. 设计阶段****2.1 量房****2.2 设计方案****2.3 确认方案****3. 施工阶段****3.1 主体拆改****3.2 水电改造****3.3 防水工程****3.…...

Python----数据结构(单链表:节点,是否为空,长度,遍历,添加,删除,查找)

一、链表 链表是一种线性数据结构&#xff0c;由一系列按特定顺序排列的节点组成&#xff0c;这些节点通过指针相互连接。每个节点包含两部分&#xff1a;元素和指向下一个节点的指针。其中&#xff0c;最简单的形式是单向链表&#xff0c;每个节点含有一个信息域和一个指针域&…...

NLP-RNN-LSTM浅析

双向 LSTM&#xff08;Bi - LSTM&#xff09; 结构原理&#xff1a;从图片中可以看到&#xff0c;双向 LSTM 由两个方向相反的 LSTM 组成&#xff0c;一个是正向 LSTM&#xff08;forward&#xff09;&#xff0c;一个是反向 LSTM&#xff08;backward&#xff09;。正向 LSTM …...

【Cadence射频仿真学习笔记】Pcell Designer设计电感学习笔记

Cadence的Pcell designer官方入门教程 一、下载Pcell Designer 首先&#xff0c;前往Cadence网站下载Pcell Designer软件 &#xff08;具体安装过程就不记录了&#xff0c;大家自己去看视频吧&#xff09; 二、创建新的P-cell 然后打开Virtuoso&#xff0c;点击Tools->…...

臻识相机,华夏相机,芊熠车牌识别相机加密解密

臻识&#xff0c;华夏&#xff0c;芊熠这三种车牌识别相机解密我都试过了&#xff0c;可以正常解密成功&#xff0c;其它品牌我暂时没有测试。超级简单&#xff0c;免费的&#xff0c;白嫖无敌&#xff01; 流程&#xff1a; ①&#xff1a;先导出配置文件&#xff0c;例如我以…...

一个前端,如何同时联调多个后端

文章目录 场景解决方案思路实现步骤创建项目目标前端配置安装cross-env配置vue.config.js配置package.json 测试 场景 一个前端&#xff0c;需要同时和N个后端联调 一个需求里有若干个模块&#xff0c;分别给不同的后端开发&#xff0c;前端需要和N个后端联调 本地开启一个端…...

向量的点乘的几何意义

源自AI 向量的点乘&#xff08;Dot Product&#xff09;在几何和图形学中有重要的意义。它不仅是数学运算&#xff0c;还可以用来描述向量之间的关系。以下是点乘的几何意义及其应用&#xff1a; 1. 点乘的定义 对于两个向量 a 和 b&#xff0c;它们的点乘定义为&#xff1a;…...

如何组织和管理JavaScript文件:最佳实践与策略

在现代Web开发中&#xff0c;JavaScript已经成为不可或缺的一部分。随着项目规模的扩大&#xff0c;JavaScript代码的复杂性也随之增加。如何有效地组织和管理这些文件&#xff0c;不仅影响开发效率&#xff0c;还直接关系到项目的可维护性和可扩展性。本文将深入探讨如何组织和…...

mysql实时同步到es

测试了多个方案同步&#xff0c;最终选择oceanu产品&#xff0c;底层基于Flink cdc 1、实时性能够保证&#xff0c;binlog量很大时也不产生延迟 2、配置SQL即可完成&#xff0c;操作上简单 下面示例mysql的100张分表实时同步到es&#xff0c;优化备注等文本字段的like查询 创…...

DeepSeek动画视频全攻略:从架构到本地部署

DeepSeek 本身并不直接生成动画视频,而是通过与一系列先进的 AI 工具和传统软件协作,完成动画视频的制作任务。这一独特的架构模式,使得 DeepSeek 在动画视频创作领域发挥着不可或缺的辅助作用。其核心流程主要包括脚本生成、画面设计、视频合成与后期处理这几个关键环节。 …...

第3章 3.3日志 .NET Core日志 NLog使用教程

3.3.1 .NET Core日志基本使用 书中介绍了把日志输出到控制台的使用方式&#xff1a; 安装 Microsoft.Extensions.Logging 和 Microsoft.Extensions.Logging.Console 日志记录代码&#xff1a; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.…...

R语言NIMBLE、Stan和INLA贝叶斯平滑及条件空间模型死亡率数据分析:提升疾病风险估计准确性...

全文链接&#xff1a;https://tecdat.cn/?p40365 在环境流行病学研究中&#xff0c;理解空间数据的特性以及如何通过合适的模型分析疾病的空间分布是至关重要的。本文主要介绍了不同类型的空间数据、空间格点过程的理论&#xff0c;并引入了疾病映射以及对空间风险进行平滑处理…...

Java 反射 (Reflection) 详解

一、什么是 Java 反射&#xff1f; Java 反射 (Reflection) 是 Java 语言的一个强大特性&#xff0c;它允许 在运行时 检查和修改类、接口、字段和方法的信息&#xff0c;而不需要在编译时知道这些信息。 换句话说&#xff0c;反射可以让你在程序运行过程中“动态”地获取类的…...

在 C++ 中,`QMessageBox_s::question_s2` 和 `app.question_s2` 的区别(由DS-V3生成)

在 C 中&#xff0c;QMessageBox_s::question_s2 和 app.question_s2 的区别主要在于它们的调用方式和上下文范围。以下是对两者的详细解释&#xff1a; 1. QMessageBox_s::question_s2 解释&#xff1a; QMessageBox_s::question_s2 是一个静态成员函数的调用。它属于类 QMess…...

vxe-grid 通过配置式给单元格字段格式化树结构数据,转换树结构节点

vxe-grid 通过配置式给单元格字段格式化树结构数据&#xff0c;转换树结构节点 比如用户自定义配置好的数据源&#xff0c;通过在列中配置好数据&#xff0c;全 json 方式直接返回给前端渲染&#xff0c;不需要写任何格式化方法。 官网&#xff1a;https://vxetable.cn npm i…...

大厂算法面试常见问题总结:高频考点与备战指南

在大厂算法面试中&#xff0c;数据结构与算法是必考的核心内容。 无论是校招还是社招&#xff0c;算法题的表现往往决定了面试的成败。 为了帮助大家更好地备战&#xff0c;本文总结了大厂算法面试中的高频考点&#xff0c;并提供了详细的备战建议&#xff0c;助你轻松应对面…...

制造行业CRM选哪家?中大型企业CRM选型方案

在当今竞争激烈的制造行业中&#xff0c;企业对于客户关系管理&#xff08;CRM&#xff09;系统的需求日益增强&#xff0c;高效、智能的CRM系统已成为推动企业业务增长、优化客户体验的关键。在制造业 CRM 市场中&#xff0c;纷享销客和销售易都备受关注&#xff0c;且各自有着…...

PHP集成软件用哪个比较好?

在Windows环境下&#xff0c;使用PHP时&#xff0c;通常需要一个集成开发环境&#xff08;IDE&#xff09;或者集成软件来简化开发和调试过程。以下是几款常用且推荐的PHP集成软件&#xff0c;每款都有其特点&#xff0c;可以根据需求进行选择&#xff1a; 1. XAMPP 特点&…...

Zustand 状态管理库:极简而强大的解决方案

Zustand 是一个轻量级、快速和可扩展的状态管理库&#xff0c;特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

2024年赣州旅游投资集团社会招聘笔试真

2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

ffmpeg(四):滤镜命令

FFmpeg 的滤镜命令是用于音视频处理中的强大工具&#xff0c;可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下&#xff1a; ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜&#xff1a; ffmpeg…...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用&#xff0c;因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型&#xff08;VLMs&#xff09;在字幕生成方面…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

腾讯云V3签名

想要接入腾讯云的Api&#xff0c;必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口&#xff0c;但总是卡在签名这一步&#xff0c;最后放弃选择SDK&#xff0c;这次终于自己代码实现。 可能腾讯云翻新了接口文档&#xff0c;现在阅读起来&#xff0c;清晰了很多&…...

Python 高效图像帧提取与视频编码:实战指南

Python 高效图像帧提取与视频编码:实战指南 在音视频处理领域,图像帧提取与视频编码是基础但极具挑战性的任务。Python 结合强大的第三方库(如 OpenCV、FFmpeg、PyAV),可以高效处理视频流,实现快速帧提取、压缩编码等关键功能。本文将深入介绍如何优化这些流程,提高处理…...

自然语言处理——文本分类

文本分类 传统机器学习方法文本表示向量空间模型 特征选择文档频率互信息信息增益&#xff08;IG&#xff09; 分类器设计贝叶斯理论&#xff1a;线性判别函数 文本分类性能评估P-R曲线ROC曲线 将文本文档或句子分类为预定义的类或类别&#xff0c; 有单标签多类别文本分类和多…...

【实施指南】Android客户端HTTPS双向认证实施指南

&#x1f510; 一、所需准备材料 证书文件&#xff08;6类核心文件&#xff09; 类型 格式 作用 Android端要求 CA根证书 .crt/.pem 验证服务器/客户端证书合法性 需预置到Android信任库 服务器证书 .crt 服务器身份证明 客户端需持有以验证服务器 客户端证书 .crt 客户端身份…...