首页 > 其他分享 >征程 6E camera diag sample

征程 6E camera diag sample

时间:2024-11-05 11:57:38浏览次数:1  
标签:00 diag event sample camera 65535 id

01 功能概述

本文的 demo sample 主要描述当前 camera 相关外设诊断的当前状态,并提供自定义实现的方法及使用说明。

1.1 软件架构说明

本 sample 基于现已实现的 camera 诊断架构,libcam 内的外设诊断功能对外设硬件状态进行监测,并支持将故障状态发送给 MCU 处理,或通过事件回调方式通知应用处理。

若打开诊断功能且使能诊断报告发送时,在 libcam.so 中会引用 libdiaglib.so 中的诊断发送 API,将诊断信息发送给 MCU,再由 MCU 侧进行处理。

若应用通过 API 注册了 camera 的事件回调处理函数,则会在故障状态变化时,通过该回调通知到应用进行处理。

Camera 外设诊断数据通路,默认支持应用注册的事件回调通知,但不发送诊断报告给 MCU,此处以 sample 形式提供,用户可根据实际项目或应用需要,进行定制,本文提供相应的定制使用说明。

1.2 诊断功能说明

Camera 外设诊断在 libcam 内实现,默认已实现了部分 Sensor/Serdes/Poc 设备的诊断功能,其在内部进行了诊断功能预定义,并以 diag_id 作为唯一识别索引,由诊断功能实现及实际硬件使用情况决定其值,可描述一个指定外设硬件的相应故障,关于其定义可参见: :ref:camera diag id。

此处定义的 camera 外设诊断,在 libcam 主体库中实现了框架,具体的外设诊断则由各 Sensor/Deserial 等子库定制实现:按主体框架的要求及外设功能安全手册描述,定义诊断 node 并向主体框架注册。

用户可根据实际应用需求,进行自定义定制开发与使用:

  • 提供诊断功能的开关,默认打开状态,支持主动关闭诊断功能。
  • 内部有默认的诊断信息隐射关系,可进行诊断信息的自定义诊断信息映射。
  • 支持配置打开或关闭发送与回调功能。

1.3 代码位置与目录结构

API 流程说明

以下为 camera 诊断中相关的 API 调用流程:

此处的 :ref:hb_cam_set_event_callback 为可选调用,若应用需要处理 camera 诊断事件,可在初始化完成之后通过该 API 进行回调注册,之后在有故障发生或恢复时会通过该回调通知应用处理。

02 定制开发

本文中的 camera 外设诊断功能已在 libcam 库中实现,并默认打开编译集成,若有相应的定制需求,可参考下文进行开发。

2.1 诊断编译配置

该 camera 外设诊断功能由 libcam 中 Kconfig 的编译配置选项 HB_PKG_LIBCAM_DIAG 决定是否编译使能,其默认值为 y,集成使用,若需要关闭该功能可按下操作:

  # 在配置文件(此处为默认,请按项目实际使用选择)中:
  # horizon/j6/defconfig/j6e_debug_defconfig
  # 默认为y,可配置n关闭编译集成:
  export HB_PKG_LIBCAM_DIAG=n

在关闭该诊断功能之后,src/diag 目录中的代码则直接不会编译集成到 libcam 库中,关闭诊断功能不影响正常数据处理功能。

camera 的自恢复功能依赖诊断功能,若关闭诊断功能,则自恢复功能也将失效。

此处 libcam 中的诊断报告默认使用诊断 API 进行诊断状态报告,因此在应用集成时若编译报错,需注意对该 libdiaglib 库的引用。

LIBS += -ldiaglib

上述诊断报告的发送,可通过配置头文件 src/inc/private/cam_config.h 中的宏 CAM_CONFIG_LIBDIAG_EN 关闭:

/* #define CAM_CONFIG_LIBDIAG_EN */

注释该宏 CAM_CONFIG_LIBDIAG_EN 的定义即可关闭诊断发送功能,关闭后将不会发送诊断信息到 MCU,而由一行打印替代。

2.2 诊断信息映射

camera 诊断内部由 diag_id 唯一定义,在报告给 MCU 或用户时,可根据实际需要进行映射,将其转换为 module_id/event_id 进行报告。

