RK3588V2--ES8388声卡适配记录
RK3588V2--ES8388声卡适配记录
- 1. ES8388声卡简单介绍
- 2. 适配过程
- 2.1 设备树配置
- 3. 问题分析与解决
- 3.1 现声卡平台设备, 最终注册失败
- 3.2 系统查看 I2C 设备
- 3.3 怀疑是没有上拉电阻?
- 4. 测试阶段
- 4.1 耳机接口测试--OK
- 4.2 MIC测试--无法使用
- 5. 分析总结
1. ES8388声卡简单介绍
Es8388有 2 个 ADC 通道和 2 个 DAC 通道,麦克风放大器,耳机放大器,数字音效以及模拟混合和增益功能组成。
主要特点:
- I2S 接口,支持最高 192K,24bit 音频播放。
- DAC 信噪比 96dB;ADC 信噪比 95dB。
- 支持主机和从机模式。
- 支持立体声差分输入/麦克风输入。
- 支持左右声道音量独立调节。
- 支持 40mW 耳机输出,无爆音。
通过原理图可以看出, MIC 和双路耳机都与ES8388这颗音频编解码芯片连接. 该芯片使用的通信协议是I2S与 SOC 驱动进行通信. 观察多个原理图基本可以得知, 配置这两个外设主要就是配置ES8388这颗芯片中的引脚, 其中的I2C应该是用于配置ES8388这个声卡内部积存的,但是今天主要是给他bringup起来的,不是来配置它的。
总的来说其实需要配置的设备树节点就三个:ES8388, I2S0和I2C7.
2. 适配过程
2.1 设备树配置
其中需要的设备树各个配置如下:
es8388_sound: es8388-sound {status = "okay";compatible = "rockchip,multicodecs-card";rockchip,card-name = "rockchip,es8388";hp-det-gpio = <&gpio1 RK_PD3 GPIO_ACTIVE_HIGH>;io-channels = <&saradc 3>;io-channel-names = "adc-detect";keyup-threshold-microvolt = <1800000>;poll-interval = <100>;spk-con-gpio = <&gpio3 RK_PC0 GPIO_ACTIVE_HIGH>;hp-con-gpio = <&gpio3 RK_PA7 GPIO_ACTIVE_HIGH>;rockchip,format = "i2s";rockchip,mclk-fs = <256>;rockchip,cpu = <&i2s0_8ch>;rockchip,codec = <&es8388>;rockchip,audio-routing ="Headphone", "LOUT1","Headphone", "ROUT1","Speaker", "LOUT2","Speaker", "ROUT2","Headphone", "Headphone Power","Headphone", "Headphone Power","Speaker", "Speaker Power","Speaker", "Speaker Power","LINPUT1", "Main Mic","LINPUT2", "Main Mic","RINPUT1", "Headset Mic","RINPUT2", "Headset Mic";pinctrl-names = "default";pinctrl-0 = <&hp_det>;play-pause-key {label = "playpause";linux,code = <KEY_PLAYPAUSE>;press-threshold-microvolt = <2000>;};};
注意其中的clocks和assigned-clocks属性, 用于为es8388设备配置时钟源. 其中 &cru 是时钟控制单元 (Clock & Reset Unit)的设备树节点, 这里表示I2S0_8CH_MCLKOUT 由cru提供. assigned-clocks = <&cru I2S0_8CH_MCLKOUT>;用于分配时钟, 表示想为I2S0_8CH_MCLKOUT设定一个固定的时钟频率. 所以仅仅通过clocks获取时钟还不够, 该属性作用是确保始终在设备初始化时被正确配置. 具体时钟频率由assigned-clock-rates属性确定, 在这里是12288000.
&i2c7 {status = "okay";es8388: es8388@11 {status = "okay";#sound-dai-cells = <0>;compatible = "everest,es8388", "everest,es8323";reg = <0x11>;clocks = <&mclkout_i2s0>;clock-names = "mclk";assigned-clocks = <&mclkout_i2s0>;assigned-clock-rates = <12288000>;pinctrl-names = "default";pinctrl-0 = <&i2s0_mclk>;};
};
&i2s0_8ch {status = "okay";pinctrl-0 = <&i2s0_lrck&i2s0_sclk&i2s0_sdi0&i2s0_sdo0>;
};
参考上述设备树修改自己的设备树文件, 注意修改的时候将需要进行复用功能冲突的节点记录一下,防止因为引脚复用问题查来查去,别问我为什么这么做,说多了都是泪 。。。:
1. gpio1_ d3 -- 无冲突
2. gpio3_ a7 -- 无冲突
3. gpio1_c2 -- 无冲突
4. i2c7 一对复用引脚: gpio1_d0, gpio1_d1 与 UART6 冲突, 失能 UART6, 如有子节点可尝试切换复用引脚.
3. 问题分析与解决
3.1 现声卡平台设备, 最终注册失败
调试信息发生变化:
# 修改配置之前:
[ 10.997280] ES8323 3-0011: i2c recv Failed# 修改配置之后:
[ 9.914426] input: headset-keys as /devices/platform/es8388-sound/input/input1
[ 10.017544] rk3x-i2c fec90000.i2c: timeout, ipd: 0x91, state: 3
[ 10.017614] ES8323 7-0011: ASoC: error at soc_component_write_no_lock on ES8323.7-0011: -110
[ 10.030891] mmc_host mmc2: Bus speed (slot 0) = 400000Hz (slot req 400000Hz, actual 400000HZ div = 0)
[ 10.052863] ES8323 7-0011: ASoC: error at soc_component_write_no_lock on ES8323.7-0011: -6
[ 10.052876] ES8323 7-0011: Failed to issue reset
[ 10.052885] ES8323 7-0011: ASoC: error at snd_soc_component_probe on ES8323.7-0011: -6
[ 10.052890] ES8323 7-0011: ASoC: failed to probe component -6
[ 10.052932] rk-multicodecs es8388-sound: ASoC: failed to instantiate card -6
[ 10.053015] rk-multicodecs es8388-sound: card register failed -6
怀疑是设备树中的一些引脚复用冲突? 或者同一个时钟源不能被多个设备共同使用?
从调试信息中看, 原因似乎是设备复位失败 (即复位引脚出错) 和 I2C 通信超时 (I2C 引脚配置问题.). 不排除 I2C 通信频率太高以及没有上拉电压导致.
3.2 系统查看 I2C 设备
看看是不是一些引脚需要显示配置为gpio功能或者其他功能.
同时可以看到内核已经正确识别该设备地址:
root@LPA3588:/sys/bus/i2c/devices# ls
0-0042 2-0010 2-0042 3-0036 6-0022 7-0011 i2c-10 i2c-3 i2c-7 i2c-9
0-0043 2-0036 3-0010 6-0001 6-0051 i2c-0 i2c-2 i2c-6 i2c-8
所以 i2c 本身没有问题, 主要是无法正常通信, 如果要继续测试 I2C7 的通信, 因为目前 USB 和网口都无法使用, 所以之后的 ubuntu 系统中需要自带i2c-tools软件包(没有需要手动编译或者apt下载)
3.3 怀疑是没有上拉电阻?
I2C本来就不是啥高速信号,一般信号稳定性说实话还挺难受影响的。。。
观察原理图可以发现:
我的的I2C7_SCL没有配置上拉电阻哦。
这边使用万用表进行电压测试: I2C7_SCL_M0_CODEC处电压为 0.78, 可能没有达到 I2C 要求的上拉电压标准值 (观察其他原理图似乎是 1.8V). 因为我们的板子也没有外部硬件上拉, 所以设备树中配置为内部上拉, 开启内部默认上拉后再进行测试(如果测试成功, 需要注意其他 I2C 接口也需要同样进行配置, 估计很多都无外部硬件上拉):
调试信息变化:
[ 9.816718] input: headset-keys as /devices/platform/es8388-sound/input/input1
[ 9.828514] ES8323 7-0011: ASoC: error at soc_component_write_no_lock on ES8323.7-0011: -5
[ 9.838541] mmc0: SDHCI controller on fe2e0000.mmc [fe2e0000.mmc] using ADMA
[ 9.877034] mmc0: new HS400 Enhanced strobe MMC card at address 0001
[ 9.877572] mmcblk0: mmc0:0001 A3A561 57.6 GiB
[ 9.877706] mmcblk0boot0: mmc0:0001 A3A561 partition 1 4.00 MiB
[ 9.877825] mmcblk0boot1: mmc0:0001 A3A561 partition 2 4.00 MiB
[ 9.877903] mmcblk0rpmb: mmc0:0001 A3A561 partition 3 16.0 MiB, chardev (237:0)
[ 9.878718] input: rockchip,es8388 Headset as /devices/platform/es8388-sound/sound/card0/input2
# 系统内部信息
root@LPA3588:/dev/snd# ls
by-path controlC0 pcmC0D0c pcmC0D0p seq timer
root@LPA3588:/dev/snd# cd by-path/
root@LPA3588:/dev/snd/by-path# ls
platform-es8388-sound
root@LPA3588:/dev/snd/by-path# ls
platform-es8388-sound
root@LPA3588:/dev/snd/by-path# cd /proc/asound/cards
-bash: cd: /proc/asound/cards: Not a directory
root@LPA3588:/dev/snd/by-path# cd /proc/asound/card
-bash: cd: /proc/asound/card: No such file or directory
root@LPA3588:/dev/snd/by-path# cd /proc/asound/
root@LPA3588:/proc/asound# ls
card0 cards devices hwdep pcm rockchipes8388 seq timers version
root@LPA3588:/proc/asound# cat cards0 [rockchipes8388 ]: rockchip_es8388 - rockchip,es8388rockchip,es8388
root@LPA3588:/proc/asound# arecord -l
**** List of CAPTURE Hardware Devices ****
card 0: rockchipes8388 [rockchip,es8388], device 0: dailink-multicodecs ES8323.7-0011-0 [dailink-multicodecs ES8323.7-0011-0]Subdevices: 1/1Subdevice #0: subdevice #0
4. 测试阶段
4.1 耳机接口测试–OK
系统播放音频,耳机可以听到声音,说明声卡使用没什么问题。
4.2 MIC测试–无法使用
这边使用板载MIC进行录音测试,再使用耳机是无法听到任何声音的。使用16进制工具分析录音文件。
# 录音5S
arecord -D hw:0,0 -f cd -d 5 test-mic.wav
# 查看16进制变化
root@LPA3588:~# hexdump -C test-mic.wav | head -n 50
00000000 52 49 46 46 74 75 0d 00 57 41 56 45 66 6d 74 20 |RIFFtu..WAVEfmt |
00000010 10 00 00 00 01 00 02 00 44 ac 00 00 10 b1 02 00 |........D.......|
00000020 04 00 10 00 64 61 74 61 50 75 0d 00 ff ff ff ff |....dataPu......|
00000030 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
*
00003460 ff ff ff ff ff ff ff ff ff ff ff ff ff ff 09 00 |................|
00003470 02 00 02 00 0a 00 0a 00 05 00 05 00 07 00 07 00 |................|
00003480 06 00 06 00 fe ff fe ff 03 00 03 00 09 00 09 00 |................|
00003490 04 00 04 00 05 00 05 00 05 00 05 00 07 00 07 00 |................|
000034a0 02 00 02 00 04 00 04 00 07 00 07 00 0f 00 0f 00 |................|
000034b0 0c 00 0c 00 0a 00 0a 00 07 00 07 00 08 00 08 00 |................|
000034c0 0b 00 0b 00 0f 00 0f 00 0c 00 0c 00 05 00 05 00 |................|
000034d0 03 00 03 00 04 00 04 00 06 00 06 00 08 00 08 00 |................|
000034e0 08 00 08 00 02 00 02 00 07 00 07 00 08 00 08 00 |................|
000034f0 fe ff fe ff 0b 00 0b 00 08 00 08 00 0a 00 0a 00 |................|
00003500 12 00 12 00 05 00 05 00 04 00 04 00 ff ff ff ff |................|
00003510 04 00 04 00 05 00 05 00 03 00 03 00 05 00 05 00 |................|
00003520 05 00 05 00 06 00 06 00 06 00 06 00 ff ff ff ff |................|
00003530 01 00 01 00 03 00 03 00 06 00 06 00 04 00 04 00 |................|
00003540 0d 00 0d 00 03 00 03 00 09 00 09 00 08 00 08 00 |................|
00003550 0a 00 0a 00 0a 00 0a 00 08 00 08 00 07 00 07 00 |................|
00003560 04 00 04 00 07 00 07 00 05 00 05 00 06 00 06 00 |................|
00003570 03 00 03 00 0a 00 0a 00 f9 ff f9 ff fe ff fe ff |................|
00003580 05 00 05 00 09 00 09 00 05 00 05 00 04 00 04 00 |................|
00003590 03 00 03 00 03 00 03 00 03 00 03 00 02 00 02 00 |................|
000035a0 0d 00 0d 00 0a 00 0a 00 09 00 09 00 04 00 04 00 |................|
000035b0 fd ff fd ff fe ff fe ff 06 00 06 00 00 00 00 00 |................|
000035c0 08 00 08 00 00 00 00 00 fe ff fe ff fc ff fc ff |................|
000035d0 fd ff fd ff 06 00 06 00 07 00 07 00 07 00 07 00 |................|
000035e0 03 00 03 00 fd ff fd ff ff ff ff ff 00 00 00 00 |................|
000035f0 0a 00 0a 00 00 00 00 00 01 00 01 00 02 00 02 00 |................|
00003600 05 00 05 00 00 00 00 00 02 00 02 00 03 00 03 00 |................|
00003610 00 00 00 00 fc ff fc ff fe ff fe ff 06 00 06 00 |................|
00003620 00 00 00 00 01 00 01 00 04 00 04 00 04 00 04 00 |................|
00003630 05 00 05 00 04 00 04 00 04 00 04 00 01 00 01 00 |................|
00003640 02 00 02 00 0c 00 0c 00 08 00 08 00 04 00 04 00 |................|
00003650 08 00 08 00 06 00 06 00 fb ff fb ff 01 00 01 00 |................|
00003660 02 00 02 00 02 00 02 00 01 00 01 00 fe ff fe ff |................|
00003670 fd ff fd ff 02 00 02 00 02 00 02 00 03 00 03 00 |................|
00003680 06 00 06 00 05 00 05 00 0b 00 0b 00 04 00 04 00 |................|
00003690 fd ff fd ff 04 00 04 00 00 00 00 00 03 00 03 00 |................|
000036a0 01 00 01 00 ff ff ff ff 00 00 00 00 04 00 04 00 |................|
000036b0 03 00 03 00 06 00 06 00 05 00 05 00 05 00 05 00 |................|
000036c0 03 00 03 00 ff ff ff ff 05 00 05 00 08 00 08 00 |................|
000036d0 01 00 01 00 08 00 08 00 04 00 04 00 00 00 00 00 |................|
000036e0 06 00 06 00 0b 00 0b 00 06 00 06 00 02 00 02 00 |................|
000036f0 04 00 04 00 01 00 01 00 04 00 04 00 03 00 03 00 |................|
00003700 07 00 07 00 0c 00 0c 00 08 00 08 00 0c 00 0c 00 |................|
00003710 04 00 04 00 0b 00 0b 00 02 00 02 00 04 00 04 00 |................|
00003720 01 00 01 00 06 00 06 00 05 00 05 00 04 00 04 00 |................|
可以看到内部的数据处于一直变化阶段, 但是为何没有听到任何声音呢?
系统指令查看外部耳机MIC设备:
# 查看系统文件
root@LPA3588:/sys/class/extcon/extcon6
cat state
MICROPHONE=0
HEADPHONE=1
是因为没有检测到MIC吗?其实不然,这里的MIC其实连接在ES8388声卡上,MIC不像是耳机还带有耳机DET引脚,这种纯后端设备系统其实是无法检测到的,检测到声卡一般就可以使用。
5. 分析总结
ES8388 移植基本成功,但是出现板载 MIC无法使用的问题,最终硬件工程师发现由于其过度追求封装,导致物料选择错误,将 MIC 与声卡连接的电容大小选错了,可能是这个原因导致录音文件似乎有变化但是没有声音。
相关文章:
RK3588V2--ES8388声卡适配记录
RK3588V2--ES8388声卡适配记录 1. ES8388声卡简单介绍2. 适配过程2.1 设备树配置 3. 问题分析与解决3.1 现声卡平台设备, 最终注册失败3.2 系统查看 I2C 设备3.3 怀疑是没有上拉电阻? 4. 测试阶段4.1 耳机接口测试--OK4.2 MIC测试--无法使用 5. 分析总结 1. ES8388声…...
【http://noi.openjudge.cn/】4.3算法之图论——1538:Gopher II
[【http://noi.openjudge.cn/】4.3算法之图论——1538:Gopher II] 题目 查看提交统计提问 总时间限制: 2000ms 内存限制: 65536kB 描述 The gopher family, having averted the canine threat, must face a new predator. The are n gophers and m gopher holes, each at di…...
PySide(PyQT)的视图(QGraphicsView)范例(一) 基本框架
最近学习了视图(QGraphicsView)的知识,总结一下,做一个demo以备忘。在demo中使用了场景(QGraphicsScene)、矩形框(QGraphicsRectItem)等构件,以及演示了常用的设置方法和…...
opencv 模板匹配方法汇总
在OpenCV中,模板匹配是一种在较大图像中查找特定模板图像位置的技术。OpenCV提供了多种模板匹配方法,通过cv2.matchTemplate函数实现,该函数支持的匹配方式主要有以下6种,下面详细介绍每种方法的原理、特点和适用场景。 1. cv2.T…...
_mm_shuffle_epi32解析
一 概述 _mm_shuffle_epi32和_MMSHUFFLE是与SSE指令集相关的开发工具,主要用于SIMD向量操作。 二 _mm_shuffle_epi32 函数 功能:对128位整数向量(__m128i)中的四个32位整数进行重排序 原型:__m128i _mm_shuffle_epi32 (__m128i a, int imm…...
Tauri+React+Ant Design跨平台开发环境搭建指南
TauriReactAnt Design跨平台开发环境搭建指南 一、环境配置与工具链搭建 1.1 基础环境准备 必备组件: Rust工具链(v1.77): curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh Node.js LTS(v20.11.1&a…...
《基于Selenium的论坛系统自动化测试实战报告》
一、项目背景与技术选型 项目简介 目标系统:论坛系统 核心功能:用户注册/登录、会话框发送信息、好友列表、信息发送 技术栈:html Springboot MySQL数据库 为什么选择Selenium 支持多浏览器兼容性测试(Chrome/Firefox/Edge&…...
洛谷 P11830 省选联考2025 幸运数字 题解
题意 小 X 有 n n n 个正整数二元组 ( a i , b i ) ( 1 ≤ i ≤ n ) (a_i, b_i) (1 \leq i \leq n) (ai,bi)(1≤i≤n)。他将会维护初始为空的可重集 S S S,并对其进行 n n n 轮操作。第 i ( 1 ≤ i ≤ n ) i (1 \leq i \leq n) i(1≤i≤n) 轮操作中&#…...
清华北大DeepSeek六册
「清华北大-Deepseek使用手册」 链接:https://pan.quark.cn/s/98782f7d61dc 「清华大学Deepseek整理) 1-6版本链接:https://pan.quark.cn/s/72194e32428a AI学术工具公测链接:https://pan.baidu.com/s/104w_uBB2F42Da0qnk78_ew …...
ubuntu部署gitlab-ce及数据迁移
ubuntu部署gitlab-ce及数据迁移 进行前梳理: 在esxi7.0 Update 3 基础上使用 ubuntu22.04.5-server系统对 gitlab-ce 16.10进行部署,以及将gitlab-ee 16.9 数据进行迁移到gitlab-ce 16.10 进行后总结: 起初安装了极狐17.8.3-jh 版本(不支持全局中文,就没用了) …...
什么是 MGX:MetaGPT
什么是 MGX:MetaGPT MetaGPT是由思码逸(OpenDILab)团队开发的一款专注于生成式AI驱动的软件开发框架,MGX可能是其衍生或升级的相关成果,它创新性地将大语言模型引入软件开发流程,模拟人类软件团队的协作方式,能让用户通过自然语言描述需求,即可自动生成完整的软件项目,…...
C++,leecode字符串常见API
在LeetCode上刷C题目时,熟练掌握字符串相关的常见API可以大大提高代码效率和可读性。以下是C标准库(<string>)中常用的字符串操作API: 1. 初始化和赋值 std::string s1 "hello"; // 直接初始化 std::string s2…...
Ubuntu 安装 stable-diffusion-webui-docker 常见问题处理方法
安装 Stable Diffusion WebUI Docker 工程地址 https://github.com/AbdBarho/stable-diffusion-webui-docker 第一步是 git clone 下来 Setup 阅读 README 中的 setup,进入页面 https://github.com/AbdBarho/stable-diffusion-webui-docker/wiki/Setup docker …...
长时间目标跟踪算法(3)-GlobalTrack:A Simple and Strong Baseline for Long-termTracking
GlobalTrack的原始论文和源码均已开源,下载地址。 目录 背景与概述 1.1 长期视觉跟踪的挑战 1.2 现有方法的局限性 1.3 GlobalTrack的核心思想 算法原理与架构 2.1 全局实例搜索框架 2.2 Query-Guided RPN(QG-RPN) 2.3 Query-Guided RCNN&a…...
深入理解指针与回调函数:从基础到实践
引言 在C语言中,指针和回调函数是两个非常重要的概念。指针为我们提供了直接操作内存的能力,而回调函数则为我们提供了一种灵活的编程方式,使得我们可以将函数作为参数传递给其他函数,从而实现更加模块化和可复用的代码。本文将深…...
算法学习新姿势:从0开始用hello-algo搭建自己的在线学习平台
文章目录 前言1.关于hello-algo2.安装Docker和Docker compose3.本地部署hello-algo4. hello-algo本地访问5.cpolar内网穿透工具安装6.创建远程连接公网地址7.固定Uptime Kuma公网地址 前言 今天要给大家安利一款绝对不能错过的开源神器——Hello-Algo!无论你是刚踏…...
常用 nvm 命令指南
nvm(Node Version Manager) 是一个用于管理 Node.js 版本的工具,可以轻松安装、切换和卸载不同版本的 Node.js。本文将介绍常用的 nvm 命令,帮助你高效管理 Node.js 环境。 1. 列出系统中通过 nvm 安装的所有 Node.js 版本 nvm l…...
后端-Java虚拟机
Java虚拟机 Java虚拟机的组成 Java虚拟机的组成由类加载器ClassLoader、运行时数据区域(JVM管理的内存)和执行引擎(即时遍历器、解释器垃圾回收器) 类加载器加载class字节码文件中的内容到内存运行时数据区域负责管理jvm使用到…...
开源PDF解析工具olmOCR
olmOCR 是由 Allen Institute for Artificial Intelligence (AI2) 的 AllenNLP 团队开发的一款开源工具,旨在将PDF文件和其他文档高效地转换为纯文本,同时保留自然的阅读顺序。它支持表格、公式、手写内容等。 olmOCR 经过学术论文、技术文档和其他文档…...
Java里的ArrayList和LinkedList有什么区别?
大家好,我是锋哥。今天分享关于【Java里的ArrayList和LinkedList有什么区别?】面试题。希望对大家有帮助; Java里的ArrayList和LinkedList有什么区别? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 ArrayList 和 Lin…...
Python的循环和条件判断 笔记250303
Python的循环和条件判断 Python中的循环和条件判断是编程基础,以下是关键点总结及示例: 条件判断 语法:if、elif、else,使用缩进划分代码块。逻辑运算符:and、or、not。示例:age 18 if age < 12:prin…...
浔川官方回应
浔川官方回应 近期,有用户反馈《浔川社团官方文章被 Devpress 社区收录!》一文中的文章链接,点击后出现无法访问的情况。在此,浔川社团向各位关注我们的用户致以诚挚的歉意,并就该问题作出如下说明: 经社…...
【计算机网络入门】初学计算机网络(六)
目录 1.回忆数据链路层作用 2. 组帧 2.1 四种组帧方法 2.1.1 字符计数法 2.1.2 字节填充法 2.1.3 零比特填充法 2.1.4 违规编码法 3. 差错控制 3.1 检错编码 3.1.1 奇偶校验码 3.1.2 CRC(循环冗余校验)校验码 3.2 纠错编码 3.2.1 海明校验码…...
摄像头应用编程(三):多平面视频采集
文章目录 1、前言2、环境介绍3、步骤4、应用程序编写5、测试5.1、编译应用程序5.2、运行应用程序 6、总结 1、前言 在查看摄像头类型时,大致可以分为两类:Video Capture 和 Video Capture Multiplanar。 本次应用程序主要针对类型为Video Capture Multi…...
用工厂函数简化redis配置
工厂函数(Factory Function)不同于构造函数,工厂函数就是一个普通函数,通常用于创建对象或实例。它的核心思想是通过一个函数来封装对象的创建逻辑,而不是直接使用类的构造函数。工厂函数可以根据输入参数动态地决定创…...
网页制作11-html,css,javascript初认识のCCS样式列表(上)
Advantage. 更加精确的控制网页的内容、形式。样式更加丰富。定义样式灵活。 一、css的基本语法 Css的语法结构由三部分组成: 1、选择符 Selector: 指这种样式编码所要针对的对象,可以是一个xhtml标签,例如body hl;…...
VSCode 移除EmmyLua插件的红色波浪线提示
VSCode 中安装插件EmmyLua,然后打开lua文件的时候,如果lua代码引用了C#脚本的变量,经常出现 “undefined global variable: UnityEngineEmmyLua(undefined-global)” 的红色波浪线提示,这个提示看着比较烦人,我们可以通…...
【PHP】fastadmin框架后台开关的传值问题
文章目录 概要技术细节 概要 fastadmin的后台ui框架中,处理列表开关的场景比较多见,有时传值不是0和1,而是1和2,那么就需要调整js的代码了。 技术细节 处理开关字段的js代码: {field: is_sellOut,title: 销售中,yes…...
机器学习数学基础:37.统计学基础知识1
统计学基础概念入门教程 在统计学的世界里,概率和数据分布是基础且重要的概念,它们能帮助我们理解和分析各种数据现象。除此之外,点估计与区间估计也是在对总体参数进行推断时常用的方法。下面,就为统计学小白详细讲解这些关键的…...
HTB academy ---Active Directory Enumeration Attacks---An ACE in the Hole
ACL Enumeration 那么章节开始我们先枚举一下用户的GUID,也就是如图所示objectacetype这一块儿的内容,这一步的目的其实是观察我们已获得的用户对其他用户的权限,这个权限就是通过这个GUID得出来的(当然枚举的时间会比较长可能需…...
2025华为OD机试真题目录【E卷+A卷+B卷+C卷+D卷】持续收录中...
摘要 本专栏提供2025最新最全的华为OD机试真题库(EABCD卷),包括100分和200分题型。题目包含题目描述、输入描述、用例、备注和解题思路、多种语言解法(Java/JS/Py/C/C)。希望小伙伴们认真学习、顺利通过。 声明 本专…...
【Linux第一弹】Linux基础指令(上)
目录 1.ls指令 1.1 ls使用实例 2.pwd指令 3.cd指令 3.1 cd使用实例 4.touch指令 4.1touch使用实例 5.mkdir指令 5.1mkdir使用实例 6.rmdir指令和rm指令 6.1 rmdir指令使用实例->: 6.2 rm指令使用实例 7.man指令 8.cp指令 8.1 cp 使用实例 9.mv指令 9.1mv使用…...
linux下自旋锁(spin_lock)
文章目录 Linux自旋锁:单核与多核环境下的实现差异与核心原理 🖥️🔒一、自旋锁的核心特性 ⚙️🎯 适用场景: 二、单核环境下的自旋锁实现 🛑1. **实现原理** 🔄2. **关键代码解析** Ǵ…...
【华为OD机考】2024E+D卷真题【完全原创题解 详细考点分类 不断更新题目 六种主流语言Py+Java+Cpp+C+Js+Go】
可上 欧弟OJ系统 练习华子OD、大厂真题 绿色聊天软件戳 oj1441了解算法冲刺训练(备注【CSDN】否则不通过) 文章目录 相关推荐阅读模拟 数学排序字符串基础数组基础系统设计蒙特卡洛模拟其他 栈 常规栈单调栈 队列(题目极少,几乎不…...
VirtualBox虚拟机转VM虚拟机
前言:部分靶机只适用于VirtualBox,VM打不开VirtualBox的文件,所以需要进行转换 前置条件:本机已经下载VM和VirtualBox 第一步:文件转换 找到VirtualBox.exe所在位置,启动cmd窗口 文件转换的命令…...
UE5设置打开新窗口默认停靠在主窗口
打开引擎所在位置 找到路径 ...\UE_5.5\Engine\Config 找到 BaseEditorPerProjectUserSettings.ini 文件 打开后CtrlF搜索 [/Script/UnrealEd.EditorStyleSettings] 在末尾添加一行 AssetEditorOpenLocationMainWindow 保存即可,之后的项目都是默认主窗口打开...
vi常见操作命令
vi(Visual Editor)是Linux和Unix系统中广泛使用的文本编辑器,它以其高效、强大的功能深受程序员和系统管理员的喜爱。这个“常用vi命令集合.zip”压缩包包含了一份详细记录了vi编辑器常用命令的文档“常用vi命令集合.doc”。下面,…...
AIGC和搜索引擎的异同
AIGC(生成式人工智能)与搜索引擎的核心差异体现在信息处理方式和输出形态上,我们可以从以下维度对比: 一、工作原理的本质差异 信息检索机制 搜索引擎:基于关键词匹配(如"中暑怎么办"→返回相关…...
【ATXServer2】Android无法正确显示手机屏幕
文章目录 现象原因分析与解决排查手机内部minicap 解决minicap问题查看移动端Android SDK版本查看minicap支持版本单次方案多次方案 现象 原因分析与解决 由于atxserver2在与Android动终端的链接过程中使用了agent:atxserver2-android-provider,按照项目…...
fps项目总结:动画蓝图
文章目录 状态不同状态的并存性。 状态 不同状态的并存性。...
Trae:国内首款AI原生IDE,编程效率大提升
今年一月,在新闻上看到字节跳动面向海外市场推出了一款名为Trae的AI集成开发环境(IDE)。起初,我并未给予过多关注,因为市面上已有不少IDE集成了AI插件,功能也非常全面,而字节跳动自家的MarsCode…...
《深度学习进阶》第8集:多模态学习与跨领域融合**
第8集:多模态学习与跨领域融合 在深度学习的浪潮中,单模态模型(如仅处理图像或文本的模型)已经取得了令人瞩目的成就。然而,随着人工智能应用场景的复杂化和多样化,多模态学习逐渐成为研究和应用的热点。多…...
大模型在败血症预测及围手术期管理中的应用研究报告
目录 一、引言 1.1 研究背景与意义 1.2 研究目的与创新点 1.3 研究方法与数据来源 二、败血症概述 2.1 定义与流行病学 2.2 病因与发病机制 2.3 临床表现与诊断标准 2.4 并发症与危害 三、大模型技术原理及在医疗领域的应用 3.1 大模型技术概述 3.2 大模型在医疗领…...
Hadoop架构详解
Hadoop 是一个开源的分布式计算系统,用于存储和处理大规模数据集。Hadoop 主要由HDFS(Hadoop Distributed File System)、MapReduce、Yarn(Jobtracker,TaskTracker)三大核心组件组成。其中HDFS是分布式文件…...
【操作系统】文件
文件 一、文件的概念二、文件目录2.1 FCB2.2 目录结构2.2.1 单机目录2.2.2 两级目录2.2.3 树形目录结构2.2.4 无环图目录结构 三、文件的逻辑结构和物理结构3.1 文件的逻辑结构3.1.1 顺序文件3.1.2 索引文件3.1.3 索引顺序文件 3.2 文件的物理结构3.2.1 连续分配3.2.2 隐式链接…...
我的ChatGPT怎么登不上?
近期,不少用户反馈在使用ChatGPT时遇到登录困难、连接超时等问题。本文将从技术角度分析常见原因,并提供合规、安全的解决方案,同时结合开发者实际需求推荐实用工具,助您高效应对登录障碍。 ChatGPT登录失败的常见原因 网络环境限…...
实时金融信息搜索的新突破:基于大型语言模型的智能代理框架
“An Agent Framework for Real-Time Financial Information Searching with Large Language Models” 论文地址:https://arxiv.org/pdf/2502.15684 摘要 在金融决策过程中,需要处理海量的实时信息以及复杂的时序关系。然而,传统的搜索引擎在…...
Linux服务器Ubuntu系统环境中安装Jupyter Notebook并且配置内核以便在网页端调用
一、前提 在使用终端访问,并且个人目录下已创建环境。如果还不知道创建环境和安装包,请参考之前文章 机器学习模型算法代码需要在环境中安装的库和包 二、安装相关库Jupyter Notebook 使用pip 或 conda指令安装,确保服务器上安装了 Python …...
Magic 1-For-1: 在一分钟内生成一分钟视频片段(基于Python实现,视频生成模型)
一、前言 文章所有代码都使用Python实现,并且可以分享开源,文章末尾联系博主或者往期文章末尾联系,欢迎探讨学习分享专业领域前言研究和技术分享。 二、摘要 在本技术报告中,我们介绍了 Magic 1-For-1 (Magic141&#…...
基于RK3588的重症监护信息系统应用解决方案
重症监护信息系统是医院临床信息系统的重要组成部分,也是医院信息化建设的重要组成部分。通过集成化的电子病历、实时监测、决策支持等功能,提高重症患者的诊疗效率和质量。 图片来源于网络 重症监护信息系统主要由数据信息采集单元、信息处理单元、通信…...