Xiaojie雷达之路---TI实战笔记---ESM Driver说明

ESM驱动提供API来配置和处理来自ESM H/W模块的错误

ESM头文件在应用程序中应该被包含如下:

#include <ti/drivers/esm/esm.h>

驱动初始化

ESM驱动是通过使用ESM_init函数来初始化。在没有调用这个API之前,其他的ESM API不能被调用。

注意:如果使用的是TI RTOS,则在进入main之前ESM错误应该被清除并标志被设置为0。对于其他的RTOS,检查RTOS的实现或设置这个标志为1

使用驱动

对于使用ESM驱动下面是一个示例:

ESM_init(0);  //ClearErrors is set to 0

MSS上处理中断

当ESM驱动运行在R4F上时,注册高优先级的FIQ来处理MSS ESM错误。当ESM 错误发生在DSS上时,MSS被通过Group2 错误信号来通知。ESM驱动注册低优先级的IRQ来处理这些错误。

DSS上处理中断

DSS ESM错误必须揭露他们来生成一个NMI。这个仅仅适用于xWR16xx/xWR18xx/xWR68xx DSS中。SOC_configureDSSESMMask API可以被使用。驱动程序/应用程序必须为其感兴趣的错误信号解除位掩码。例如,看门狗驱动程序在内部接触看门狗到期NMI错误位的伪装,以生成NMI。

DSS ESM错误生成一个NMI,可以首先被RTOS NMI异常的句柄捕获。因此应用程序必须产生NMI异常句柄在.cfg文件中使用ESM驱动的高优先级FIQ处理API

Exception.nmiHook = "&ESM_highpriority_FIQ";

注册通知器

应用程序能够对ESM错误需要额外的处理来注册回调函数。一个这样的例子就是在DSS上的看门狗延时。当看门狗延时导致DSS上发生NMI时,该事件inturn会在MSS上生成group1 ESM错误。应用程序可以使用ESM通知程序注册回调来处理这些错误。

硬件寄存器映射

此驱动程序使用的硬件寄存器映射可以在include/reg_esm.h中找到

应用程序可以调用的函数

ESM驱动提供了外部API方便用户调用

ESM_Handle ESM_init	(	uint8_t 	bClearErrors	)	初始化ESM驱动

int32_t ESM_registerNotifier	(	ESM_Handle 	handle,
									ESM_NotifyParams * 	params,
									int32_t * 	errCode 
									)	 注册通知,如果检测到错误中断,ESM模块将回调

int32_t ESM_deregisterNotifier	(	ESM_Handle 	handle,
									int32_t 	notifyIndex,
									int32_t * 	errCode 
									)	取消ESM通知的注册

参考文献:

  1. 《mmWave SDK Module Documentation》

猜你喜欢

转载自blog.csdn.net/Xiao_Jie123/article/details/121780194
今日推荐