目前内默认有一组映射关系,详见: :ref:诊断报告映射关系说明 。

该组默认的映射关系由 2 部分组成,用户可根据实际需要进行修改:按诊断类型定义了 module_id 的 BASE 值,定义在 src/diag/report/report.h 内:

#define CAM_DIAG_SERDES_BASE      0xC010u
#define CAM_DIAG_SENSOR_BASE      0xC000u
#define CAM_DIAG_POC_BASE        0xC020u

若要完全修改映射的对应关系,也可以直接修改 src/diag/report/report.c 内的 cam_diag_mapping() 函数实现,目前默认为:

int32_t cam_diag_mapping(uint32_t diag_id, cam_diag_map_s *map_info, void *spec_mapping)
{
uint16_t base_id = 0;
if (spec_mapping != NULL) {
vin_info("use spec mapping function\n");
return RET_OK;
}
/* modify those mapping code if need /
*      /* user-defined mapping start /
*      /* here is default camera diag mapping: diag_id -> module_id / event_id /
      if (DIAG_DEVTYPE(diag_id) == (uint32_t)CAM_DES) {
          base_id = CAM_DIAG_SERDES_BASE;
      } else if (DIAG_DEVTYPE(diag_id) == (uint32_t)CAM_SNR) {
          base_id = CAM_DIAG_SENSOR_BASE;
      } else if (DIAG_DEVTYPE(diag_id) == (uint32_t)CAM_POC) {
          base_id = CAM_DIAG_POC_BASE;
      } else {
          vin_err("invalid devtype %d, diag_id 0x%x\n",
              DIAG_DEVTYPE(diag_id), diag_id);
          return -HBN_STATUS_CAM_NOT_SUPPORT;
      }
      //coverity[misra_c_2012_rule_10_3_violation:SUPPRESS], ## violation reason SYSSW_V_10.3.01
      map_info->module_id = base_id + DIAG_SUBTYPE(diag_id);
      //coverity[misra_c_2012_rule_10_3_violation:SUPPRESS], ## violation reason SYSSW_V_10.3.01
      map_info->event_id = DIAG_DEVINDEX(diag_id);
*      /* user-defined mapping end */
vin_info("mapping: diag_id 0x%x -> module_id 0x%04x, event_id 0x%04x\n",
diag_id, map_info->module_id, map_info->event_id);
return RET_OK;
}

此处只需要按需要重新定义 diag_id 与 module_id/event_id 的映射关系,并在上述函数中实现 该转换即可,之后的诊断发送与回调则会使用转换后的 module_id/event_id进行处理。

此处自定义并转换的 module_id 及 event_id 在满足项目需求的同时,还需满 J6X FUSA 错误集成策略的要求,本文中的 camera 外设诊断在错误等级定义上都属于 NCF 错误。

2.3 诊断信息处理

默认支持诊断事件回调通知功能,若有处理需要,应用可通过 :ref:hb_cam_set_event_callback 注册回调函数之后即可在诊断故障或恢复时进行相应的处理,示例如下:该回调函数是按 port 注册的,支持对不同通路使用不同的回调处理函数,若通路不注册该回调,则不会收到处理通知。

static void camera_diag_event_callback(cam_event_t* fault_info)
{
if (fault_info == NULL) {
pr_err("** camera event cb: fault_info NULL\n");
return;
}
pr_info("** p%d %s event: module_id=0x%04x event_id=0x%04x status=%d\n",
fault_info->port, (fault_info->event_type == HB_CAM_EVENT_DIAG) ? "diag" : "unknown",
fault_info->module_id, fault_info->event_id, fault_info->status);
}
static int32_t camera_diag_event_cb_init(void)
{
int32_t ret;
uint32_t i;
if (!cam_diag_event)
return 0;
pr_info("hb_cam_set_event_callback() ...\n");
for (i = 0; i < HB_VIO_PIPELINE_MAX; i++) {
if (!vflow_pipe_isvalid(i))
continue;
ret = hb_cam_set_event_callback(i, camera_diag_event_callback);
if (ret < 0) {
pr_err("hb_cam_set_event_callback(%d) error %d\n", i, ret);
return ret;
}
}
return ret;
}

