当前位置: 首页 > web >正文

【回眸】Aurix TC397 IST 以太网 UDP 相关开发

前言

关于移植IST功能至 Infineon TC397上主要涉及到UDP发送报文及接收。IST是安全诊断相关的工作

Nvidia IST介绍

Orin系列芯片会提供一种机制来检测由系统内测(IST)所产生的永久的故障,IST 应该在 Orin-x 功能安全系统中使用期间被启动。IST 需要以特定的规则来配置零部件的软硬件。IST 可以配置来执行一个在单 Orin-x 或者 Orin-x 外加一个 dGPU 的模式组成智驾系统。整个错误(Failsafe)处理机制如下:

①当系统无错误时,标准的电源时序会通过特定的 I/O 端或总线(CAN/Flexray/Ethernet PHYs) 唤醒整个系统。这也包含启动所有 SC7 断电域,然后是支持从内存恢复的操作系统 DRIVE OS,以结束正在运行的活动状态。其中,启动的快慢取决于内存的自恢复能力。

②当 SC7 模块失效或 Timeout 时会产生相应的失效时序,芯片内部错误、温度异常导致的宕机、低压/过压等都是这些失效模式之一。整体来说,如果芯片处于失效状态时,实际是首先唤醒 MCU 后,通过内部检测机制确认是否进入 SC7 。已经 timeout 或故障时,需要控制 VRS-10 关闭所有的 SC7 电源轨,只留下唤醒 PHY 线处于低电压供电状态。MCU 最终会将PMIC 模块至于待机状态后将MCU 关闭。

此外,系统内测程序 ITS 还需要检测 Orin 是否长期维持在低功耗状态 SC7下,如果是,则系统将会退出该低功耗SC7模式。并且在下一个系统自检过程中判断是否有重新进入低功耗SC7模式的需求。

对于IST系统内侧应用而言,NVIDIA Orin 专门配置了相应的IST管理器来实现如下一些功能子项:

①提供一个用于设置IST配置的接口。将用户应用程序设置的配置与NVIDIA DRIVE Orin通信™ 以太网上的软件(IST客户端)(用于钥匙打开/关闭Orin IST)。

②提供一个用于读取IST结果的接口。提供接口,平台电源管理器可以使用这些接口查询是否必须执行Keyon/KeyOff IST,并查询IST是否已完成。

③在引导过程中,决定NVIDIA Orin应处于IST模式还是正常模式。

④通过GPIO断言触发IST,监控NVIDIA Orin上IST的执行,并通过超时检测IST卡住的场景。

⑤提供一个中止IST执行的接口。

⑥检测并处理以下硬件错误情况。

在某些情况下,IST的执行会受阻,且该阻塞会由基于GPT的硬件计时器检测到,该计时器具有可配置的超时。与 DRIVE Orin的通信™ SoC由具有可配置超时的软件计时器进行监控。这取决于MCU和Orin之间的活动以太网(VLAN200)连接。客户应用程序应使用NvMCU_ISTManager提供的接口,在每个电源循环期间设置有效的IST配置。这是使用串行控制台Shell命令完成的。

IST开发(自下而上)

从底层开始介绍开发思路。

函数1:shellIST_set_ist_config

函数原型:boolean shellIST_set_ist_config(pchar args, void *data,IfxStdIf_DPipe *io)

先需要一个config IST的值,经过阅读手册,可以看到应该设置为0x0或者0x1

注意这里需要接收输入值,所以是有输入参数的,同时也要进行参数检测,检测传入的参数是否符合要求。

另外,在设置成功后还需要告诉用户 IST设置的值是多少。

函数2:shellIST_get_ist_config

函数原型:boolean shellIST_get_ist_config(pchar args, void *data,IfxStdIf_DPipe *io)

它支持两种操作模式:

  1. 显示帮助信息:当用户输入 ? 时,提供命令语法和使用说明。
  2. 返回当前配置值:直接获取并输出 IST 的配置状态。

