Tina SDK Linux Kernel 基本使用(实战篇:为7寸RGB LCD触摸屏添加驱动支持).md

news2026/5/4 4:02:31
Tina SDK Linux Kernel 基本使用实战篇为7寸RGB LCD触摸屏添加驱动支持本文基于全志Tina-SDK以100ASK-7 RGB LCD触摸屏为例手把手带你完成从硬件原理图分析、设备树修改、内核模块配置到最终打包烧录与验证的完整流程。你将学会如何为嵌入式Linux系统添加一个全新的硬件外设掌握I2C/Input子系统驱动的实践方法。这是嵌入式Linux驱动开发的经典案例学会它你就能举一反三添加任何挂载在I2C总线上的设备。本文最全比文档文档史上无敌最详细。文章目录Tina SDK Linux Kernel 基本使用实战篇为7寸RGB LCD触摸屏添加驱动支持 本任务的学习目标和重点掌握程度一、项目背景我们要做什么⭐ 了解即可二、内核源码与设备树文件的位置⭐⭐⭐ 必须掌握2.1 内核源码目录2.2 板级配置文件目录⭐⭐⭐⭐ 核心操作区三、设备树修改详解⭐⭐⭐ 必须掌握3.1 解析硬件原理图3.2 确定TWI总线编号3.3 添加TWI2引脚复用配置⭐⭐⭐ 必须掌握3.4 配置TWI2总线并添加触摸屏设备节点⭐⭐⭐ 必须掌握3.5 检查引脚冲突⭐⭐ 重点掌握3.6 Tina SDK中设备树的编译机制⭐⭐ 重点掌握四、内核模块配置⭐⭐⭐ 必须掌握4.1 为什么不能只用 make kernel_menuconfig4.2 TinaSDK的模块管理机制 modules.mk⭐⭐⭐ 必须掌握4.3 在Tina配置中选中GT911模块⭐⭐⭐ 必须掌握五、编译、打包与烧录⭐⭐ 重点掌握5.1 编译内核5.2 打包固件5.3 烧录固件六、验证触摸功能⭐⭐⭐ 必须掌握6.1 检查驱动模块是否加载成功6.2 定位触摸屏对应的event节点6.3 原始数据测试⭐⭐ 重点掌握6.4 常见问题排查问题1Error: Driver gt9xxnew_ts is already registered问题2I2C通信超时Timeout when sending 9th SCL clk问题3设备树节点修改后不生效6.5 使用 evtest 工具进行进阶测试⭐ 了解即可七、功能拓展添加新的I2C设备触类旁通八、面试官提问环节必考第1问如何排查I2C设备如触摸屏通信故障第2问make kernel_menuconfig 和 make menuconfig 在TinaSDK中有什么区别第3问修改设备树后触摸屏不工作请给出排查思路。九、总结 本任务的学习目标和重点掌握程度为了帮助你在实际工作中遇到类似任务时清楚地知道每一步要做什么同时也方便领导考核时清晰了解你的技能水平我们对本任务涉及的每个知识点进行了重要程度分级分级图标含义工作要求必须掌握⭐⭐⭐独立作业考核核心能不看文档独立完成领导要求你必须做到且会重点检查重点掌握⭐⭐了解原理能按文档完成理解原理出现问题知道去哪里排查了解即可⭐知道概念能复述面试能说清楚不用实际动手做作为初学者重点掌握“必须掌握”⭐⭐⭐的内容这是你入门嵌入式Linux驱动的基石。“重点掌握”⭐⭐的内容为辅帮助你构建完整的知识体系。“了解即可”的部分供你开阔眼界后续再深入学习。一、项目背景我们要做什么⭐ 了解即可在嵌入式Linux开发中为开发板添加LCD触摸屏支持是最常见的任务之一。本文将指导你为100ASK_T113s3-Pro开发板添加7寸1024x600分辨率RGB LCD触摸屏的驱动支持。屏幕模块详细信息如下项目规格模组型号100ASK-7RGB LCD-V1.2分辨率1024 x 600触摸芯片汇顶科技GT911 (Goodix GT9xx系列)通信接口I2C全志平台称为TWI即Two-Wire Interface数据手册T113-s3_datasheet_v1.6.pdf第41页触摸屏工作原理简述触摸ICGT911通过I2C总线与主控芯片T113通信当手指触摸屏幕时触摸IC会通过中断引脚通知主控主控通过I2C读取触摸坐标数据并通过Linux的Input子系统上报给上层应用。整个适配过程分为三大步骤编写/修改设备树文件告诉内核硬件如何连接I2C总线、中断引脚、复位引脚等配置内核模块让内核包含GT911驱动编译、烧录与验证生成系统镜像验证触摸功能是否正常工作二、内核源码与设备树文件的位置⭐⭐⭐ 必须掌握在Tina-SDK中与Linux内核相关的代码和配置文件主要分布在以下位置2.1 内核源码目录内容路径快捷命令Linux内核源码lichee/linux-5.4/ckernel内核设备树目录lichee/linux-5.4/arch/arm/boot/dts/cdts父级芯片设备树lichee/linux-5.4/arch/arm/boot/dts/sun8iw20p1.dtsi-sun8iw20p1.dtsi是整个T113芯片的基础设备树文件定义了芯片内置的所有硬件模块I2C/TWI、SPI、UART、GPIO等。我们后续需要在board.dts中引用并配置这些模块。在Tina-SDK中内核源码位于lichee/linux-5.4。为了方便切换目录SDK提供了几个实用的快捷命令前提是已经执行过source build/envsetup.shbash# 切换到内核源码根目录 ckernel # 切换到内核设备树目录arch/arm/boot/dts cdts2.2 板级配置文件目录⭐⭐⭐⭐ 核心操作区这是Tina SDK特有的板级配置文件位置与内核源码分开存放内容路径快捷命令板级设备树device/config/chips/t113/configs/100ask/board.dtsccconfigs板级内核配置device/config/chips/t113/configs/100ask/linux/config-5.4-环境变量配置device/config/chips/t113/configs/100ask/env.cfg-U-Boot设备树device/config/chips/t113/configs/100ask/uboot-board.dts-通过执行ccconfigs可以直接切换到板级配置文件目录。重要说明Tina-SDK将板级配置与内核源码分离这样可以实现一份内核源码适配多个不同硬件板子。这种分离设计的好处是当我们更换开发板或为不同项目定制功能时只需要修改板级配置目录下的文件而内核源码本身可以保持不变。更便于管理和维护。bash# 进入板级配置目录 ccconfigs ls # board.dts config-5.4 config-5.4-mem-optimize特别注意board.dts是一个软链接它实际指向linux-5.4/board.dts。因此我们实际要修改的文件是linux-5.4/board.dtsbashccconfigs cd linux-5.4 ls # board.dts config-5.4 config-5.4-mem-optimize⛔ 重要警告 ⛔make menuconfig和make kernel_menuconfig是完全不同的两个东西命令作用配置保存位置make kernel_menuconfig配置Linux内核选项临时执行make clean后会丢失make menuconfig配置Tina系统的软件包选项永久配置会保存在.config中make menuconfig→Kernel modules在Tina层面选择需要的内核模块永久通过modules.mk机制生效⭐ 重点掌握记住这个区别避免你配置完后一清理环境配置全丢了三、设备树修改详解⭐⭐⭐ 必须掌握3.1 解析硬件原理图根据100ASK-7RGB LCD-V1.2的硬件原理图触摸屏相关的接口如下原理图引脚标号T113对应引脚功能说明CTP_INTPE1触摸中断信号触摸屏有数据时通知主控CTP_RSTPE0触摸复位信号控制触摸IC复位RPI_SCLPE12I2C时钟线RPI_SDAPE13I2C数据线3.2 确定TWI总线编号通过查看数据手册T113-s3_datasheet_v1.6.pdf第41页确认PE12和PE13引脚的功能复用表如下引脚功能选项说明PE12Function 2 twi2 USB …说明PE12可作为TWI2的SCLPE13Function 2 twi2 USB …说明PE13可作为TWI2的SDA因此我们可以确定触摸屏使用的是TWI2总线全志平台称I2C为TWI。3.3 添加TWI2引脚复用配置⭐⭐⭐ 必须掌握打开设备树文件device/config/chips/t113/configs/100ask/linux-5.4/board.dts找到pio节点在其中添加twi2的引脚复用配置cpio { // ... 其他配置保持原有内容不动 // ⭐ 添加 TWI2 引脚复用定义 twi2_pins_a: twi20 { pins PE12, PE13; function twi2; // 将PE12、PE13复用为TWI2功能 drive-strength 10; // 驱动能力10mA }; twi2_pins_b: twi21 { pins PE12, PE13; function gpio_in; // 休眠时将引脚还原为通用GPIO输入模式 }; // ... 其他配置保持原有内容不动 };参数解释pins指定要配置的物理引脚名称。function指定引脚的功能模式twi2代表I2C总线的功能复用gpio_in代表通用输入GPIO模式用于系统休眠时节省功耗。drive-strength指定引脚的驱动电流能力数值越高驱动能力越强适合外围设备较远的场景10是一个常见的中间值。用pio这个节点是T113芯片的通用引脚控制器节点定义了所有引脚的复用模式和电气属性。为什么需要两组配置一个用于正常运行模式default一个用于休眠模式sleep系统可以在两者之间动态切换。3.4 配置TWI2总线并添加触摸屏设备节点⭐⭐⭐ 必须掌握在board.dts文件的末尾或合适位置添加twi2节点配置ctwi2 { clock-frequency 400000; // I2C总线时钟400KHz pinctrl-0 twi2_pins_a; // 正常工作时使用twi2_pins_a配置 pinctrl-1 twi2_pins_b; // 休眠时切换到twi2_pins_b配置 pinctrl-names default, sleep; // 定义两组配置的名称 dmas dma 45, dma 45; // DMA通道配置可选 dma-names tx, rx; status okay; // 启用此I2C总线 // 触摸屏设备节点 (I2C从设备) ctp14 { compatible allwinner,goodix; // 匹配驱动中的名称重要 device_type ctp; // 设备类型电容触摸屏 reg 0x14; // I2C设备地址7位地址 status okay; /* GT9xx 触摸芯片配置参数 */ ctp_name gt9xxnew_ts; // 驱动模块名称 ctp_twi_id 0x2; // 所属TWI总线编号TWI2 ctp_twi_addr 0x14; // 设备地址与reg一致 /* 屏幕触摸范围配置 */ ctp_screen_max_x 0x400; // X轴最大坐标 0x400 1024 ctp_screen_max_y 0x258; // Y轴最大坐标 0x258 600 ctp_revert_x_flag 0x0; // X轴不翻转0不翻转 ctp_revert_y_flag 0x0; // Y轴不翻转 ctp_exchange_x_y_flag 0x0; // XY坐标不交换 /* 引脚配置⭐ 关键 */ ctp_int_port pio PE 1 GPIO_ACTIVE_HIGH; // 中断引脚PE1高电平有效 ctp_wakeup pio PE 0 GPIO_ACTIVE_HIGH; // 唤醒/复位引脚PE0 }; };注意GT911的I2C设备地址可以是0x14或0x5d这由复位引脚的上电时序决定。本次适配使用0x14。3.5 检查引脚冲突⭐⭐ 重点掌握在添加新设备节点时务必检查新使用的引脚是否已经被其他功能占用。引脚冲突是新手最容易犯的错误之一往往导致驱动加载失败。本次使用的引脚情况引脚本任务用途潜在冲突解决方法PE12 / PE13TWI2可能被其他I2C设备使用可以通过全局搜索grep -r PE12 device/检查是否有其他设备配置了这些引脚若有则需协调。3.6 Tina SDK中设备树的编译机制⭐⭐ 重点掌握在TinaSDK中设备树无法单独编译它会与U-Boot、optee等一起打包到最终镜像中。你必须在TinaSDK根目录下执行make或mkernel命令系统才会自动编译设备树。因此任何设备树的修改都需要完整编译系统或至少重新编译内核然后重新打包镜像才能生效。四、内核模块配置⭐⭐⭐ 必须掌握4.1 为什么不能只用make kernel_menuconfig很多初学者会在内核源码目录执行make kernel_menuconfig配置完发现执行make clean后配置丢失了。这是因为在TinaSDK框架中内核的最终配置文件是由多个部分动态合并而成的target/allwinner/generic/config-5.4通用配置device/config/chips/t113/configs/100ask/linux/config-5.4板级配置其他依赖关系直接修改内核的.config文件会在下次合并时被覆盖。4.2 TinaSDK的模块管理机制modules.mk⭐⭐⭐ 必须掌握TinaSDK为每个内核模块在target/allwinner/t113-common/modules.mk中预定义了Kconfig配置项。打开该文件可以看到GT911驱动的定义makefiledefine KernelPackage/touchscreen-gt9xxnew SUBMENU:$(INPUT_MODULES_MENU) TITLE:gt9xxnew support DEPENDS:kmod-input-core KCONFIG: \ CONFIG_INPUT_TOUCHSCREENy \ CONFIG_TOUCHSCREEN_GT9XXNEW_TSy \ ... (其他相关配置) FILES: \ $(LINUX_DIR)/drivers/input/touchscreen/gt9xxnew/gt9xxnew_ts.ko AUTOLOAD:$(call AutoProbe,gt9xxnew_ts) endef这个机制的好处是TinaSDK已经帮我们把GT911驱动的依赖关系和编译规则都处理好了我们只需要像选择普通软件包一样选中它即可。4.3 在Tina配置中选中GT911模块⭐⭐⭐ 必须掌握正确的做法是在TinaSDK根目录执行make menuconfig然后通过Kernel modules→Input modules找到触摸屏相关选项textTina Configuration └─ Kernel modules └─ Input modules └─ kmod-touchscreen-gt9xxnew --- GT9xxnew touchscreen driver按Y键选中此项变为*。然后用方向键移动到最下方的Save保存配置再选择Exit退出。配置成功后稍后执行make时系统会自动编译此模块。补充说明如果你需要修改具体的内核源码如修改驱动代码中的坐标算法仍然需要进入make kernel_menuconfig进行调试但那只是为了测试正式的配置最终还是要在Tina的make menuconfig中固化下来。五、编译、打包与烧录⭐⭐ 重点掌握5.1 编译内核bash# 1. 加载SDK环境 source build/envsetup.sh # 2. 选择开发板配置t113_100ask-tina lunch # 输入数字选择 4 # 3. 编译内核首次或修改内核配置后 mkernel或者直接执行make编译整个系统包括U-Boot、内核、Rootfs等。5.2 打包固件bashpack打包过程中会看到如下输出text... Add partition rootfs.fex ROOTFS_FEX... BuildImg 0 Dragon execute image.cfg SUCCESS! ---image is at--- /home/ubuntu/tina-d1-h/out/t113-100ask/tina_t113-100ask_uart3.img pack finish5.3 烧录固件使用ls -lh命令查看生成的镜像大小确认文件完整后将其复制到Windows系统bashls -lh /home/ubuntu/tina-d1-h/out/t113-100ask/tina_t113-100ask_uart3.img使用PhoenixSuit线刷工具将镜像烧录到开发板的SPI NAND Flash中。六、验证触摸功能⭐⭐⭐ 必须掌握6.1 检查驱动模块是否加载成功系统启动后首先检查内核日志中是否有GT911驱动加载信息bashdmesg | grep -i gt9\|touch您应该能看到类似这样的信息text[ 4.500239] gt9xxnew_ts 2-0014: 2-0014 supply ctp not found, using dummy regulator [ 4.717746] input: gt9xxnew_ts as /devices/virtual/input/input2input: gt9xxnew_ts as /devices/virtual/input/input2这一行表示触摸屏驱动注册成功并创建了input设备节点/dev/input/event2。注意supply ctp not found只是一个警告提示没有为触摸屏单独配置电源管理不影响触摸功能。6.2 定位触摸屏对应的event节点如果系统中有多个input设备键盘、鼠标、触摸屏等可以通过查看/proc/bus/input/devices文件来确定每个设备对应的event节点bashcat /proc/bus/input/devices找到Namegt9xxnew_ts的段落查看其H行HandlerstextI: Bus0018 Vendordead Productbeef Version28bb N: Namegt9xxnew_ts P: PhysA-P S: Sysfs/devices/virtual/input/input2 U: Uniq H: Handlersevent2 B: PROP2 B: EVb B: KEY400007f8000100000000 B: ABS26500000H: Handlersevent2表示该触摸屏对应的设备节点是/dev/input/event2。进阶技巧如果你在编译内核时已经配置好TSLIB触摸屏校准库也可以直接运行ts_test进行可视化测试。后续可以深入学习本节内容的【进阶内容】。6.3 原始数据测试⭐⭐ 重点掌握使用cat命令直接读取event节点可以快速验证触摸屏硬件是否正常工作bashcat /dev/input/event2用手指触摸屏幕终端上会出现二进制乱码输出代表有数据上报。现象结论cat /dev/input/eventX出现乱码输出手触摸时触摸屏工作正常 ✅cat /dev/input/eventX无反应触摸屏未工作需排查 ❌6.4 常见问题排查问题1Error: Driver gt9xxnew_ts is already registered现象insmod时报错该驱动已注册。原因驱动已被编译进内核或已被加载。解决方法直接使用modprobe或确认设备树配置即可无需重复加载。问题2I2C通信超时“Timeout when sending 9th SCL clk”现象系统启动时dmesg出现重复的I2C传输超时错误。原因I2C设备地址错误、引脚配置冲突、供电问题或设备未正确复位。排查步骤检查reg 0x14是否与硬件实际地址一致尝试0x5d。检查引脚是否正确PE0对应GPIO_ACTIVE_HIGH确保复位时序正确。检查pins和function是否与硬件原理图一致。检查系统启动日志中引脚复用是否有冲突。问题3设备树节点修改后不生效原因在TinaSDK中设备树无法单独编译必须重新打包整个镜像。解决方法修改设备树后务必执行make或mkernel重新编译然后执行pack打包最后重新烧录完整镜像。6.5 使用evtest工具进行进阶测试⭐ 了解即可如果需要获取更详细的上报数据坐标值、压力值等可以安装evtest工具bash# 在开发板上运行 evtest /dev/input/event2运行后会显示触摸屏的详细信息坐标范围、分辨率等并实时输出触摸事件数据非常适合调试坐标是否正确、是否反向等问题。七、功能拓展添加新的I2C设备触类旁通掌握了为TWI2添加GT911触摸屏的方法后你可以轻松地为项目添加任何I2C设备如传感器、时钟芯片等。模板如下ctwix { // x 为TWI总线编号 clock-frequency 400000; pinctrl-0 twix_pins_a; pinctrl-1 twix_pins_b; pinctrl-names default, sleep; status okay; new_devicexx { // xx 为设备地址 compatible vendor,device-name; reg xx; // 根据设备驱动要求添加其他属性 status okay; }; };添加步骤确定设备使用的I2C总线编号如TWI1、TWI2。在pio节点中添加引脚复用配置。在对应的twix节点下添加设备子节点。根据设备驱动文档填充设备树属性。配置内核模块如有需要。编译、打包、烧录并验证。修改设备树时每次修改后都需要pack打包整个镜像才能生效。建议将所有I2C设备集中在同一个twix节点下管理便于维护。八、面试官提问环节必考第1问如何排查I2C设备如触摸屏通信故障参考答案排查I2C故障按照以下步骤逐一检查硬件层面用万用表检查供电、SCL/SDA上拉电阻是否正常。引脚配置用dmesg | grep pinctrl检查引脚复用是否正确。I2C通信测试用i2cdetect -y bus号扫描设备地址确认设备是否应答。检查内核日志用dmesg | grep -i i2c\|error查找通信错误如NACK、超时等。检查地址配置确认设备树中的reg属性与硬件实际地址一致GT911常见地址为0x14或0x5d。检查复位时序确认复位引脚ctp_wakeup的上电时序满足芯片要求。第2问make kernel_menuconfig和make menuconfig在TinaSDK中有什么区别参考答案两者作用完全不同命令作用配置保存位置是否永久make kernel_menuconfig配置Linux内核选项临时.config❌ 不永久make clean后丢失make menuconfig配置Tina系统软件包选项Tina.config✅ 永久make menuconfig→Kernel modules在Tina层面选择内核模块通过modules.mk机制✅ 永久第3问修改设备树后触摸屏不工作请给出排查思路。参考答案检查硬件连接确认FPC排线是否插好触摸屏模块供电是否正常。检查设备树引脚配置确认twi2_pins_a中指定的引脚与实际原理图一致PE12/PE13。确认function值是否正确twi2。检查I2C通信执行i2cdetect -y 2扫描TWI2总线确认地址0x14是否出现UU表示设备已注册且有驱动。检查内核日志执行dmesg | grep -i gt9\|error查找驱动加载失败原因。检查地址冲突确认reg地址与设备实际地址一致GT911可能是0x14或0x5d。检查电源触摸屏模块是否需要独立的电源引脚若需要确认设备树中是否已配置。确认工作流程修改设备树后必须执行pack重新打包不能仅替换设备树文件。九、总结本文带你完整走了一遍在Tina-SDK中为7寸1024x600 RGB LCD触摸屏添加驱动支持的流程包括✅ 硬件原理图分析与引脚对应关系确定✅ 设备树修改引脚复用配置 TWI总线配置 触摸设备节点添加✅ 内核模块配置TinaSDK的make menuconfig用法✅ 编译、打包与烧录✅ 触摸功能验证与问题排查✅ 扩展知识为其他I2C设备添加支持的方法这套流程是嵌入式Linux驱动开发的通用方法掌握它你就能触类旁通为任何硬件外设添加Linux驱动支持。下一步学习建议学习Linux I2C子系统和Input子系统的驱动框架。熟悉Linux设备树的语法属性、节点、引用等。尝试修改GT911驱动源码如调整坐标上报算法或增加手势识别功能。进一步学习TSLIB触摸屏校准工具的使用。学习阶段任务⭐ 入门跟着本文做一遍在自己板子上成功点亮触摸屏⭐⭐ 进阶尝试为其他I2C设备如温湿度传感器添加驱动支持⭐⭐⭐ 高级阅读GT911驱动源码理解input子系统数据上报流程祝你学得扎实考核稳过

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2580446.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…