若打开诊断发送功能,在出现故障时,该诊断信息会被发送到 MCU 侧,由 MCU 侧进行处理,此处在发送的信息中已将 module_id 与 event_id 分别按 2 字节(LSB)信息填充在 payload 中,处理时可用。

static Std_ReturnType Call_CustomSelfFaultHandle(uint16 ModuleId, uint16 EventId, uint16 EventLevel, uint16 EventState, uint8 *Payload, uint16 PayloadLen)
{
Std_ReturnType RetVal = (Std_ReturnType)E_OK;
/* Here, the user parses the payload information */
return RetVal;
}

上为 MCU 侧的处理实现示例。

03 测试使用

3.1 诊断开关

若在编译集成时集成了诊断功能,则默认该诊断功能处于打开状态,若想在运行时也可以主动关闭诊断功能,有以下方式可关闭:

  • 配置方式
  {
    "global": {
      "diag_disable": 1
    }
  }
  • 配置环境变量方式
  {
    "global": {
      "env": {
        "CAM_DIAG_DISABLE": "1"
      }
    }
  }
  • 直接环境变量方式
  # 运行前执行,诊断功能: 0-默认开,1-关
  export CAM_DIAG_DISABLE=1

上述方式都可以关闭诊断功能,其中配置方式多用于集成固化,环境变量方式多用于临时调试,请根据需要使用。

3.2 诊断报告与回调开关

在已打开诊断功能的前提下,对诊断报告的处理,支持报告给 MCU 与回调通知应用,默认为不报 MCU 但通知回调,若想修改该开关,有以下方式:

  • 配置环境变量方式
  {
    "global": {
      "env": {
        "CAM_DIAG_REPORT": "1"
      }
    }
  }
  • 直接环境变量方式
  # 运行前执行,选择诊断报告模式: 数字,默认0-不发送可回调,1-发送可回调,2-不发送不可回调,3-发送不可回调
  export CAM_DIAG_REPORT=1  

3.3 测试示例

此处以 1V 测试场景 1V_OVX8B_RX0 示例,使用 E 参数打开回调测试。

 # 根据需要开关相应的报告模式,如 1-发送可回调:
  export CAM_DIAG_REPORT=1
  # 之后运行测试case:
  /app/sample/S83_Sample/S83E04_Module/camera_sample/scripts/camera_sample.sh matrix 1V_OVX8B_RX0 E r100
  # 或直接命令行:
  /app/sample/S83_Sample/S83E04_Module/camera_sample/bin/camera_sample -c /app/sample/S83_Sample/S83E04_Module/camera_sample/cfg/case_matrix/1V_OVX8B_RX0/hb_j6dev.json -v /app/sample/S83_Sample/S83E04_Module/camera_sample/cfg/case_matrix/1V_OVX8B_RX0/vpm_config.json -E -r 100

在上述 case 运行过程中,可操作寄存器进行错误注入及清除,此处仅为一种方式的示例,更多错误注入方式请参考外设手册:

# 错误注入:
  i2ctransfer -y -f 0 w3@0x40 0x00 0x29 0x10
  # 延时:
  sleep 1
  # 错误恢复:
  i2ctransfer -y -f 0 w3@0x40 0x00 0x29 0x08