详细逻辑分析
  1. 参数解析与帮助处理

    • 输入参数
      • args: 指向命令参数的指针(如用户输入的额外选项)。
      • data: 未使用的上下文数据指针(保留参数)。
      • io: 输入输出管道,用于发送响应或日志。
    • 关键步骤
      • 通过 Ifx_Shell_matchToken(&args, "?") 检查用户是否输入了 ? 参数。
      • 如果匹配成功:
        • 向 io 输出命令语法提示:Syntax : get_ist_configure(no parameter)
        • 补充说明命令用途:get IST setting value
        • 返回 TRUE,终止后续逻辑。
  2. 获取并返回配置值

    • 无 ? 参数时的操作
      • 调用 ist_get_ist_cfg() 获取当前 IST 配置值,存储在 cfgValue 中。
      • 通过 IfxStdIf_DPipe_print 将配置值以十六进制格式输出到 io,例如:IST setting value is 0x1
      • 返回 TRUE,表示命令执行成功。
步骤条件/操作输出内容
1检查 args 是否包含 ?输出命令语法和使用说明
2若无 ?,调用 ist_get_ist_cfg获取当前配置值并通过 io 输出

函数3:shellIST_get_ist_info

函数原型:boolean shellIST_get_ist_info(pchar args, void *data, IfxStdIf_DPipe *io)

特性描述
参数无关性仅检查是否存在 ? 参数,不依赖其他输入内容。
简单流程逻辑分支清晰:帮助信息优先于功能执行。
固定响应无论操作是否成功,均返回 TRUE,可能掩盖潜在错误(如 ist_get_ist_info 失败)。

 

http://www.xdnf.cn/news/1733.html

相关文章:

  • 【python】Python 中,单下划线(_)和双下划线(__)开头以及结尾的命名方式具有特殊的含义和用途
  • 每日算法——快乐数、两数之和
  • 域控重命名导致无法登录
  • 回溯--一种暴力搜索算法
  • write函数
  • RTSP播放器实现回调RGB|YUV给视觉算法,然后二次编码推送到RTMP服务
  • ORACLE DATAGUARD遇到GAP增量恢复方式修复RAC环境备机的实践
  • C语言教程(十五):C 语言函数指针与回调函数详解
  • 【高并发】 MySQL锁优化策略
  • rsync实现内网两台服务器文件同步
  • Winddows11官网下载安装VMware Workstation Pro17(图文详解)
  • Linux命令-perf
  • 企业办公即时通讯软件BeeWorks,私有化安全防泄密
  • 【MobaXterm】---修改 MobaXterm 终端 默认字体和大小 保真
  • 基于 C++ 的用户认证系统开发:从注册登录到Redis 缓存优化
  • 【技术派后端篇】整合WebSocket长连接实现消息实时推送
  • 《Python3网络爬虫开发实战(第二版)》配套案例 spa6
  • 数据结构——栈与队列
  • GPU热设计功耗(TDP)与计算效率的平衡艺术:动态频率调节对算法收敛速度的影响量化分析
  • 【Leetcode 每日一题】2799. 统计完全子数组的数目
  • Spring Security结构总览
  • 网络变更:APIC 节点替换
  • 使用Tauri 2.3.1+Leptos 0.7.8开发桌面小程序汇总
  • 【多智能体系统组织方式解析】五大架构赋能智能协作
  • java操作打印机直接打印及详细linux部署(只适用于机器和打印机处于同一个网段中)
  • windbg-A complete guide for Advanced Windows Debugging part1
  • 深入解析 Docker 容器进程的 cgroup 和命名空间信息
  • 机器学习 Day14 XGboost(极端梯度提升树)算法
  • window10部署MinerU
  • 电竞俱乐部护航点单小程序,和平地铁俱乐部点单系统,三角洲护航小程序,暗区突围俱乐部小程序