专栏算法工具链J6E camera diag sample

J6E camera diag sample

费小财2024-09-25
240
0

camera diag sample

功能概述

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

软件架构说明

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

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

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

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


诊断功能说明


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


此处定义的camera外设诊断,在libcam主体库中实现了框架,具体的外设诊断则由各Sensor/Deserial等子库定制实现:按主体框架的要求及外设功能安全手册描述,定义诊断node并向主体框架注册,具体camera诊断的实现与开发,可参考: :doc:`Camera专题: 诊断实现与使用说明 `。


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


- 提供诊断功能的开关,默认打开状态,支持主动关闭诊断功能。

- 内部有默认的诊断信息隐射关系,可进行诊断信息的自定义诊断信息映射。

- 支持配置打开或关闭发送与回调功能。


代码位置与目录结构


本sample中的camera诊断代码位置如下:


========== ===================================================================================== ===========================================

\     描述                                         备注

sample名称 camera diag

代码位置  {sdk_dir}hbre/camsys/libcam/src/diag

代码结构  diag                                         camera诊断代码


      ├── cam_diag.c                                    camera诊断主体框架


      ├── cam_diag_list.c                                  诊断链表实现


      ├── mon/                                       诊断监测功能实现子目录


      └── report/                                      诊断报告功能实现子目录

========== ===================================================================================== ===========================================

API流程说明

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


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


定制开发


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


诊断编译配置


该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的自恢复功能依赖诊断功能,若关闭诊断功能,则自恢复功能也将失效,更多可参见: :doc:`Camera专题: 自恢复功能使用说明 `。


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


  LIBS += -ldiaglib


  关于诊断API的使用,更多可参考: :doc: `诊断API `。


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


  /* #define CAM_CONFIG_LIBDIAG_EN */


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


诊断信息隐射


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在满足项目需求的同时,还需满足 :doc:`J6X FUSA错误集成策略 ` 的要求,本文中的camera外设诊断在错误等级定义上都属于NCF错误。


诊断信息处理


默认支持诊断事件回调通知功能,若有处理需要,应用可通过 :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侧的处理实现示例,具体详见: :doc:`J6X FUSA错误集成策略 `。


测试使用

--------


诊断开关


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


- 配置方式


  {

   "global": {

   "diag_disable": 1

   }

  }


- 配置环境变量方式

  {

   "global": {

   "env": {

   "CAM_DIAG_DISABLE": "1"

   }

   }

  }


- 直接环境变量方式


  # 运行前执行,诊断功能: 0-默认开,1-关

  export CAM_DIAG_DISABLE=1


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


诊断报告与回调开关


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


- 配置环境变量方式

  {

   "global": {

   "env": {

   "CAM_DIAG_REPORT": "1"

   }

   }

  }


- 直接环境变量方式

  # 运行前执行,选择诊断报告模式: 数字,默认0-不发送可回调,1-发送可回调,2-不发送不可回调,3-发送不可回调

  export CAM_DIAG_REPORT=1


测试示例


此处以 1V测试场景 1V_OVX8B_RX0 示例,使用E参数打开回调测试,更多场景参见::doc:`camera sample `。

  # 根据需要开关相应的报告模式,如 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)

  ...


注意事项

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

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



算法工具链
社区征文征程6技术深度解析官方教程
评论0
0/1000