测试有 log 如下,可看到有几个诊断事件的错误及恢复信息报出:

  [camera_sample]:cam_cfg_file = /app/sample/S83_Sample/S83E04_Module/camera_sample/cfg/case_matrix/1V_OVX8B_RX0/hb_j6dev.json
  [camera_sample]:vio_cfg_file = /app/sample/S83_Sample/S83E04_Module/camera_sample/cfg/case_matrix/1V_OVX8B_RX0/vpm_config.json
  [camera_sample]:vflow_type = 0x1000000
  [camera_sample]:cam_diag_event = 1
  [camera_sample]:run_time = 100
  [camera_sample]:camera_sample start
  [camera_sample]:hb_vio_init(/app/sample/S83_Sample/S83E04_Module/camera_sample/cfg/case_matrix/1V_OVX8B_RX0/vpm_config.json) ...
  [camera_sample]:hb_cam_init(0, /app/sample/S83_Sample/S83E04_Module/camera_sample/cfg/case_matrix/1V_OVX8B_RX0/hb_j6dev.json) ...
  [camera_sample]: auto get 1 pipe mask 0x1 good 0xffffffff
  [camera_sample]:hb_cam_set_event_callback() ...
  [camera_sample]:hb_vio_start_pipeline(0) ...
  [camera_sample]:thread cam0:CIM_RAW work
  [camera_sample]:camera flow0:t24-CIM_RAW frame 25: fps 25.00
  [camera_sample]:camera flow0:t24-CIM_RAW frame 50: fps 25.00
  [camera_sample]:camera flow0:t24-CIM_RAW frame 75: fps 25.00
  [camera_sample]:** p0 diag event: module_id=0xc015 event_id=0x0001 status=1
  [camera_sample]:** p0 diag event: module_id=0xc019 event_id=0x000f status=1
  [camera_sample]:** p0 diag event: module_id=0xc012 event_id=0x0001 status=1
  [camera_sample]:** p0 diag event: module_id=0xc011 event_id=0x0001 status=1
  [camera_sample]:camera flow0:t24-CIM_RAW frame 99: fps 24.00
  [camera_sample]:** p0 diag event: module_id=0xc015 event_id=0x0001 status=0
  [camera_sample]:** p0 diag event: module_id=0xc019 event_id=0x000f status=0
  [camera_sample]:** p0 diag event: module_id=0xc012 event_id=0x0001 status=0
  [camera_sample]:** p0 diag event: module_id=0xc011 event_id=0x0001 status=0
  [camera_sample]:camera flow0:t24-CIM_RAW frame 123: fps 24.00
  [camera_sample]:camera flow0:t24-CIM_RAW frame 148: fps 25.00
  [camera_sample]:camera flow0:t24-CIM_RAW frame 173: fps 25.00
  [camera_sample]:camera flow0:t24-CIM_RAW frame 198: fps 25.00
  ...

