QNX----驱动篇

QNX HAM配置解析

2023-08-30  本文已影响0人  巴菲伟

一、HAM架构介绍

1、背景
当汽车驾驶过程中,可能会出现断电、部件故障、操作人员失误、软件故障等等系统故障。QNX团队研发出高可用性框架为构建高效的HAM系统提供了可靠的软件基础设施,除了支持面向硬件的HAM解决方案(例如CompactPCI和自定义硬件)之外,您还拥有在整个系统中出现软件故障之前隔离甚至修复软件故障的工具。
2、什么是HAM
HAM(High Availability Manager)是一个“智能看门狗”——一个高弹性的管理进程,它可以在系统服务或进程失败或不再响应时监视您的系统并执行多级恢复。作为一个自我监控的管理者,HAM对内部故障具有弹性。不管出于什么原因,如果HAM本身被异常地停止,它可以通过移交给一个称为“监护人”的镜像进程,立即并完全地重建自己的状态。简单说,可以用守护机制做进程保活的。
3、HAM架构特性

二、HAM基本元素

参考使用文档:https://www.qnx.com/developers/docs/7.0.0/#com.qnx.doc.ham/topic/about.html
1、entities

3、action
Action
Description
ham_action_restart()
重启
ham_action_execute()
执行一段脚本
ham_action_notify_pulse()
发送PULSE事件
ham_action_notify_signal()
发送系统信号事件
ham_action_waitfor()
等待
ham_action_log()
输出日志
ham_action_notify_signal_node()

ham_action_notify_pulse_node()

ham_action_heartbeat_healthy()

三、ham-monitor.conf文件分析

  1. ham-monitor.conf位置 : qnx_svp/dist/g9ph-aarch64/svp/etc/
  2. 预编译阶段:
    qnx_svp/dist/g9ph-aarch64/svp/目录下的etc、lib、bin三个文件夹拷贝到apps/qnx_ap/prebuilt/emmc_bu/对应的etc、lib、bin三个文件夹目录下。
  3. 启动流程:

ham-monitor.conf 文件内容

@processes
i2c1:json:{"name":"i2c-rcar-A-p0xe6508000-i320-v","restart_script":"/proc/boot/i2c-rcar-A -p0xe6508000 -i320 -v --u 1","pulse":10}
i2c2:json:{"name":"i2c-rcar-A-p0xe6510000-i318-v","restart_script":"/proc/boot/i2c-rcar-A -p0xe6510000 -i318 -v --u 2","pulse":11}
sdmmc_emmc:json:{"name":"devb-sdmmc-rcar_gen3blkdirectio=no,maxio=512,cache=16m,noatime,ra=256k:512k,rapolicy=aggressive,commit=none,naming=0#@cambounce=128kmemname=below4Gcamnopriv,quiet,cache,asyncsdioidx=2,emmc,bw=8,timing=hs200diskname=mmc@0sdmmcpartitions=on","restart_script":"/proc/boot/devb-sdmmc-rcar_gen3 blk directio=no,maxio=512,cache=16m,noatime,ra=256k:512k,rapolicy=aggressive,commit=none,naming=0#@ cam bounce=128k mem name=below4G cam nopriv,quiet,cache,async sdio idx=2,emmc,bw=8,timing=hs200 disk name=mmc@0 sdmmc partitions=on","pulse":12}
devc_serscif2:json:{"name":"devc-serscif-E-F-b115200-c66666666-t14scif1-u2","restart_script":"/proc/boot/devc-serscif -E -F -b115200 -c 66666666 -t 14 scif1 -u2","pulse":13}
slogger2:json:{"name":"slogger2","restart_script":"/proc/boot/slogger2","pulse":14}
screen:json:{"name":"screen-c/usr/lib/graphics/rcarm3/graphics.conf","restart_script":"/sbin/screen -c /usr/lib/graphics/rcarm3/graphics.conf","pulse":16}
..................

参数讲解:
screen:json: {
"name":"screen-c/usr/lib/graphics/rcarm3/graphics.conf",
"restart_script":"/sbin/screen -c /usr/lib/graphics/rcarm3/graphics.conf",
"pulse":16
}
screen: 在QNX环境中二进制命令 (QNX环境目前没有添加,需要手动加入,路径在binscan_info.txt中)
name : 作为存储启动screen屏幕的key数值
screen -c /usr/lib/graphics/rcarm3/graphics.conf : 在QNX环境下启动屏幕的命令
restart_script : 执行重新启动
/sbin/screen -c /usr/lib/graphics/rcarm3/graphics.conf : 在QNX环境下启动屏幕的命令
pulse : 发送重启PULSE事件
16 : 第16个事件

上一篇 下一篇

猜你喜欢

热点阅读