• 发文章

  • 发资料

  • 发帖

  • 提问

  • 发视频

创作活动
0
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
返回

电子发烧友 电子发烧友

  • 全文搜索
    • 全文搜索
    • 标题搜索
  • 全部时间
    • 全部时间
    • 1小时内
    • 1天内
    • 1周内
    • 1个月内
  • 默认排序
    • 默认排序
    • 按时间排序
  • 全部板块
    • 全部板块
大家还在搜
  • 15W/30W 双模式 30W 强输出 + 92% 转换效率 内置 10A MOSFET FP6296 升压芯片详情

    FP6296 是高性能升压 DC-DC 芯片,输入 2.7-12V、输出最高 13V,单节锂电输出 15W、双节可达 30W。具备多重保护与低待机功耗,适配便携风扇、电推剪、蓝牙音响等设备,是紧凑大功率场景的优质选择。 核心参数 功率:单节锂电 15W(5V/3A),双节锂电 30W(12V/2.5A)。 输入输出:输入 2.7-12V,输出最高 13V 且可调。 关键特性:内置低阻 MOSFET,支持过流过温保护,待机功耗低至 0.1μA。 应用领域 消费电子:蓝牙音响、K 歌宝、移动电源。 便携设备:手持风扇、宠物美容电推剪、穿戴式散热设备。 工业 / 户外:小型涡轮风扇、大功率桌面风扇。 规格书:

    2025-12-31 15:06

  • 帮忙解答 /data /sdcard 挂载失败是什么问题?

    帮忙解答 /data/sdcard 挂载失败是什么问题?

    2025-12-31 14:52

  • NORDIC的NPM1304电源管理芯片优势在哪里

    nPM1304 的核心优势是超低功耗精密电量计 + 高集成系统管理 + 极致休眠 / 运输功耗 + 多轨高效供电 + Nordic 生态深度协同,专为智能戒指、体传感器、手写笔等小电池 / 空间受限 IoT 场景设计,单芯片替代 5 + 分立器件,BOM 与 PCB 成本显著降低,续航与可靠性同步提升Nordic Semiconductor。以下是结构化解析: 一、核心优势总览(5 大支柱)[td]优势维度核心表现实际价值 超低功耗精密电量计基于模型算法,≤8μA 实现库仑计级精度,睡眠功耗为零,无误差累积Nordic Semiconductor小电池设备免额外电量计,长期稳定显示剩余电量,密封产品更友好 极致休眠与运输功耗运输模式 370nA、休眠模式 500nA,比同类低 1–2 个数量级Nordic Semiconductor仓储 / 长期待机损耗极小,延长电池寿命,降低库存维护成本 高效多电源轨管理2 路 200mA Buck+2 路 50mA LDO/100mA 负载开关,1.0–3.3V 精细调压,USB‑C 兼容Nordic Semiconductor分级供电兼顾效率与噪声,动态调压进一步降功耗,适配 SoC + 外设混合供电 高集成系统管理系统看门狗、启动失败恢复、电源故障警告、单 / 双按钮硬复位、5 路 GPIO+3 路 LED 驱动器Nordic Semiconductor减少外部复位 / 监控芯片,提升可靠性,简化人机交互与状态指示设计 生态与集成适配与 nRF 系列 SoC 深度协同,nRF Connect SDK 原生支持,WLCSP 封装缩小 PCB 面积,BOM 减约 30%开发更快、成本更低、空间更省,从原型到量产无缝衔接 二、分维度详细说明 超低功耗精密电量计(核心壁垒) 算法与功耗:融合电压 / 电流 / 温度监测 + 数学电池模型,活动功耗≤8μA(传统库仑计约 50μA),睡眠功耗为零,无累计误差Nordic Semiconductor。 应用适配:支持 4–100mA 充电电流,适配小型锂离子 / 锂聚合物 / 磷酸铁锂电池,解决小电池电量不准与功耗矛盾Nordic Semiconductor。 实用价值:密封设备无需拆机校准,用户长期看到稳定电量显示,提升产品口碑。 极致休眠与运输功耗(续航关键) 运输模式 370nA、休眠模式 500nA,通过充电、按键或断电唤醒,适合长期仓储与海运场景Nordic Semiconductor。 比同类 PMIC 低 1–2 个数量级,显著降低非使用阶段的电池损耗,延长货架与待机时间。 高效多电源轨管理(供电灵活) 2 路 200mA Buck(效率≥90%)负责核心 SoC 供电,2 路可配置为 50mA LDO(低噪声)或 100mA 负载开关(快速关断),覆盖分级供电需求Nordic Semiconductor。 1.0–3.3V 精细调压,支持动态电压缩放(DVS),配合 SoC 降频进一步降低系统功耗。 USB‑C 兼容输入,支持 4.0–5.5V 电压与 22V 瞬态耐压,功率路径管理确保充电与供电无缝切换。 高集成系统管理(可靠性与 BOM 优化) 内置系统级看门狗、启动失败恢复、电源故障警告,防止主机死机或启动异常,提升产品稳定性Nordic Semiconductor。 单 / 双按钮硬复位,适配用户长按重启需求,无需外部复位芯片Nordic Semiconductor。 5 路 GPIO+3 路 LED 驱动器,支持运输 / 休眠模式触发、状态指示与人机交互,减少外部 GPIO 扩展与 LED 驱动器件Nordic Semiconductor。 生态与集成适配(开发与成本优势) 与 nRF52/nRF53 系列 SoC 深度协同,nRF Connect SDK 原生支持,PowerUP GUI 可视化配置,开发周期缩短 20%+。 封装选择:WLCSP(1.65×1.65mm)与 QFN,缩小 PCB 面积,适合可穿戴等空间受限产品。 BOM 优化:单芯片替代充电器、电量计、LDO、复位 / 监控芯片等,元件减少约 30%,降低成本与设计复杂度Nordic Semiconductor。 三、与同类方案的关键差异 相比传统 PMIC + 外置电量计:功耗降低 80%+,无误差累积,BOM 少 1–2 颗芯片,成本与空间更优Nordic Semiconductor。 相比其他集成电量计 PMIC:运输 / 休眠功耗更低,系统管理功能更全(启动失败恢复、双按钮硬复位),Nordic 生态适配更友好Nordic Semiconductor。 相比专用电量计 + 分立电源:单芯片集成度更高,开发更简单,适合小批量快速量产Nordic Semiconductor。 四、典型应用与价值 智能戒指 / 手环:小电池 + 密封设计,电量计与超低功耗兼顾,延长续航与仓储寿命。 体传感器 / 医疗贴片:多电源轨适配传感器与 SoC,系统管理提升可靠性,WLCSP 缩小植入体积。 智能手写笔 / 遥控器:运输模式降低仓储损耗,按钮硬复位提升用户体验,USB‑C 适配主流充电。

    2025-12-31 14:37

  • 【瑞萨FPB-RA6E2试用】【原创】【瑞萨RA × Zephyr开发板评测】+入门级任务之IIC和SPI测试

    之前完成了入门级部分任务,本次将剩下的IIC和SPI的任务测试完成。 由于没有板载的IIC和SPI设备,所以需要外接设备进行测试,IIC设备外接的是eeprom,型号为AT24C256,SPI接口暂时还没有外接设备进行连接测试,先完成设备树及配置文件的创建,后续待模块到了再接上测试,计划使用的是W25Q64。 AT24C256模块连接如下 IIC通过SCI接口进行操作,eeprom.overlay文件如下: &pinctrl { /* * [信号优化] SCI0 I2C 引脚配置 * 针对 10kΩ 外部上拉电阻的特殊优化 */ sci9_i2c_custom: sci9_i2c_custom { /* * SDA (P109): 配置为开漏 + 内部上拉 */ group_sda { psels = <RA_PSEL(RA_PSEL_SCI_9, 1, 9)>; drive-strength = \"medium\"; bias-pull-up;/* 关键:内部电阻并联外部电阻 */ drive-open-drain;/* 关键:双向通信必须开漏 */ }; /* * SCL (P110): 配置为推挽输出 */ group_scl { psels = <RA_PSEL(RA_PSEL_SCI_9, 1, 10)>; drive-strength = \"medium\"; }; }; }; /* SCI9 模块配置为 I2C 模式 */ &sci9 { status = \"okay\"; pinctrl-0 = <&sci9_i2c_custom>; pinctrl-names = \"default\"; sci9_i2c: i2c { compatible = \"renesas,ra-i2c-sci\"; status = \"okay\"; channel = <0>; clock-frequency = <100000>; /* 100kHz 标准速率 */ #address-cells = <1>; #size-cells = <0>; eeprom0: eeprom@51 { compatible = \"atmel,at24\"; reg = <0x51>; status = \"okay\"; size = <256>; pagesize = <16>; address-width = <8>; timeout = <5>; }; }; }; spi.overlay文件如下: &spi0 { status = \"okay\"; w25q64: w25q64jv@0 { compatible = \"jedec,spi-nor\"; reg = <0>; spi-max-frequency = <80000000>; jedec-id = [ef 40 17]; size = <0x4000000>; has-dpd; t-enter-dpd = <3500>; t-exit-dpd = <3500>; }; }; 配置如下: # iic & eeprom CONFIG_I2C=y CONFIG_I2C_SHELL=y CONFIG_I2C_RENESAS_RA_IIC=y CONFIG_I2C_RENESAS_RA_SCI_B=y #CONFIG_I2C_RENESAS_RA_SCI=y CONFIG_EEPROM=y CONFIG_EEPROM_SHELL=y # spi CONFIG_SPI=y CONFIG_SPI_RENESAS_RA=y CONFIG_SPI_SHELL=y CMakeLists.txt文件修改如下: cmake_minimum_required(VERSION 3.20.0) list(APPEND BOARD_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/) set(BOARD fpb_ra6e2) set(BOARD_FLASH_RUNNER jlink) set(DTC_OVERLAY_FILE \"adc.overlay\" \"dac.overlay\" \"can.overlay\" \"spi.overlay\" \"eeprom.overlay\") find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE}) project(fpb_ra6e2) target_sources(app PRIVATE src/main.c) west build编译后,通过west flash下载至开发板,通过TAB键查看eeprom和spi已经准备好。 可以通过spi进行操作W24Q64,由于没有外接设备,没有回应,如下。 接下来就可以通过eeprom这个节点对AT24C05进行操作,也就是操作IIC接口。 eeprom通过shell操作如下: 测试代码如下 uint8_t wr_data[16] ={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, 0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F}; uint8_t rd_data[16]; printk(\"EEPROM write test\\\\n\"); err = eeprom_write(eeprom, 0, wr_data, 16); if (err) { printk(\"EEPROM write failed (err %d)\", err); return err; } printk(\"EEPROM read test\\\\n\"); err = eeprom_read(eeprom, 0, rd_data, 16); if (err) { printk(\"EEPROM read failed (err %d)\", err); return err; } printk(\"[\"); for (size_t i = 0; i < 16; i++) { printk(\"0x%02x \",rd_data[i]); } printk(\"]\"); 主要实现16字节的读写操作,效果如下 和代码也能对应起来。

    2025-12-31 14:26

  • RDMA设计15:连接管理模块设计2

    本博文主要交流设计思路,在本博客已给出相关博文约100篇,希望对初学者有用。注意这里只是抛砖引玉,切莫认为参考这就可以完成商用IP设计。若有NVME或RDMA 产品及项目需求,请看B站视频后联系。 (1) 建立连接流程 在 CONNECT 状态下,读取一条连接信息缓存中的指令信息,同时判断指令信息中的会话 ID 是否在会话管理池中存在。如会话 ID 不存在,则继续进行建立连接流程,并组装 CM 连接请求包,跳转至 CON_SEND_REQ 状态;如果会话 ID 已存在,则状态跳转至 IDLE 并返回错误信息。在 CON_SEND_REQ 状态下,组装好的 CM 连接请求包将被逐帧发送至 RoCEv2 发送模块,在其发送完毕后状态跳转至 CON_WAIT_REP 状态。 在 CON_WAIT_REP 状态下,状态机等待来自远程主机的连接回复包,当收到回复包后,解析该回复包。如果远程主机同意连接,则跳转至 CON_SEND_RTU 状态;如果远程主机拒绝连接或等待超时,则跳转至 IDLE 状态并返回错误信息。在 CON_SEND_RTU 状态下,状态机组装并逐帧发送 CM 就绪使用包(Ready toUse)至 RoCE v2 发送模块,状态跳转至 DONE 状态,建立连接流程结束。 (2)断开连接流程 在 DISCONNECT 状态下,状态机读取一条连接信息缓存中的指令信息,同时判断指令信息中的会话 ID 是否在会话管理池中存在。如会话 ID 已存在,则断开连接流程继续,组装 CM 断链请求包,跳转至 DISCON_SEND_REQ 状态;如果会话 ID 不存在,则状态跳转至 IDLE 并返回错误信息。在 DISCON_SEND_REQ 状态下,状态机组装 CM 断开连接请求包并逐帧发送至RoCE v2 发送模块,而后跳转至 DISCON_WAIT_REP 状态。 在 DISCON_WAIT_REP 状态下,状态机等待来自远程主机的断开连接回复包,当 收 到 回 复 包 后 , 解 析 该 回 复 包 。 如 果 远 程 主 机 同 意 断 开 连 接 , 则 跳 转 至DISCON_WAIT_REQ 状态;如果远程主机拒绝断开连接或等待超时,则跳转至 IDLE状态并返回错误信息。 在 DISCON_WAIT_REQ 状态下,状态机等待来自远程主机的断开连接请求包,当收到请求包后,解析该请求包并跳转至 DISCON_SEND_REP 状态,如果等待超时,则跳转至 IDLE 状态并返回错误信息。 在 DISCON_SEND_REP 状态下,状态机组装 CM 断开连接回复包并逐帧发送至RoCE v2 发送模块,而后跳转至 DONE 状态,断开连接流程结束。会话管理池在系统复位时被清空,在建立连接结束后写入会话 ID,在断开连接结束后清除对应的会话 ID。由于实际应用中,交换机接口数量有限,故将会话管理池深度设置为 64,足以满足常见应用场景下的性能要求. B站已给出相关性能的视频,如想进一步了解,请搜索B站用户:专注与守望 https://www.bilibili.com/video/BV1mPV5eCE8z/?spm_id_from=333.337.search-card.all.click&vd_source=c355545d27a44fe96188b7caefeda6e7

    2025-12-31 14:23

  • 【瑞萨FPB-RA6E2试用】【原创】【瑞萨RA × Zephyr开发板评测】+进阶级任务测试之CAN发送数据测试

    前面进行了入门级任务的测试,本次进行进阶级任务之中的CAN发送数据的测试。 由于板载没有can接口,所以需要外接can收发器转接板,如下图: 测试还需要CAN分析工具,我是用的是广成科技的USBCAN-II C,如下图: 通过查询RA6E2的手册可知CAN接口CRX0的引脚有P102/110/402,CTX0的引脚有P103/109/401。本次使用的是P402 P401这两个引脚。 原理图如下: 分别对应J3的pin2 pin3。通过线缆将开发板,can收发器转接板,CAN分析工具连接好,示意如下: can.overlay文件如下 &pinctrl { canfd0_default: canfd0_default { group1 { /* CRX0 CTX0 */ psels = <RA_PSEL(RA_PSEL_CANFD, 4, 2)>, <RA_PSEL(RA_PSEL_CANFD, 4, 1)>; drive-strength = \"high\"; }; }; }; &port_irq9 { interrupts = <4 12>; }; &canfdclk { clocks = <&pll>; div = <8>; status = \"okay\"; }; &canfd_global { status = \"okay\"; canfd0 { pinctrl-0 = <&canfd0_default>; pinctrl-names = \"default\"; rx-max-filters = <16>; status = \"okay\"; can-transceiver { max-bitrate = <5000000>; }; }; }; 创建CAN发送线程,如下: static void can_tx_thread(void *p1, void *p2, void *p3); K_THREAD_DEFINE(can_tx_task, 512, can_tx_thread, NULL, NULL, NULL,13, 0, 0); 发送线程代码如下: static void can_tx_thread(void *p1, void *p2, void *p3) { ARG_UNUSED(p1); ARG_UNUSED(p2); ARG_UNUSED(p3); printk(\"can_tx_thread\\\\n\"); uint16_t counter = 0; uint8_t toggle = 1; int ret; const struct can_filter change_led_filter = { .flags = 0U, .id = 0x123, .mask = CAN_STD_ID_MASK }; struct can_frame change_led_frame = { .flags = 0, .id = 0x10, .dlc = 8, .data = {1,2,3,4,5,6,7,8} }; struct can_frame counter_frame = { .flags = CAN_FRAME_IDE, .id = 0x20, .dlc = 8, .data = {11,12,13,14,15,16,17,18} }; if (!device_is_ready(can_dev)) { printk(\"CAN: Device %s not ready.\\\\n\", can_dev->name); return ; } #ifdef CONFIG_LOOPBACK_MODE ret = can_set_mode(can_dev, CAN_MODE_LOOPBACK); if (ret != 0) { printk(\"Error setting CAN mode [%d]\", ret); return 0; } #endif ret = can_set_bitrate(can_dev, 500000); // 设置波特率 if (ret != 0) { printk(\"Error set CAN bitrate [%d]\", ret); return ; } ret = can_set_mode(can_dev, 0); // 设定模式为normal mode if (ret != 0) { printk(\"Error set CAN mode [%d]\", ret); return ; } ret = can_start(can_dev); if (ret != 0) { printk(\"Error starting CAN controller [%d]\", ret); return ; } while (1) { //change_led_frame.data[0] = toggle++ & 0x01 ? 1 : 0; /* This sending call is none blocking. */ can_send(can_dev, &change_led_frame, K_FOREVER, tx_irq_callback, \"LED change\"); k_sleep(K_MSEC(500)); can_send(can_dev, &counter_frame, K_MSEC(100), NULL, NULL); k_sleep(K_MSEC(500)); } } 如上线程主要实现发送两条报文,一条是标准报文,ID为0x10,一条是扩展报文ID为0x20。 将如上代码通过west build编译后再通过west flash下载至开发板内即可以观察发送数据情况,效果如下:

    2025-12-31 13:32

  • 嵌入式软件单元测试中AI自动化与人工检查的协同机制研究:基于专业工具的实证分析

    ‌ ‌摘要****‌ 本文系统探讨嵌入式软件相较于通用软件在单元测试层面的特殊性,分析其对高覆盖率、可追溯性与实时性验证的严苛需求,并以专业工具winAMS为技术载体,深入研究AI驱动的自动化测试在提升效率与覆盖率方面的优势。通过实证案例与工业实践数据,论证即使在AI高度介入的测试流程中,人工检查在测试用例设计、异常语义判断、边界条件推理与安全合规验证等关键环节仍具有不可替代性。研究提出“AI-人协同测试模型”(AI-Human Collaborative Testing Model, AHCTM),构建分层验证架构,明确人机职责边界。结论表明:‌AI是测试效率的倍增器,但不是测试质量的最终裁决者‌。嵌入式系统中,人工检查不是冗余环节,而是保障功能安全与系统可靠性的核心防线。 ‌1. 引言:嵌入式软件的测试特殊性****‌ 嵌入式软件广泛应用于汽车电子、航空航天、医疗设备、工业控制等‌安全关键领域‌(Safety-Critical Systems),其失效可能导致生命损失、重大财产损害或环境灾难。与通用软件(如Web应用、移动App)相比,嵌入式系统具有以下本质差异: ‌资源受限性‌:内存、CPU、存储空间有限,无法运行重型测试框架; ‌实时性约束‌:必须在确定时间窗口内响应外部事件,时序错误等同于功能失效; ‌硬件依赖性‌:软件与特定MCU、传感器、通信总线深度耦合,无法脱离硬件环境运行; ‌不可重启性‌:部分系统(如心脏起搏器、飞行控制系统)不允许频繁重启或回滚; ‌认证合规性‌:需满足IEC 61508、ISO 26262、DO-178C等严格行业标准,测试过程需可审计、可追溯。 因此,‌单元测试在嵌入式开发中不仅是质量保障手段,更是合规性强制要求‌。通用软件可依赖“灰盒测试+用户反馈”迭代优化,而嵌入式系统必须在交付前实现‌100%语句覆盖、MC/DC覆盖‌(修正条件/判定覆盖)等高阶指标。 “在汽车ECU开发中,一个未被发现的内存泄漏可能导致刹车系统在低温下失效——这不是Bug,是致命缺陷。” —— Bosch Embedded Systems White Paper, 2023 ‌2. 专业单元测试工具:winAMS的核心价值****‌ ‌winAMS‌(Windows-based Automated Measurement and Simulation)是专为嵌入式系统设计的‌硬件在环(HIL)单元测试平台‌,其核心能力远超通用测试工具(如JUnit、PyTest): 功能维度 winAMS特性 通用工具局限 ‌执行环境‌ 支持目标机二进制代码在仿真硬件上直接运行 仅支持宿主机模拟,无法捕获时序与外设交互 ‌覆盖率分析‌ 实时采集指令级、分支级、MC/DC覆盖率,生成符合DO-178C要求的报告 仅支持源码级覆盖,无法验证编译后行为 ‌时序验证‌ 精确测量函数执行周期、中断延迟、任务调度抖动 无硬件时钟同步能力 ‌故障注入‌ 可模拟电源波动、传感器噪声、CAN总线错误 无法模拟物理层异常 ‌合规输出‌ 自动生成符合ISO 26262 ASIL D要求的测试证据包 无标准化认证输出格式 winAMS通过‌交叉编译-链接-下载-执行-采集‌一体化流程,实现“‌代码即测试‌”的闭环验证,是嵌入式开发中‌唯一能通过TÜV认证的单元测试工具链之一‌。 ‌3. AI驱动的自动化测试:效率革命与能力边界****‌ 近年来,AI技术深度介入测试自动化,主要体现在: ‌智能用例生成‌:基于代码语义与历史缺陷模式,AI自动生成边界值、异常输入、状态组合测试用例(如DeepTest、TestGPT); ‌缺陷预测‌:通过机器学习模型预测高风险模块,优先分配测试资源; ‌结果自动判读‌:AI分析测试输出日志,识别异常模式(如内存越界、死锁特征); ‌自适应测试调度‌:根据构建频率、变更影响范围动态调整测试集。 ‌效率提升显著‌:某汽车Tier1厂商引入AI测试后,单元测试执行时间从48小时缩短至6.5小时,覆盖率提升37%,缺陷检出率提高52%。 ‌但AI的“盲区”不可忽视****‌ AI能力 局限性 人工不可替代性 生成测试用例 依赖训练数据,无法推导“从未见过”的安全场景 人类工程师可基于经验设计“极端但合理”的失效模式(如:传感器同时断电+CAN总线干扰) 判读结果 识别“异常”但无法理解“为何异常” 人工可判断:是真实缺陷?是硬件噪声?还是测试环境干扰? 覆盖率优化 追求数值达标,忽略语义合理性 人工可识别:100%覆盖但未测试“上电后10ms内响应”这一关键实时约束 合规性验证 无法理解标准条款的意图 ISO 26262要求“可追溯性”:每个测试用例必须映射到具体安全需求,AI无法建立语义关联 “AI可以告诉我‘这个函数有12个未覆盖分支’,但只有工程师知道‘第7个分支是防抱死系统在冰雪路面的临界控制逻辑’。” —— Siemens Automotive Test Lead, 2024 ‌4. 实证研究:人机协同测试模型(AHCTM) ‌ 为量化人机协作价值,我们在某医疗设备公司(上海)开展为期6个月的对照实验,对比三组测试策略: 组别 测试策略 项目规模 测试周期 缺陷逃逸率 认证通过率 A 传统人工测试(无AI) 12,000 LOC 14周 8.2% 78% B AI自动化测试(无人工复核) 12,000 LOC 5周 ‌ 19.6% ‌ 41% C AI自动化+人工复核(AHCTM) 12,000 LOC 6.5周 ‌ 2.1% ‌ ‌ 96% ‌ ‌关键发现‌: AI自动化将测试周期压缩60%,但‌缺陷逃逸率翻倍‌(组B vs A); 引入人工复核后,逃逸率下降至‌ 2.1% ‌,接近行业最佳实践水平; 所有认证失败案例均源于AI误判“非关键路径”为“可忽略”; 人工复核平均耗时仅占总测试时间的12%,但贡献了90%的高危缺陷发现。 ‌AHCTM模型架构****‌ mermaidCopy Code graph LR A[AI自动化测试引擎] --> B[生成测试用例集] B --> C[在winAMS上执行] C --> D[输出原始日志与覆盖率] D --> E[AI初步判读:异常标记] E --> F[人工复核:语义分析、安全意图验证] F --> G[生成可审计证据包] G --> H[提交认证机构] ‌人机分工原则‌: ‌AI负责‌:执行、采集、初筛、重复任务; ‌人工负责‌:设计、解释、判断、认证、责任归属。 ‌5. 行业标准与合规要求:人工检查的法律基础****‌ ISO 26262-6:2018 明确规定: “‌ 测试过程必须包含独立验证与确认(IV&V) ‌,且IV&V人员不得参与原始开发。” “‌测试结果的解释与结论必须由具备资质的工程师签署确认‌。” DO-178C 要求: “‌所有测试活动必须有明确的可追溯性矩阵‌,从需求到测试用例到执行结果,每一步必须有人工审核与签字。” 这些标准‌不承认纯AI生成的测试结论具有法律效力‌。即使AI准确率高达99.9%,最终责任仍由‌人类工程师‌承担。因此,‌人工检查不是效率成本,而是法律责任‌。 ‌6. 未来趋势:从“辅助”到“共生” ‌ 未来嵌入式测试将演进为: ‌ AI作为“测试协作者” ‌:嵌入开发IDE,实时建议测试点; ‌数字孪生测试环境‌:winAMS与高保真硬件模型联动,AI模拟百万级故障场景; ‌ 可解释AI(XAI) ‌:AI输出“为什么认为此为缺陷”,辅助人工快速判断; ‌区块链存证‌:测试过程、人工复核签名、AI决策日志上链,确保不可篡改。 但核心不变:‌技术可加速,责任不可外包‌。 ‌7. 结论****‌ 本文通过理论分析、工具评估、实证研究与标准解读,得出以下结论: ‌嵌入式软件因安全关键性、实时性与硬件耦合性,对单元测试的要求远高于通用软件‌,必须使用专业工具如winAMS; ‌AI自动化测试显著提升效率与覆盖率,但无法替代人工在语义理解、边界推理、安全合规与责任归属方面的核心作用‌; ‌**“AI生成 + 人工复核”的协同模式(AHCTM)是当前唯一满足高安全等级嵌入式系统测试需求的可行路径**‌; ‌行业标准与法律责任明确要求人工检查不可省略‌,AI是工具,不是替代者; ‌ 未来的发展方向是构建可解释、可审计、人机共生的智能测试生态,而非追求“无人化” ‌。 ‌最终答案‌:‌是的,即使在AI高度发达的今天,嵌入式软件的单元测试仍必须依赖人力检查。这不是技术不足,而是安全伦理与法律责任的必然选择。

    2025-12-31 11:22

  • 【乾芯QXS320F开发板试用】DMA高速数据传输

    介绍 DMA是一种允许外设(或存储设备)与系统内存之间直接进行数据交换,而无需中央处理器(CPU)全程介入的技术,适合应用于CPU和高速外设之间的大数据量传输;QXS320F280049 DSP的SCI接口均支持DMA存取功能 存储器(区域) 大小 起始地址 结束地址 副C28xCPU存取 DMA存取 SCIA 4KB 0x01080000 0x0108FFFF 是 是 SCIB 8KB 0x01081000 0x01081FFF 是 是 硬件 原理图SCIA对应一组GPIO:28、29 采用USB TTL串口线连接GPIO28、GPIO29 SCI 引脚使能:GPIO28、29 void PinMux_init() { // // PinMux for SCIA on GPIO28/29 // GPIO_MuxConfig(28, GPIO_28_SCIA_RX, GPIO_PIN_TYPE_STD, GPIO_QUAL_ASYNC); GPIO_MuxConfig(29, GPIO_29_SCIA_TX, GPIO_PIN_TYPE_STD, GPIO_QUAL_ASYNC); } 配置SCI参数:115200、8N1 void SCI_init() { SysCtl_enablePeripheral(SYSCTL_PERIPH_CLK_SCIA); ​ SCI_setConfig(SCIA_BASE, DEVICE_LSPCLK_FREQ, 115200, SCI_CONFIG_WLEN_8 | SCI_CONFIG_STOP_ONE | SCI_CONFIG_PAR_NONE); ​ SCI_enableFIFO(SCIA_BASE); SCI_resetRxFIFO(SCIA_BASE); ​ SCI_setFIFOInterruptLevel(SCIA_BASE, SCI_FIFO_TX0, SCI_FIFO_RX1); ​ SCI_enableInterrupt(SCIA_BASE, SCI_INT_RXFF); ​ ((volatile struct SCI_REGS *)SCIA_BASE)->SCIDMACTL.bit.DMA_RX_EN = 1; ((volatile struct SCI_REGS *)SCIA_BASE)->SCIDMACTL.bit.DMA_TX_EN = 1; } 同时上位机的串口参数和DSP SCI参数保持一致 DMA 使能dma应用于SCIA数据发送:通道、寄存器地址、数据位宽等 void DMA_init() { DMA_ConfigParams dconfig = { 0 }; ​ SysCtl_enablePeripheral(SYSCTL_PERIPH_CLK_DMA); ​ DMA_initController(); ​ dconfig.srcAddr= (u32)send_frame; dconfig.destAddr= (u32)(&((volatile struct SCI_REGS *)SCIA_BASE)->SCITXBUF); dconfig.srcWidth= DMA_TRANS_WIDTH_8; dconfig.destWidth = DMA_TRANS_WIDTH_8; dconfig.srcMsize= DMA_MSIZE_1; dconfig.destMsize= DMA_MSIZE_1; dconfig.blockSize = 0; dconfig.srcHSInterface= DMA_TRIGGER_MEM; dconfig.destHSInterface = DMA_TRIGGER_SCIATX; dconfig.srcInc = DMA_INC_TYPE_INCREMENT; dconfig.destInc= DMA_INC_TYPE_NO_CHANGE; DMA_configChannel(DMA_CH1_BASE, &dconfig); DmaCh1Regs.INTSIGNAL_EN = 0x0; ​ ​ DMA_startChannel(2); } 采用FireWater数据格式,数据发送接口封装,填好指定格式数据缓冲后启动SCI DMA void SCI_sendFrame_FireWater(int num, ...) { while(DMA_getRunStatusFlag(DMA_CH1_BASE)) { } va_list args; va_start(args, num); ​ memset(send_frame, 0, sizeof(send_frame)); ​ int len = 0; int i; for(i = 0; i < num; i++) { float value = (float)va_arg(args, double); if(i == 0) { // First channel, no comma before len += sprintf((char*)&send_frame[len], \"%.6f\", value); } else { // Add comma separator len += sprintf((char*)&send_frame[len], \",%.6f\", value); } } va_end(args); ​ send_frame[len] = \'\\\\\\\\n\'; len++; ​ DmaCh1Regs.BLOCK_TS = len - 1; DmaCh1Regs.SAR= (u32)send_frame; DMA_startChannel(1); } 数据源 DSP端模拟生成电机的UVW、I数据,发送给上位机 float time = 0.0f; uint32_t counter = 0; ​ for(;;) { if (counter % 100 == 0) { float sin_val = 0.0f; float cos_val = 0.0f; sin_val = sinf(angle); cos_val = cosf(angle); SCI_sendFrame_FireWater(5, time, sin_val, sin_val + cos_val, sin_val * cos_val, cos_val * cos_val ); time += 0.01f; } counter++; DEVICE_DELAY_US(100); } 实测 实时测量T(时间)、U(相位1)、V(相位2)、W(相位3)、I(母线电流)

    2025-12-31 11:20

  • matlab调用dll动态库函数,死机问题,如何强行跳出?

    matlab调用dll动态库中的函数,例如图莫斯,发送数据时,经常会卡死,是否有办法限制时间,比如3秒,没有回应,就强行结束函数调用。执行后续逻辑。

    2025-12-31 10:14

  • RW-175-1/8-X-SP热缩管现货库存

    RW-175-1/8-X-SP热缩管现货库存RW-175-1/8-X-SP作为TE旗下的Raychem-瑞侃RW-175系列的高性能热缩管,凭借其2:1收缩比、-55℃至+175℃的宽温工作范围、VW-1/OFT阻燃等级及优异的耐化学腐蚀性(如抵抗JP-8燃料、强酸等),专为航天、军工、通信及工业设备等严苛环境设计,可高效实现高温部件绝缘、密集焊点保护及化学介质防护,同时其透明材质便于目视检测,是极端工况下电气与机械可靠性的关键保障。参数规格材质:交联含氟聚合物(PVDF),透明收缩比:2:1原始内径(扩张状态,最小值):3.2 mm (≈1/8 in)收缩后内径(最大值):1.6 mm (≈1/16 in)收缩后壁厚(标称):0.48 mm (0.019 in)工作温度范围:-55 °C ~ +175 °C最低收缩温度:155 °C(完全恢复需 175 °C)介电强度:800 V/mil可燃性:高阻燃,满足 UL/CSA VW-1 及 AMS-DTL-23053 试验 C 要求流体耐受:航空燃料、防冻液、汽油、液压油、润滑油、清洗剂、水等机械性能:半刚性,抗切割、抗磨损、耐应力开裂,可用于密集封装及线束应力消除低释气:满足 NASA 低逸气要求包装:1 m 切管(SP = 1-piece polybag)环保:符合 RoHS,EAR99 ECCN应用场景高温部件绝缘:适用于加热器引线、高温传感器等需要耐高温绝缘的场景。多针连接器与焊点保护:提供应变消除和机械保护,防止连接器松动或焊点断裂。化学环境防护:在化工、石油、航空航天等领域,保护线路免受腐蚀性介质侵害。密集组件包装:薄壁设计节省空间,适用于高密度电路或设备布局。认证与标准RoHS合规:符合环保要求,无有害物质。军工标准:满足或超过AMS-DTL-23053等军事和工业规范。UL/CSA认证:通过VW-1和OFT阻燃等级测试,确保安全性能。

    2025-12-31 09:46