同时 logcat 中也有相关的诊断与报告等信息(此处仅为示例展示,若中间有 log 打印信息变化不一定严格对应):

  I/    (234391): [158931.593750][camera_diag_gpioe]:[gpioe_epoll_thread][285] egpio 479 status is 0
  I/    (234391): [158931.593750][camera_diag_mon]:[mon_report_status_changed][239] status_changed diag_id 0x10f0ff, status 1,gpio 479, value 0x0
  I/    (234391): [158932.156250][vin.c]:[vin_entity_put_buf][476]pipe 0, vin put buf vin hw id = 0
  I/    (234391): [158932.187500][vin.c]:[vin_entity_put_buf][476]pipe 0, vin put buf vin hw id = 0
  I/    (234391): [158932.234375][vin.c]:[vin_entity_put_buf][476]pipe 0, vin put buf vin hw id = 0
  I/    (234391): [158931.703125][camera_diag_mon]:[mon_report_status_changed][230] status_changed diag_id 0x101055, status 32,bus 0, dev 0x29, reg 0x45, value 0x1
  I/    (234391): [158931.703125][camera_diag_report]:[cam_diag_mapping][107] mapping: diag_id 0x101055 -> module_id 0xc015, event_id 0x0001
  I/    (234391): [158931.703125][camera_diag_report]:[report_thread][189] > module_id: 0xc015, event_id: 0x0001, status: 1 send call
  W/    (234391): [A][time_3 :158931 s, 691 ms] [U] stl_service Rcv_Occur_msg: 49173-1-NCF-Occur (65535, 65535, 65535) 
  I/    (234391): [158931.703125][camera_diag_mon]:[mon_report_status_changed][230] status_changed diag_id 0x10f099, status 512,bus 0, dev 0x29, reg 0x2a, value 0xa
  I/    (234391): [158931.703125][camera_diag_report]:[cam_diag_mapping][107] mapping: diag_id 0x10f099 -> module_id 0xc019, event_id 0x000f
  I/    (234391): [158931.703125][camera_diag_report]:[report_thread][189] > module_id: 0xc019, event_id: 0x000f, status: 1 send call
  W/    (234391): [A][time_3 :158931 s, 691 ms] [U] stl_service Rcv_Occur_msg: 49177-15-NCF-Occur (65535, 65535, 65535) 
  I/    (234391): [158931.703125][camera_diag_mon]:[mon_report_status_changed][230] status_changed diag_id 0x101022, status 4,bus 0, dev 0x29, reg 0x2c, value 0x1
  I/    (234391): [158931.703125][camera_diag_report]:[cam_diag_mapping][107] mapping: diag_id 0x101022 -> module_id 0xc012, event_id 0x0001
  I/    (234391): [158931.703125][camera_diag_report]:[report_thread][189] > module_id: 0xc012, event_id: 0x0001, status: 1 send call
  W/    (234391): [A][time_3 :158931 s, 693 ms] [U] stl_service Rcv_Occur_msg: 49170-1-NCF-Occur (65535, 65535, 65535) 
  I/    (234391): [158931.703125][camera_diag_mon]:[mon_report_status_changed][230] status_changed diag_id 0x101011, status 2,bus 0, dev 0x29, reg 0x26, value 0x1
  I/    (234391): [158931.703125][camera_diag_report]:[cam_diag_mapping][107] mapping: diag_id 0x101011 -> module_id 0xc011, event_id 0x0001
  I/    (234391): [158931.703125][camera_diag_report]:[report_thread][189] > module_id: 0xc011, event_id: 0x0001, status: 1 send call
  W/    (234391): [A][time_3 :158931 s, 694 ms] [U] stl_service Rcv_Occur_msg: 49169-1-NCF-Occur (65535, 65535, 65535) 
  I/    (234391): [158931.703125][camera_diag_gpioe]:[gpioe_epoll_thread][285] egpio 479 status is 0
  ...
  I/    (234391): [158940.906250][camera_diag_gpioe]:[gpioe_epoll_thread][285] egpio 479 status is 1
  I/    (234391): [158940.906250][camera_diag_mon]:[mon_report_status_changed][239] status_changed diag_id 0x10f0ff, status 0,gpio 479, value 0x1
  I/    (234391): [158940.906250][camera_diag_mon]:[mon_report_status_changed][230] status_changed diag_id 0x101055, status 0,bus 0, dev 0x29, reg 0x45, value 0x0
  I/    (234391): [158940.906250][camera_diag_report]:[cam_diag_mapping][107] mapping: diag_id 0x101055 -> module_id 0xc015, event_id 0x0001
  I/    (234391): [158940.906250][camera_diag_report]:[report_thread][189] > module_id: 0xc015, event_id: 0x0001, status: 0 send call
  W/    (234391): [A][time_7 :158940 s, 901 ms] [U] stl_service Rcv_Fixed_msg: 49173-1-NCF-Fixed (65535, 65535, 65535) 
  I/    (234391): [158940.906250][camera_diag_report]:[cam_diag_mapping][107] mapping: diag_id 0x10f099 -> module_id 0xc019, event_id 0x000f
  I/    (234391): [158940.906250][camera_diag_mon]:[mon_report_status_changed][230] status_changed diag_id 0x10f099, status 0,bus 0, dev 0x29, reg 0x2a, value 0x2
  I/    (234391): [158940.906250][camera_diag_report]:[report_thread][189] > module_id: 0xc019, event_id: 0x000f, status: 0 send call
  W/    (234391): [A][time_7 :158940 s, 901 ms] [U] stl_service Rcv_Fixed_msg: 49177-15-NCF-Fixed (65535, 65535, 65535) 
  I/    (234391): [158940.906250][camera_diag_report]:[cam_diag_mapping][107] mapping: diag_id 0x101022 -> module_id 0xc012, event_id 0x0001
  I/    (234391): [158940.906250][camera_diag_mon]:[mon_report_status_changed][230] status_changed diag_id 0x101022, status 0,bus 0, dev 0x29, reg 0x2c, value 0x0
  I/    (234391): [158940.906250][camera_diag_report]:[report_thread][189] > module_id: 0xc012, event_id: 0x0001, status: 0 send call
  W/    (234391): [A][time_7 :158940 s, 901 ms] [U] stl_service Rcv_Fixed_msg: 49170-1-NCF-Fixed (65535, 65535, 65535) 
  I/    (234391): [158940.906250][camera_diag_mon]:[mon_report_status_changed][230] status_changed diag_id 0x101011, status 0,bus 0, dev 0x29, reg 0x26, value 0x0
  I/    (234391): [158940.906250][camera_diag_report]:[cam_diag_mapping][107] mapping: diag_id 0x101011 -> module_id 0xc011, event_id 0x0001
  I/    (234391): [158940.906250][camera_diag_report]:[report_thread][189] > module_id: 0xc011, event_id: 0x0001, status: 0 send call
  W/    (234391): [A][time_7 :158940 s, 902 ms] [U] stl_service Rcv_Fixed_msg: 49169-1-NCF-Fixed (65535, 65535, 65535) 
  ...

