TOS-WLink 无线调试器:无线化JLink、STLink和板载自带DAPLink 无线debug STM32开发板

  背景      

        居然漏写了调试器的图文,补上先;

        制作TOS-WLink能无线化别的USB设备的初衷;起因是为了制作一款无线WIFI的嵌入式调试器;完毕后,突然看到了实验板子有USB Host接口为什么不把手边JLink,STLink和CH340等常用设备一起无线化让他们也获得WIFI无线调试能力

        篇幅有限,TOS-WLink也是支持STLInk无线化的,不在本文中写了(PS,其实是懒,懒得接线截图);

        很明显,支持的基本都是我手边常用的设备;其它调试器类,如果支持得不好、得CALL我支持才行;

        下图可以帮助理解TOS-WLink的设计原理:

方案肯定都有利弊点:

①、最稳定,但是需要扩展USB口,现在办公超薄 笔记本USB口少;物理连线不“自由”,容易绊倒水杯,水淹七军;

②、带宽实际是不够的,可以体验Switch自带的手柄玩猎天使魔女等Act动作游戏,出招延时我个人无法接受;

③、简单易用;做一对一专用功能设备比较好;但是对插入通用的多个未知USB设备,接收器意味着也要进行HUB映射多个USB接口;同样如果需要升级无线,如升级到WIFI7,提升无线速率,接收器硬件成本也会同样增加;成本较高;

④,相当于方案③用软件在PC上模拟了接收器客户端;缺点也明显,开发麻烦,软件的复杂度替代了硬件的成本,所以TOS-WLink只是单设备即可,再者IP网络,大家能想到它获得了什么额外收益么,IP化,公网?嗯?什么能力........;

下面开始实验:

实验设备:PC一台, TOS-WLink一个;STM32F103开发板一个;杜邦线4根

1,无线化(WIFI)JLInk 调试STM32F103

1.1 插入JLink到TOS-WLink,无线usb助手自动发现接入JLink, 自动接入PC

PS:使用中,USB插拔WLInk的 USB口,PC能自动同步,进而带来了安全隔离调试效果

1.2 读取JLink配置(Options),本次使用JLink V9, 已支持V11

1.3 IAR和KEIL使用

1.3.1 IAR,芯片STM32F103C8T6,工程网上搞来的,所以源码先打个码;

断点、单步执行:

1.3.2  KEIL使用

同样,代码是github直接clone来的

端点,单步执行:

2,板载自带的DAPLink  无线WIFI调试STM32F103

偷个懒,这次就只用Keil了

2.1 自带的DAPLink属于虚拟的USB设备,不用真实的使用TOS-WLink的USB;

        CMSIS-DAP V2.0开源代码的移植、驱动的适配;

        TOS-WLink的SWD接到STM32F103;

2.2 读取设置CMSIS-DAP options

2.3 debug,断点调试

3、光是工作肯定也不够,所以看下图:

        工作娱乐必须两手抓,两手都要硬...

        闲下来玩玩尘埃,鬼泣等等...

