This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] RM46L430:传递 sl_SelfTest_Flash 报告所需的极端步骤

Guru**** 2348060 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/608591/rm46l430-extreme-steps-required-to-get-sl_selftest_flash-to-report-passed

器件型号:RM46L430

大家好、

这是我‘S“L_SelfTest_Flash”来报告通过的操作

在 IRQ/FIQ 周围插入一个包装程序异常处理程序并截取 ESM 高优先级和低优先级中断处理程序、并且在包装程序中:

           如果 TEST = FLASH_ADDRESS_parity、FAULT_INP注入

                      设置 ESM SR2=0x00000010

                      设置 VIM IRQ INTREQ0=0x00000001

                       恢复以前的闪存 FPAROVR

在‘S调用‘L_SelfTest_Flash’之前:

           保存闪存 FPAROVR

           保存闪存 FDIAGCTRL

‘S调用‘L_SelfTest_Flash’后:

           设置闪存 FEDACSTATUS = 0xFFFFFFFF

           恢复闪存 FDIAGCTRL

           读取以解锁闪存 FUNCHERRADD

           清除 ESM SR2 0x00000010

           清除 ESM SR3 0x00000080

           清除和错误引脚并将密钥复位为正常

并非每个测试都需要执行所有步骤、但所有步骤都需要完成才能通过所有测试。

这一切都是通过代码检查和调试完成的、所有这些的规范在哪里?

为什么我需要额外放置一层中断处理、以便在启用中断时通过测试?

此致、

标记。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Mark、您好!

    我只为 FLASH_ADDRESS_奇 偶校验_FAULT_INP注入 运行 sl_SelfTest_Flash(),并且在没有任何代码修改的情况下传递。

    select_flash()在测试前后备份和恢复 FPAROVR 和 FDIAGCTRL 的寄存器:

    案例 FLASH_ADDRESS_奇 偶校验_FAULT_INject:

    /*备份寄存器*/

    regBkupFPUVr = sl_flashWREG->FPAROVR;

    regBckupFdiagctrl = sl_flashWREG->FDIAGCTRL

    /*清除诊断模式设置*/

    sl_flashWREG->FPAROVR = regBkupFPUVr;

    sl_flashWREG->FDIAGCTRL = regBckupFdiagctrl;

     

    该函数还包含用于清除通过读取0x20000000进行设置的 ESM 状态寄存器的语句:

    /*清除闪存和 ESM 状态寄存器*/

    SL_flashWREG->FEDACSTATUS = F021F_FEDACSTATUS_ADD_PAR_ERR;

    sl_esmREG->SR1[1]= GET_ESM_bit_NUM (ESM_G2ERR_FMC_Uncorr);

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、王先生、

    正如我在原来的帖子中所说、并非每次测试都需要采取所有措施。

    是否在启用或禁用中断的情况下运行此操作?

    此致、

    标记。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Mark、您好!

    是的、中断被启用。

    在  sys_startup.c 中调用 INT 使能函数(_enable_interrupt_())

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="QJ Wang "]

    是的、中断被启用。

    [/报价]

    您只在内核中显示 FIQ 和 IRQ、VIM 初始化和'SL_Init_ECCFlash'会怎样? 除了启用 IRQ/FIQ 来使中断机制正常运行之外、还有很多其他功能。

    您在启用整个中断链之前或之后是否进行了调用?

    您是否检查了故障注入测试是否实际导致调用中断处理程序?

    在异常处理程序期间、您是否有不同版本的测试可消除故障注入?

    我拥有的版本(2.3.1)不会清除故障注入、因此 中断处理程序的返回点是故障注入指令、然后该指令会调用另一个中断。 仅当故障注入未产生中断时、测试才会报告通过。