并在 dmesg 中收到相应的诊断信息(此处仅为示例展示,若中间有 log 打印信息变化不一定严格对应):

  [159372.279022] [A][time_2 :159371 s, 700 ms] [K] Rcv_Occur_msg: 49173-1-NCF-Occur (65535, 65535, 65535)payload(21 192 1 0 0 0 0 0 0 0 0 0 0 0 0 0)
  [159372.279085] [A][time_6 :159371 s, 700 ms] [U] Ack from Rcore recv_Occur_msg: 49173-1-NCF-Occur (65535, 65535, 65535)
  [159372.279099] [diag_ncf_event_ipc_send:444]hb_ipc_send succ! moduleid:49173, eventid:1
  [159372.279834] [A][time_2 :159371 s, 701 ms] [K] Rcv_Occur_msg: 49177-15-NCF-Occur (65535, 65535, 65535)payload(25 192 15 0 0 0 0 0 0 0 0 0 0 0 0 0)
  [159372.279889] [A][time_6 :159371 s, 701 ms] [U] Ack from Rcore recv_Occur_msg: 49177-15-NCF-Occur (65535, 65535, 65535)
  [159372.279899] [diag_ncf_event_ipc_send:444]hb_ipc_send succ! moduleid:49177, eventid:15
  [159372.281743] [A][time_2 :159371 s, 703 ms] [K] Rcv_Occur_msg: 49170-1-NCF-Occur (65535, 65535, 65535)payload(18 192 1 0 0 0 0 0 0 0 0 0 0 0 0 0)
  [159372.281800] [A][time_6 :159371 s, 703 ms] [U] Ack from Rcore recv_Occur_msg: 49170-1-NCF-Occur (65535, 65535, 65535)
  [159372.281811] [diag_ncf_event_ipc_send:444]hb_ipc_send succ! moduleid:49170, eventid:1
  [159372.282172] [A][time_2 :159371 s, 703 ms] [K] Rcv_Occur_msg: 49169-1-NCF-Occur (65535, 65535, 65535)payload(17 192 1 0 0 0 0 0 0 0 0 0 0 0 0 0)
  [159372.282235] [A][time_6 :159371 s, 704 ms] [U] Ack from Rcore recv_Occur_msg: 49169-1-NCF-Occur (65535, 65535, 65535)
  [159372.282247] [diag_ncf_event_ipc_send:444]hb_ipc_send succ! moduleid:49169, eventid:1
  ...
  [159373.286246] [A][time_5 :159372 s, 708 ms] [K] Rcv_Fixed_msg: 49173-1-NCF-Fixed (65535, 65535, 65535)payload(21 192 1 0 0 0 0 0 0 0 0 0 0 0 0 0)
  [159373.286322] [A][time_10 :159372 s, 708 ms] [U] Ack from Rcore recv_Fixed_msg: 49173-1-NCF-Fixed (65535, 65535, 65535)
  [159373.286336] [diag_ncf_event_ipc_send:444]hb_ipc_send succ! moduleid:49173, eventid:1
  [159373.286689] [A][time_5 :159372 s, 708 ms] [K] Rcv_Fixed_msg: 49177-15-NCF-Fixed (65535, 65535, 65535)payload(25 192 15 0 0 0 0 0 0 0 0 0 0 0 0 0)
  [159373.286748] [A][time_10 :159372 s, 708 ms] [U] Ack from Rcore recv_Fixed_msg: 49177-15-NCF-Fixed (65535, 65535, 65535)
  [159373.286758] [diag_ncf_event_ipc_send:444]hb_ipc_send succ! moduleid:49177, eventid:15
  [159373.286910] [A][time_5 :159372 s, 708 ms] [K] Rcv_Fixed_msg: 49170-1-NCF-Fixed (65535, 65535, 65535)payload(18 192 1 0 0 0 0 0 0 0 0 0 0 0 0 0)
  [159373.286971] [A][time_10 :159372 s, 708 ms] [U] Ack from Rcore recv_Fixed_msg: 49170-1-NCF-Fixed (65535, 65535, 65535)
  [159373.286982] [diag_ncf_event_ipc_send:444]hb_ipc_send succ! moduleid:49170, eventid:1
  [159373.287136] [A][time_5 :159372 s, 708 ms] [K] Rcv_Fixed_msg: 49169-1-NCF-Fixed (65535, 65535, 65535)payload(17 192 1 0 0 0 0 0 0 0 0 0 0 0 0 0)
  [159373.287190] [A][time_10 :159372 s, 708 ms] [U] Ack from Rcore recv_Fixed_msg: 49169-1-NCF-Fixed (65535, 65535, 65535)
  [159373.287202] [diag_ncf_event_ipc_send:444]hb_ipc_send succ! moduleid:49169, eventid:1
  ....