[2025-12-10 19:14:37] [2025-12-10 19:14:35] event_change_callback():2772 - [STM]clip not start, event->chn:0 [2025-12-10 19:14:37] [2025-12-10 19:14:37] [2025-12-10 19:14:35] bc_clip_manage_callback():2012 - [TapoCare]receive clip manage info, clip start time: 1765365271, clip end time: 1765365331, msgSubType: 2, time: 1765365275. [2025-12-10 19:14:37] [2025-12-10 19:14:37] [2025-12-10 19:14:35] tcp_connection_start_tos():1046 - [tpssl][5.800]domain:use1-device-tapo-care.i.tplinknbu.com idle --> dns query. [2025-12-10 19:14:37] [2025-12-10 19:14:37] [2025-12-10 19:14:35] media_set_req_state():117 - [STREAM_COMMON][5.811][event] req state: idle -> connecting. [2025-12-10 19:14:37] [2025-12-10 19:14:35] cdn_post_alarm_request():1200 - [TapoCare]event go through elb [2025-12-10 19:14:37] [2025-12-10 19:14:37] [2025-12-10 19:14:35] [ERROR] set_g_mp4_index_writed():1508 - [STM]set g_mp4_index_writed [0] [2025-12-10 19:14:37] [2025-12-10 19:14:35] [ERROR] set_g_index_binary_writed():1516 - [STM]set g_index_binary_writed [0] [2025-12-10 19:14:37] [2025-12-10 19:14:35] [ERROR] set_g_snapshotIndex_Synced():1524 - [STM]set g_snapshotIndex_Synced [0] [2025-12-10 19:14:37] [2025-12-10 19:14:35] change_record_status():1496 - [STM]rec status change: pre => recording [2025-12-10 19:14:37] [2025-12-10 19:14:37] [2025-12-10 19:14:35] [ERROR] send_sd_recording_power_down_timeout():1546 - [STM]set sd rec tm[1], tm=72 [2025-12-10 19:14:37] [2025-12-10 19:14:35] DetClip_SetState():1400 - [SnapshotIdx] clip state: idle -> prepare [2025-12-10 19:14:37] [2025-12-10 19:14:35] update_curr_context():992 - [STM]shm curr disk: 1, curr disk: 255 [2025-12-10 19:14:38] [2025-12-10 19:14:35] [ERROR] write_cur_index_to_disk():102 - [STM]sys_info is null [2025-12-10 19:14:38] [2025-12-10 19:14:35] [ERROR] close_storage_ctx_fd():3218 - [STM]get disk failed [2025-12-10 19:14:38] [2025-12-10 19:14:35] update_curr_context():995 - [STM]finish releasing curr disk. [2025-12-10 19:14:38] [2025-12-10 19:14:35] [ERROR] send_sd_recording_power_down_timeout():1546 - [STM]set sd rec tm[1], tm=72 [2025-12-10 19:14:38] [2025-12-10 19:14:35] ring_info_set():755 - [CloudIot]{"infoType":3,"clipStarttime":1765365271,"clipEndtime":1765365331} [2025-12-10 19:14:38] [2025-12-10 19:14:35] dns_query_success_handle():778 - [tpssl][5.872]DNS use1-device-tapo-care.i.tplinknbu.com --> 3.89.235.107 [2025-12-10 19:14:38] [2025-12-10 19:14:35] [ERROR] pd_dla_process_dev():2169 - [AMS] pd alarm timestamp: 6131000 [2025-12-10 19:14:38] [2025-12-10 19:14:35] [ERROR] dn_switch_detect_start_cb():303 - [DN_SWITCH]detection event occurred [2025-12-10 19:14:38] [2025-12-10 19:14:35] pd_dla_process_dev():2182 - [AMS] PD start [2025-12-10 19:14:38] [2025-12-10 19:14:35] send_clip_manage_event_state():362 - [clip]send clip event[1765365271~1765365331], event_type=26, event_time=1765365275, duration=60 [2025-12-10 19:14:38] [2025-12-10 19:14:36] msg_alarm_handle():1305 - [TapoCare]recv alarm type: 0x20a while req [event] is progressing. [2025-12-10 19:14:38] [2025-12-10 19:14:38] [2025-12-10 19:14:36] [ERROR] send_sd_recording_power_down_timeout():1546 - [STM]set sd rec tm[1], tm=72 [2025-12-10 19:14:38] [2025-12-10 19:14:36] tcp_connect_timeout_handle():438 - [tpssl][6.116]ip:3.89.235.107 tcp connecting --> tcp connected. [2025-12-10 19:14:38] [2025-12-10 19:14:36] tcp_connect_timeout_handle():508 - [tpssl][6.153]ip:3.89.235.107 tcp connected --> ssl connecting. [2025-12-10 19:14:38] [2025-12-10 19:14:36] [ERROR] check_skip_curr_file():2557 - [STM]skip to next unused file if no backup [2025-12-10 19:14:38] [2025-12-10 19:14:36] mp4_storage_mp4_init():1129 - [STM]MP4 mux context is initial, file: /tmp/mnt/harddisk_1/20251210_185454_tp00010.mp4 [2025-12-10 19:14:38] [2025-12-10 19:14:36] drop_sys_cache():3395 - [STM]Dropped cache: 980 kB-> 2896 kB [2025-12-10 19:14:38] [2025-12-10 19:14:36] DetClip_SetState():1400 - [SnapshotIdx] clip state: prepare -> process [2025-12-10 19:14:38] [2025-12-10 19:14:36] SnapshotIndexMod_PostMsg():2249 - [SnapshotIdx]post msg(1) time(1765365271). [2025-12-10 19:14:38] [2025-12-10 19:14:36] DetSnapshot_Save():1011 - [SnapshotIdx](/tmp/mnt/harddisk_1/snapshot/20251210/19/1765365271_0_00.jpg) success! [2025-12-10 19:14:38] [2025-12-10 19:14:36] mt_get_wifi_info():1828 - !!!! mt7682 has connected !!!! [2025-12-10 19:14:38] [2025-12-10 19:14:36] wlan_wpa_send_led_status():130 - [WLAN]WLAN STA CONNECTED. [2025-12-10 19:14:38] [2025-12-10 19:14:36] link_status_update():476 - [NIFC]Link status: LINK_DOWN -> LINK_LINKING_UP [2025-12-10 19:14:38] [2025-12-10 19:14:36] link_status_update():478 - [NIFC]IP: ********, mask: 255.255.255.0, gateway: 192.168.0.1, DNS: 192.168.0.1, 192.168.68.1, conn_type:0 [2025-12-10 19:14:38] [2025-12-10 19:14:36] link_status_update():476 - [NIFC]Link status: LINK_DOWN -> LINK_LINKING_UP [2025-12-10 19:14:38] [2025-12-10 19:14:36] link_status_update():478 - [NIFC]IP: ********, mask: 255.255.255.0, gateway: 192.168.0.1, DNS: 192.168.0.1, 192.168.68.1, conn_type:0 [2025-12-10 19:14:38] [2025-12-10 19:14:36] tcp_recv_handle():346 - [tpssl][6.910]ip:3.89.235.107 ssl connecting --> ssl connected. [2025-12-10 19:14:38] [2025-12-10 19:14:36] media_set_req_state():117 - [STREAM_COMMON][6.918][event] req state: connecting -> connected. [2025-12-10 19:14:38] [2025-12-10 19:14:37] media_set_req_state():117 - [STREAM_COMMON][7.039][event] req state: connected -> send_req. [2025-12-10 19:14:39] [2025-12-10 19:14:37] media_set_req_state():117 - [STREAM_COMMON][7.497][event] req state: send_req -> recv_rsp. [2025-12-10 19:14:39] [2025-12-10 19:14:37] event_recv_data_handle():2787 - [TapoCare]xtoken:563aeb1b-4ff8-45c8-b891-ca6da2ac778e, host:use1-device-i-06673a40ccb3e4e49.tapo-care.i.tplinknbu.com:443, ip: 34.234.96.68.这是第一段log,[2025-12-10 22:02:13] [2025-12-10 22:02:11] event_change_callback():2772 - [STM]clip not start, event->chn:0 [2025-12-10 22:02:13] [2025-12-10 22:02:13] [2025-12-10 22:02:11] bc_clip_manage_callback():2012 - [TapoCare]receive clip manage info, clip start time: 1765375327, clip end time: 1765375387, msgSubType: 2, time: 1765375331. [2025-12-10 22:02:13] [2025-12-10 22:02:13] [2025-12-10 22:02:11] tcp_connection_start_tos():1046 - [tpssl][5.852]domain:use1-device-tapo-care.i.tplinknbu.com idle --> dns query. [2025-12-10 22:02:13] [2025-12-10 22:02:13] [2025-12-10 22:02:11] media_set_req_state():117 - [STREAM_COMMON][5.854][event] req state: idle -> connecting. [2025-12-10 22:02:13] [2025-12-10 22:02:11] cdn_post_alarm_request():1200 - [TapoCare]event go through elb [2025-12-10 22:02:13] [2025-12-10 22:02:13] [2025-12-10 22:02:11] [ERROR] set_g_mp4_index_writed():1508 - [STM]set g_mp4_index_writed [0] [2025-12-10 22:02:13] [2025-12-10 22:02:11] [ERROR] set_g_index_binary_writed():1516 - [STM]set g_index_binary_writed [0] [2025-12-10 22:02:13] [2025-12-10 22:02:11] [ERROR] set_g_snapshotIndex_Synced():1524 - [STM]set g_snapshotIndex_Synced [0] [2025-12-10 22:02:13] [2025-12-10 22:02:11] change_record_status():1496 - [STM]rec status change: pre => recording [2025-12-10 22:02:13] [2025-12-10 22:02:13] [2025-12-10 22:02:11] [ERROR] send_sd_recording_power_down_timeout():1546 - [STM]set sd rec tm[1], tm=72 [2025-12-10 22:02:13] [2025-12-10 22:02:11] DetClip_SetState():1400 - [SnapshotIdx] clip state: idle -> prepare [2025-12-10 22:02:13] [2025-12-10 22:02:11] update_curr_context():992 - [STM]shm curr disk: 1, curr disk: 255 [2025-12-10 22:02:13] [2025-12-10 22:02:11] [ERROR] write_cur_index_to_disk():102 - [STM]sys_info is null [2025-12-10 22:02:13] [2025-12-10 22:02:11] [ERROR] close_storage_ctx_fd():3218 - [STM]get disk failed [2025-12-10 22:02:13] [2025-12-10 22:02:11] update_curr_context():995 - [STM]finish releasing curr disk. [2025-12-10 22:02:13] [2025-12-10 22:02:11] [ERROR] send_sd_recording_power_down_timeout():1546 - [STM]set sd rec tm[1], tm=72 [2025-12-10 22:02:13] [2025-12-10 22:02:11] ring_info_set():755 - [CloudIot]{"infoType":3,"clipStarttime":1765375327,"clipEndtime":1765375387} [2025-12-10 22:02:13] Monitor: receive NVMP_START_DONE. pid:211 [2025-12-10 22:02:13] [2025-12-10 22:02:11] nvmp_print_start_done():436 - [NVMP]Main progress start done [2025-12-10 22:02:13] [2025-12-10 22:02:11] dns_query_success_handle():778 - [tpssl][6.001]DNS use1-device-tapo-care.i.tplinknbu.com --> 107.20.151.138 [2025-12-10 22:02:13] [2025-12-10 22:02:12] [ERROR] ds_handle():2727 - [DS]Signal method is illegal. [2025-12-10 22:02:13] [2025-12-10 22:02:12] [ERROR] ds_handle():2727 - [DS]Signal method is illegal. [2025-12-10 22:02:13] [2025-12-10 22:02:12] [ERROR] pd_dla_process_dev():2169 - [AMS] pd alarm timestamp: 6261000 [2025-12-10 22:02:13] [2025-12-10 22:02:12] [ERROR] dn_switch_detect_start_cb():303 - [DN_SWITCH]detection event occurred [2025-12-10 22:02:13] [2025-12-10 22:02:12] pd_dla_process_dev():2182 - [AMS] PD start [2025-12-10 22:02:13] [2025-12-10 22:02:12] hub_manage_pinfo_cb():1231 - [HUB_MANAGE]main start done prepare sync [2025-12-10 22:02:13] [2025-12-10 22:02:12] send_clip_manage_event_state():362 - [clip]send clip event[1765375327~1765375387], event_type=26, event_time=1765375332, duration=60 [2025-12-10 22:02:13] [2025-12-10 22:02:12] [ERROR] jpeg_time_callback():866 - [AVDC][6.146]jpeg update start, shm jpeg time: 1791 -> 358 [2025-12-10 22:02:13] [2025-12-10 22:02:12] [ERROR] jpeg_sync_shm_loop():834 - [AVDC][6.147]jpeg update done, jpeg pts:3591709, shm_jpeg_time: 358000. [2025-12-10 22:02:13] [2025-12-10 22:02:12] msg_alarm_handle():1305 - [TapoCare]recv alarm type: 0x20a while req [event] is progressing. [2025-12-10 22:02:13] [2025-12-10 22:02:13] [2025-12-10 22:02:12] [ERROR] send_sd_recording_power_down_timeout():1546 - [STM]set sd rec tm[1], tm=72 [2025-12-10 22:02:13] [2025-12-10 22:02:12] [ERROR] check_skip_curr_file():2557 - [STM]skip to next unused file if no backup [2025-12-10 22:02:13] [2025-12-10 22:02:12] mp4_storage_mp4_init():1129 - [STM]MP4 mux context is initial, file: /tmp/mnt/harddisk_1/20251210_214439_tp00015.mp4 [2025-12-10 22:02:13] [2025-12-10 22:02:12] drop_sys_cache():3395 - [STM]Dropped cache: 2276 kB-> 3144 kB [2025-12-10 22:02:13] [2025-12-10 22:02:12] DetClip_SetState():1400 - [SnapshotIdx] clip state: prepare -> process [2025-12-10 22:02:13] [2025-12-10 22:02:12] SnapshotIndexMod_PostMsg():2249 - [SnapshotIdx]post msg(1) time(1765375327). [2025-12-10 22:02:13] [2025-12-10 22:02:12] DetSnapshot_Save():1011 - [SnapshotIdx](/tmp/mnt/harddisk_1/snapshot/20251210/22/1765375327_0_00.jpg) success! [2025-12-10 22:02:13] [2025-12-10 22:02:12] tcp_connect_timeout_handle():438 - [tpssl][6.489]ip:107.20.151.138 tcp connecting --> tcp connected. [2025-12-10 22:02:13] [2025-12-10 22:02:12] tcp_connect_timeout_handle():508 - [tpssl][6.515]ip:107.20.151.138 tcp connected --> ssl connecting. [2025-12-10 22:02:13] [2025-12-10 22:02:12] mt_get_wifi_info():1828 - !!!! mt7682 has connected !!!! [2025-12-10 22:02:13] [2025-12-10 22:02:12] wlan_wpa_send_led_status():130 - [WLAN]WLAN STA CONNECTED. [2025-12-10 22:02:13] [2025-12-10 22:02:12] link_status_update():476 - [NIFC]Link status: LINK_DOWN -> LINK_LINKING_UP [2025-12-10 22:02:13] [2025-12-10 22:02:12] link_status_update():478 - [NIFC]IP: ********, mask: 255.255.255.0, gateway: 192.168.0.1, DNS: 192.168.0.1, 192.168.68.1, conn_type:0 [2025-12-10 22:02:13] [2025-12-10 22:02:12] link_status_update():476 - [NIFC]Link status: LINK_DOWN -> LINK_LINKING_UP [2025-12-10 22:02:13] [2025-12-10 22:02:12] link_status_update():478 - [NIFC]IP: ********, mask: 255.255.255.0, gateway: 192.168.0.1, DNS: 192.168.0.1, 192.168.68.1, conn_type:0 [2025-12-10 22:02:14] [2025-12-10 22:02:14] tcp_recv_handle():346 - [tpssl][8.104]ip:107.20.151.138 ssl connecting --> ssl connected. [2025-12-10 22:02:15] [2025-12-10 22:02:14] media_set_req_state():117 - [STREAM_COMMON][8.135][event] req state: connecting -> connected. [2025-12-10 22:02:15] [2025-12-10 22:02:14] media_set_req_state():117 - [STREAM_COMMON][8.239][event] req state: connected -> send_req. [2025-12-10 22:02:15] bpi_time:5706->8501(1912,7502) [2025-12-10 22:02:15] [2025-12-10 22:02:15] media_set_req_state():117 - [STREAM_COMMON][9.319][event] req state: send_req -> recv_rsp. [2025-12-10 22:02:16] [2025-12-10 22:02:15] event_recv_data_handle():2787 - [TapoCare]xtoken:b2809123-b57c-4992-8242-d34681857b1d, host:use1-device-i-0eec8ae510dd800c2.tapo-care.i.tplinknbu.com:443, ip: 34.229.40.179.这是第二段log。其中第一段event接口建连耗时较短,第二段较长,从event go through elb到event_recv_data_handle花费的时间。分析一下是为什么,从log的信息中
最新发布
12-13
从你提供的两段日志来看,这两段日志分别记录了设备在不同时间点触发事件录像(clip)并上传到 TapoCare 云端的过程。关键问题是: > **为什么第一段 log 中 `event` 接口建连耗时较短,而第二段较长?** 我们重点分析从 `[TapoCare]event go through elb` 到 `event_recv_data_handle()` 这两个关键节点之间的时间差。 --- ### ✅ 提取关键时间点 #### 第一段日志(19:14) ```log [2025-12-10 19:14:35] cdn_post_alarm_request():1200 - [TapoCare]event go through elb ... [2025-12-10 19:14:38] event_recv_data_handle():2787 - [TapoCare]xtoken:..., ip: 34.234.96.68 ``` - 开始时间:`19:14:35` - 结束时间:`19:14:38` - 耗时 ≈ **3 秒** #### 第二段日志(22:02) ```log [2025-12-10 22:02:11] cdn_post_alarm_request():1200 - [TapoCare]event go through elb ... [2025-12-10 22:02:16] event_recv_data_handle():2787 - [TapoCare]xtoken:..., ip: 34.229.40.179 ``` - 开始时间:`22:02:11` - 结束时间:`22:02:16` - 耗时 ≈ **5 秒** 所以确实第二段比第一段多花了约 2 秒。 --- ## 🔍 深入日志对比分析 我们逐项比较两段日志中从“发起请求”到“收到响应”的完整流程: | 阶段 | 第一段耗时 | 第二段耗时 | 差异 | |------|------------|-----------|-------| | DNS 查询 → TCP 连接建立 | ~0.2s (5.800 → 6.116) | ~0.6s (5.852 → 6.489) | ⚠️ 第二段慢 0.4s | | TCP → SSL 建立完成 | ~0.8s (6.153 → 6.910) | ~1.6s (6.515 → 8.104) | ⚠️ 第二段慢 0.8s | | SSL 完成 → 发送请求 | 很快 (~0.008s) | 很快 (~0.02s) | 可忽略 | | 发送请求 → 收到响应 | ~0.5s (6.918 → 7.497) | ~1.1s (8.239 → 9.319) | ⚠️ 第二段慢 0.6s | 总延迟主要集中在: 1. **SSL 握手阶段显著变慢** 2. **TCP 建立连接更久** 3. **后续 HTTP 请求等待响应时间更长** --- ## 🧩 根本原因分析(基于日志线索) ### ❌ 不是本地处理问题 - 本地模块如 `mp4_storage_mp4_init`, `DetSnapshot_Save` 等执行都很快。 - 快照保存成功:`DetSnapshot_Save(): success!` - 存储路径正常初始:`/tmp/mnt/harddisk_1/...mp4` 说明本地资源准备 OK,不是瓶颈。 --- ### 🔴 关键差异点一:**DNS 网络链路质量下降** | 日志项 | 第一次 | 第二次 | |--------|--------|---------| | DNS 查询目标 | use1-device-tapo-care.i.tplinknbu.com → `3.89.235.107` | 同域名 → `107.20.151.138` | | TCP 目标 IP | 3.89.235.107 | 107.20.151.138 | | SSL 加密耗时 | 约 0.75s | 约 1.6s | 👉 **结论:第二次连接的服务器 IP 更远或网络拥塞,导致 SSL/TCP 层延迟增加。** AWS ELB(弹性负载均衡)会动态分配后端实例,不同的 IP 地址可能位于不同区域或性能不同。 --- ### 🔴 关键差异点二:**系统状态异常影响调度** 看这段错误频繁出现: ```log [ERROR] send_sd_recording_power_down_timeout():1546 - [STM]set sd rec tm[1], tm=72 ``` 这个错误表示 SD 卡录制电源关闭超时,可能是存储子系统处于不稳定状态。 此外还有: ```log [ERROR] write_cur_index_to_disk():102 - [STM]sys_info is null [ERROR] close_storage_ctx_fd():3218 - [STM]get disk failed ``` ⚠️ 表明 **存储上下文未正确初始或共享内存(sys_info)为空指针**,这可能导致某些线程阻塞或重试逻辑,间接拖慢整体事件上报流程。 虽然主流程仍在运行,但底层模块异常可能引起 CPU 调度竞争、缓存失效等问题。 --- ### 🔴 关键差异点三:**系统重启或进程刚启动(NVMP_START_DONE)** 第二段日志中出现了重要信号: ```log Monitor: receive NVMP_START_DONE. pid:211 [NVMP]Main progress start done ``` 这是**主程序启动完成标志**,说明此时设备刚刚完成一次启动或重启! 而第一段日志没有此信息,说明它是“稳定运行”状态下的事件。 📌 所以: > 第二段日志发生在 **设备刚启动不久(boot up)**,系统正处于初始阶段,各种服务尚未完全就绪。 这就解释了: - 为何 `sys_info is null` - 为何 `jpeg_time_callback` 出现非法更新(时间跳变) - 为何 SSL 握手慢(证书加载、随机数生成等依赖系统熵池,启动初期不足) --- ### 🔴 时间戳跳跃问题(潜在 bug) 注意这一行: ```log [ERROR] jpeg_time_callback():866 - [AVDC][6.146]jpeg update start, shm jpeg time: 1791 -> 358 ``` 时间从 `1791` 回退到 `358` —— 明显是时间戳翻转或未同步! 这会导致音视频同步模块混乱,也可能引发短暂的数据流停滞。 --- ## ✅ 总结:为什么第二段 event 接口建连更慢? | 原因 | 证据支持 | 影响程度 | |------|----------|----------| | ✅ 设备刚启动(NVMP_START_DONE),系统未完全就绪 | 第二段有 `NVMP_START_DONE`,第一段无 | ⭐⭐⭐⭐☆ | | ✅ 存储系统异常(sys_info null, disk failed) | 多次报错,上下文释放失败 | ⭐⭐⭐☆☆ | | ✅ 网络链路较差(DNS/IP不同,SSL握手慢) | 目标IP,SSL耗时翻倍 | ⭐⭐⭐☆☆ | | ✅ JPEG 时间戳异常,媒体流同步出错 | 时间倒流 from 1791→358 | ⭐⭐☆☆☆ | ➡️ **根本原因是:第二段日志发生于设备重启后的早期阶段,系统处于不稳定状态,加上网络条件略差,导致整个事件上报流程延迟明显高于常态。** --- ## 💡 建议优方向 1. **避免在启动初期立即触发事件上传** - 添加系统就绪检查机制(如 wait for storage ready) - 延迟非紧急事件上报直到所有模块初始完成 2. **修复 `sys_info is null` 错误** - 检查 `sys_info` 初始顺序是否晚于 STM 模块使用时机 - 使用互斥锁或事件通知机制确保依赖就绪 3. **监控 SSL 握手耗时** - 记录每次 HTTPS 请求各阶段耗时(DNS / TCP / SSL / Send / Recv) - 设置阈值告警,自动切换备用域名或 CDN 节点 4. **校正时间戳同步逻辑** - 在 `jpeg_time_callback` 中加入防回滚机制: ```c if (new_time < old_time && (old_time - new_time) > MAX_JPEG_TS_JUMP) { log_error("JPEG timestamp rollback detected!"); return; } ``` 5. **优 NVMP 启动流程** - 将 `NVMP_START_DONE` 广播给所有依赖模块 - STM、DS、AMS 等应在收到该信号后再开始工作 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值