NXP有哪些FCCU的功能接口函数?

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

NXP有哪些FCCU的功能接口函数?

468件の閲覧回数
zhijie
Contributor I

Hello Guys:

 

    NXP有哪些FCCU的功能接口函数?
    有相关文档可以分享吗?

 

谢谢!

Reacher

タグ(1)
0 件の賞賛
返信
9 返答(返信)

319件の閲覧回数
chenyin_h
NXP Employee
NXP Employee

您好,感谢回复

当您配置了对某个fault的reaction是触发IRQ之后,如果硬件检测到该异常,则会触发alarm中断,并在中断处理函数中处理该fault,关于misc_irq, 没看到更多代码描述,可能是用于超时等。

关于寄存器的配置,您可以参考enable_rs_channel函数。

BSP端的代码是基于Linux的标准接口开发的,因此并没有提供类似M核端RTD类型的正式API说明,也没有相关联的developer's guide, 因此具体细节建议您同时参考S32GRM中的描述,以及Linux中的源代码实现进行进一步了解。

 

BR

Chenyin

0 件の賞賛
返信

374件の閲覧回数
chenyin_h
NXP Employee
NXP Employee

您好,感谢回复。

1. 参见代码,第一个会clear fault,而第二个就是单纯的通知,没有硬件操作。

chenyin_h_0-1751338556670.png

2&3. FCCU 用于收集故障信息,并在检测到设备出现故障时可以通知用户,具体的解决方案需要客户自己用软件来实现,比如说设置了FCCU检测PFE错误,并且设置了发现错误后重启,那么满足条件后,系统就会reset,用户也可以设置其他的处理方法,比如仅记录等等。

 

BR

Chenyin

0 件の賞賛
返信

335件の閲覧回数
zhijie
Contributor I

1. 参见代码,第一个会clear fault,而第二个就是单纯的通知,没有硬件操作。

我问的不清楚,我想问

1:这两个中断在什么情况发生

2:这两个中断产生是配置了哪些寄存器,使能中断的

 

谢谢

Reacher

0 件の賞賛
返信

392件の閲覧回数
chenyin_h
NXP Employee
NXP Employee

Hello, @zhijie 

感谢回复

1. 中断用于通知系统,比如出现了FCCU中配置的错误。

2. 表示相关fault的编号,具体含义可以参考S32G2/3 RM。

3. 就是配置对相应事件的处理方法,比如不操作或者是触发中断等等。

4. 从代码可以看到,就是将FCCU置于配置模式进行相应操作。

5. 这些就是相关功能的掩码,比如是否使能相应中断,是否使能NMI等。

6. 当前 Linux FCCU 驱动程序不支持用户从上层(比如user space)获取状态,客户需要自行实现此功能。

目前,总体而言,BSP中的驱动只支持通过dts来配置FCCU,功能比较有限,建议您参考S32GRM中的FCCU章节了解FCCU的各种状态及其他细节,并按照实际需要增加功能。

 

BR

Chenyin

0 件の賞賛
返信

390件の閲覧回数
zhijie
Contributor I

Hello Chenyin

 

    谢谢指导

    继续问一下:

    1 irq_misc_handler和irq_alarm_handler 这两个中断各负责什么?

ret = devm_request_threaded_irq(dev, irq_alarm, NULL,
                    irq_alarm_handler, IRQF_ONESHOT,
                    FCCU_ALARM_IRQ_NAME, priv_data);
ret = devm_request_threaded_irq(dev, irq_misc, NULL,
                    irq_misc_handler, IRQF_ONESHOT,
                    FCCU_MISC_IRQ_NAME, priv_data);
    2 下面的Resolve the source of the software-recoverable non-critical fault.,如何解决这个问题源,硬件还是软件?
    3 Initiate clearing of the unrecovered-fault indicator for the software-recoverable non-critical fault (NCF_Sa[NCFSn]) using a 32-bit write.
        下面这个函数是置1到寄存器,然后芯片解决这个问题吗?还是上面的问题源在,置1也无法解决?
        
  /* Clear faults with maximal fault mask for NCF_Sn */
        __raw_writel(status->mask[reg_index],
                 base + get_offset(status, reg_index));
 
 
 

68.3.6.2.3Recover a software-recoverable non-critical fault
1. Resolve the source of the software-recoverable non-critical fault.  //如何解决?
2. Unlock the NCF_Sa registers (NCFK[NCFK]) using a 32-bit write.

3. Initiate clearing of the unrecovered-fault indicator for the software-recoverable non-critical fault (NCF_Sa[NCFSn]) using a 32-bit write.

FCCU initiates the OP12 operation

4.
Check the operation status (CTRL[OPS]).
•If the operation status is In Progress, go to step 4.
•If the operation status is Successful, go to step 5.
•If the operation status is Aborted, go to step 2.