同时 MCU 侧会收到相应的诊断报告信息(此处仅为示例展示,若中间有log打印信息变化不一定严格对应):

  [0159375.392403 0][M][time_5: 159371 s, 700 ms] Recv user ncf event: 49173-1-Occur (65535, 65535, 65535), Payload(21-192-01-00 00-00-00-00 00-00-00-00 00-00-00-00)
  [0159375.394013 0][M][time_5: 159371 s, 701 ms] Recv user ncf event: 49177-15-Occur (65535, 65535, 65535), Payload(25-192-15-00 00-00-00-00 00-00-00-00 00-00-00-00)
  [0159375.395815 0][M][time_5: 159371 s, 703 ms] Recv user ncf event: 49170-1-Occur (65535, 65535, 65535), Payload(18-192-01-00 00-00-00-00 00-00-00-00 00-00-00-00)
  [0159375.412514 0][M][time_5: 159371 s, 703 ms] Recv user ncf event: 49169-1-Occur (65535, 65535, 65535), Payload(17-192-01-00 00-00-00-00 00-00-00-00 00-00-00-00)
  ...
  [0159376.398015 0][M][time_9: 159372 s, 708 ms] Recv user ncf event: 49173-1-Fixed (65535, 65535, 65535), Payload(21-192-01-00 00-00-00-00 00-00-00-00 00-00-00-00)
  [0159376.399626 0][M][time_9: 159372 s, 708 ms] Recv user ncf event: 49177-15-Fixed (65535, 65535, 65535), Payload(25-192-15-00 00-00-00-00 00-00-00-00 00-00-00-00)
  [0159376.401427 0][M][time_9: 159372 s, 708 ms] Recv user ncf event: 49170-1-Fixed (65535, 65535, 65535), Payload(18-192-01-00 00-00-00-00 00-00-00-00 00-00-00-00)
  [0159376.418117 0][M][time_9: 159372 s, 708 ms] Recv user ncf event: 49169-1-Fixed (65535, 65535, 65535), Payload(17-192-01-00 00-00-00-00 00-00-00-00 00-00-00-00)
  ...

3.4 注意事项

上述示例仅为单路接入使用在特定硬件上的使用及注入测试,且在诊断功能已实现的前提下进行的测试示例。

对于自定义硬件及场景,则需根据实际硬件进行相应的配置,并适配相应的测试注入命令进行功能验证。

标签:00,diag,event,sample,camera,65535,id
From: https://www.cnblogs.com/horizondeveloper/p/18527568

相关文章

  • Three.js相机Camera
    参考地址首页前端教程【Three.js】知识梳理五:Three.js相机Camera我心飞翔•2023年5月10日上午10:36•前端教程•阅读1364目录1.相机类型1.1正交相机1.2透视相机2.相机属性2.1视角(FOV)2.2宽高比(Aspect)2.3近裁剪面(Near)和远裁剪面(Far)3.不同方向的投......
  • BEVDet4D: Exploit Temporal Cues in Multi-camera 3D Object Detection阅读小结
    BEVDet4D:ExploitTemporalCuesinMulti-camera3DObjectDetectionBEVDet4D:在多相机三维目标检测中利用时间线索摘要背景:单帧数据包含有限信息,限制了基于视觉的多相机3D目标检测性能。BEVDet4D提出:提出BEVDet4D范式,将BEVDet从仅空间的3D扩展到时空4D工作空间。改进:通过......
  • BEVDet: High-Performance Multi-Camera 3D Object Detection in Bird-Eye-View阅读小
    BEVDet:High-PerformanceMulti-Camera3DObjectDetectioninBird-Eye-ViewBEVDet高性能多相机鸟瞰视图3D目标检测论文概述BEVDet是一种模块化设计的3D目标检测框架,以鸟瞰视图(Bird-Eye-View,BEV)执行3D目标检测,通过现有模块构建其框架,并通过定制数据增强策略和优化非......
  • 什么是深度学习中的采样(sample)
    在深度学习中,采样(Sample)主要是指从数据集中选取的单个数据点或一组数据点。采样过程涵盖了随机采样、分层采样、下采样和过采样等多种方法。其中,随机采样是最基础的形式,涉及到从数据集中随机选取数据点。过采样和下采样则常用于解决类别不平衡问题。具体到深度学习任务,例如在训练......
  • IntelliJ IDEA-Diagrams(图表)插件的使用
    IntelliJIDEA-Diagrams(图表)插件的使用简介Diagrams插件是IntelliJIDEA内置的插件,它为基于IntelliJIDE的所有本地图表类型提供API。此插件包含对以下从源代码中完全自动生成的图表的支持:1.UML类图(当前使用于Java和KotlinJVM)2.IDEA模块依赖关系图3.在GitDiff视图下的......
  • 征程 6 环视快启 sample
    01功能概述环视4V解串器直接接到main域,mcu访问main域i2c、gpio、lpwm,对camerasensor、serdes以及lpwm进行初始化,完成环视的快速出图。mcu启动后,会在mcutask中调用Camera_Init接口,完成camerasensor、serdes以及lpwm的配置,并使能数据流,数据会通过加串器......
  • Camera摄像头在 Windows 中不工作的解决方案
    1.安装摄像头驱动 2.检查设备上的相机开关或按钮某些笔记本电脑和便携设备具有可打开或关闭相机的物理开关或按钮。关闭后,设备可能无法识别已安装相机,或可能导致相机显示带有斜杠的相机图像。如果笔记本电脑具有开关或按钮,请确保其处于打开位置,然后再使用相机。这些开关或......
  • Cinemachine系列——CinemachineBrain & CinemachineVirtualCamera
    CinemachineBrainCinemachineBrain是Unity摄像机与场景中的Cinemachine虚拟摄像机之间的链接。它监控优先级堆栈以选择当前的虚拟摄像机,并在必要时进行混合。最后,也是最重要的一点,它将虚拟摄像机的状态应用到附加的Unity摄像机上。CinemachineBrain还定义了虚拟摄像机之......
  • Camera
    基础概念Unity场景在三维空间中表示游戏对象。由于观察者的屏幕是二维屏幕,Unity需要捕捉视图并将其“平面化”以进行显示。它使用摄像机来实现这一点。在Unity中,您可以通过将一个Camera组件添加到游戏对象来创建摄像机。常用属性CullingMask通过选择层来渲染指定层的......
  • lintsampler:高效从任意概率分布生成随机样本的新方法
    在实际应用中,我们经常需要从给定的概率密度函数(PDF)中抽取随机样本。这种需求在多个领域都很常见,例如:估计统计量进行蒙特卡洛模拟生成粒子系统用于物理仿真对于标准概率分布,如均匀分布或高斯分布(正态分布),numpy和scipy生态系统提供了现成的解决方案。通过numpy.rand......