5.
Check the unrecovered-fault indicator for the software-recoverable non-critical fault (NCF_Sa[NCFSn]).
•If the indicator indicates no unrecovered fault, the fault has been recovered. Stop.
•If the indicator still indicates an unrecovered fault, go to step 2.

 
0 件の賞賛
返信

403件の閲覧回数
chenyin_h
NXP Employee
NXP Employee

您好, @zhijie 

感谢回复

抱歉A核端(BSP)中并没有详细的相关文档,以BSP44 UM为例,只是在6.2节中有简短描述。

相关细节建议您参考驱动源文件drivers/misc/fccu/s32cc_fccu.c

 

BR

Chenyin

0 件の賞賛
返信

395件の閲覧回数
zhijie
Contributor I

fccu: fccu@4030c000 {
            compatible = "nxp,s32cc-fccu";
            reg = <0x0 0x4030c000 0x0 0x3000>;
            interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>,
                     <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>;
            interrupt-names = "fccu_alarm",
                      "fccu_misc";
            clocks = <&clks S32CC_SCMI_CLK_FCCU_MODULE>;
            clock-names = "fccu";
            /* A53 NCF fault list */
            nxp,ncf_fault_list = <0 10 35 36 37 38>;
            nxp,ncf_actions = <S32CC_FCCU_REACTION_ALARM
                S32CC_FCCU_REACTION_ALARM
                S32CC_FCCU_REACTION_NONE
                S32CC_FCCU_REACTION_NONE
                S32CC_FCCU_REACTION_NONE
                S32CC_FCCU_REACTION_NONE>;
            status = "disabled";
        };

查看设备树:

问题1:这个两个中断在什么条件下发生

interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>,
                     <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>;
            interrupt-names = "fccu_alarm",
                      "fccu_misc";

问题2: 0 40 35 36 37 38代表什么含义

nxp,ncf_fault_list = <0 10 35 36 37 38>;

问题3:这些REACTION,有什么作用?

nxp,ncf_actions = <S32CC_FCCU_REACTION_ALARM
                S32CC_FCCU_REACTION_ALARM
                S32CC_FCCU_REACTION_NONE
                S32CC_FCCU_REACTION_NONE
                S32CC_FCCU_REACTION_NONE
                S32CC_FCCU_REACTION_NONE>;

问题4:rs_channel 有什么作用?

ret = enable_rs_channel(dev, priv_data);
 
问题5:每个mask的作用
static struct fccu_alarm_mask mask = {
    .status = {
        .mask = fccu_status_mask,
        .size = ARRAY_SIZE(fccu_status_mask),
        .offset = FCCU_NCF_SN_OFF,
    },
    .alarm_state = {
        .mask = fccu_alarm_mask,
        .size = ARRAY_SIZE(fccu_alarm_mask),
        .offset = FCCU_NCF_TOEN_OFF,
    },
    .alarm_irq = {
        /* common mask with alarm_state */
        .mask = fccu_alarm_mask,
        .size = ARRAY_SIZE(fccu_alarm_mask),
        .offset = FCCU_IRQ_ALARM_EN_OFF,
    },
    .func_reset = {
        .mask = fccu_func_reset_mask,
        .size = ARRAY_SIZE(fccu_func_reset_mask),
        .offset = FCCU_NCFS_CFGN_OFF,
    },
    .nmi = {
        .mask = fccu_nmi_mask,
        .size = ARRAY_SIZE(fccu_nmi_mask),
        .offset = FCCU_NMI_EN_OFF,
    },
    .eout = {
        .mask = fccu_eout_mask,
        .size = ARRAY_SIZE(fccu_eout_mask),
        .offset = FCCU_EOUT_SIG_EN_OFF,
    },
    .ncf_enable = {
        .mask = fccu_ncf_enable_mask,
        .size = ARRAY_SIZE(fccu_ncf_enable_mask),
        .offset = FCCU_NCF_EN_OFF,
    },
};
 
问题6:如何在驱动添加设备节点供上层获取FCCU状态
 
谢谢
0 件の賞賛
返信

438件の閲覧回数
chenyin_h
NXP Employee
NXP Employee

您好,感谢访问NXP社区。

请问您是在寻找通过M7核配置和访问FCCU的代码API吗?推荐您下载安装一下SPD或者SAF,确认一下是否符合您的需求。

相关的详细API介绍文档可以在下载安装后的安装目录中找到。

 

BR

Chenyin

0 件の賞賛
返信

429件の閲覧回数
zhijie
Contributor I

谢谢支持,

想了解FCCU在A core有哪些接口可以调用?相关文档说明?

 

 

0 件の賞賛
返信