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.

[参考译文] J722SXH01EVM:如何解决高优先级中断错误

Guru**** 2419530 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1543328/j722sxh01evm-how-to-solve-high-priority-interrupt-error

器件型号:J722SXH01EVM


工具/软件:

您好:

我还遇到了与相同的问题  

SK-AM62A-LP:AM62x:如何解决高优先级中断错误? -处理器论坛 — 处理器- TI E2E 支持论坛

我的 SDK 是 mcu_plus_sdk_j722s_11_00_00_12。

如果我只执行 DebugP_log(“hello! \r\n“);就像 main() 中的这一点一样、它运行良好。 可以重新加载程序并进行调试。

但如果我创建了一个任务,在调试会话中第一次运行,一切都顺利无误。 但是、一旦我停止调试并拒绝代码、就会出现有关高优先级中断的意外错误

上一封电子邮件说,  按照建议将内存部分教育到 63 字节。我不知道怎么做。

 我们要么修改 linker.cmd、要么做一些什么? 您能提供更多详细信息吗? 谢谢

下面是  SDK 的 task_switch 示例中的 linker.cmd  

-- ram_model
-heap 0x20000
-stack 0x20000
-args 0x1000
-- diag_suppress=10068 /*以抑制无匹配段错误*/
--cinit_compression=off
-e _c_int00 _secure

#define DDR0_ALLOCATED_START 0xA3000000

#define C7X_ALLOCATED_START DDR0_ALLOCATED_START

#define C7X_RESOURCE_TALE_BASE (C7X_ALLOCATED_START + 0x00100000)
#define C7X_IPC_TRACE_BUFFER (C7X_ALLOAD_START + 0x00100400)
#define C7X_BOOT_BASE (C7X_ALLOAD_START + 0x00200000)
#define C7X_VECTOR_BASE (C7X_ALLOAD_START + 0x00400000)
#define C7X_DDR_SPACE_BASE (C7X_ALLOCATED_START + 0x00410000)

移动数据

L2SRAM (RWX):org = 0x7E000000、len = 0x200000
DDR0_RESERVED:org = 0x80000000、len = 0x19800000 /*保留用于 A53 OS */
C7X_IPC_D:org = C7X_ALLOCATED_START、len = 0x00100000 /* 1MB DDR */
C7X_BOOT_D:org = C7X_BOOT_BASE、len = 0x400 /* 1024B DDR */
C7X_VECS_D:org = C7X_VECTOR_BASE、len = 0x4000 /* 16KB DDR */
C7X_CIO_MEM:org = C7X_DDR_SPACE_BASE、len = 0x1000 /* 4KB */
C7X_DDR_SPACE:org = C7X_DDR_SPACE_BASE+0x1000、len = 0x00BF0000-0x1000 /* 11.9MB - 4KB DDR */
}

很重要

引导:

Boot.* (.text)
} load > C7X_BOOT_D
.vecs > C7X_VECS_D
.secure_vecs > C7X_DDR_space 对齐 (0x100000)
.text:_c_int00 _secure > C7X_DDR_space 对齐 (0x200000)
.text > C7X_DDR_space 对齐 (0x100000)

.bss > C7X_DDR_space /*零初始化数据*/
RUN_START (__BSS_START)
RUN_END (__BSS_END)

.data > C7X_DDR_space /*初始化数据*/

.cinit > C7X_DDR_space /*可以是 const 的一部分*/
.init_array > C7X_DDR_space /* C++初始化*/
.stack > C7X_DDR_space 对齐 (0x2000)
.args > C7X_DDR_space
.cio > C7X_CIO_MEM
.const > C7X_DDR_space
.switch > C7X_DDR_SPACE /*来处理异常。 */
.sysmem > C7X_DDR_space /*堆*/

组:> C7X_DDR_SPACE

.data.MMU_tableArray:type=NOINIT
.data.MMUM_tableArraySlot:type=NOINIT
.data.MMU_level1Table:type=NOINIT
.data.gMmu_tableArray_NS:type=NOINIT
.data.MMU_tableArraySlot:type=NOINIT
.data.MMU_level1Table_NS:type=NOINIT
}

.benchmark_buffer:> C7X_DDR_space 对齐 (32)

}

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

    您好、

    您是否在尝试裸机应用? 您使用哪种引导模式?

    但如果我创建了一个任务、在调试会话中首次运行时、一切都非常顺利、没有任何错误。 但是、一旦我停止调试并拒绝代码、就会出现有关高优先级中断的意外错误

    您能否分享相同的测试代码?

     我们应该修改 linker.cmd 还是做些什么? 您能提供更多详细信息吗? 谢谢

    让我检查一下并更新您。

    此致、
    Sivadeep

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否在尝试裸机应用程序? 您使用哪种引导模式?

    我正在尝试代码、只是 printf “hello",“,这、这是可行的。我尝试了 OSPI NOR 引导模式和 SD 引导模式、但它们都失败了。

    您能共享相同的测试代码吗?

    我们使用了以下 TI 示例:“ti-processor-sdk-rtos-j722s-evm-11_00_00_06\mcu_plus_sdk_j722s_11_00_00_12\examples\kernel\freertos\task_switch"。“。

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

    您好、

    [报价 userid=“655076" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1543328/j722sxh01evm-how-to-solve-high-priority-interrupt-error

    上一封电子邮件说,  按照建议将内存部分教育到 63 字节。我不知道怎么做。

     我们要么修改 linker.cmd、要么做一些什么? 您能提供更多详细信息吗? 谢谢

    [/报价]

    这是 CMMU 的限制。  C7x 使用称为向量谓词的存储。 这样做的结果是、即使存储不会有效写入非法存储器、它也可能会解决问题、但我认为在这种情况下不是问题。  


    如果我只做 DebugP_log(“hello! \r\n“);就像 main() 中的这一点一样、它运行良好。 我可以重新加载程序并对其进行调试。

    您为此遵循了哪些步骤?

    ]我正在尝试仅 printf “hello"的“的代码、它是有效的。我尝试了 OSPI NOR 引导模式和 SD 引导模式、但它们都失败了。

    您是否有机会在无引导模式下检查此项?

    但如果我创建了一个任务、在调试会话中首次运行时、一切都非常顺利、没有任何错误。 但是、一旦我停止调试并拒绝代码、就会出现有关高优先级中断的意外错误

    您能否尝试对电路板进行下电上电并检查是否发生了这种情况?

    此致、
    Sivadeep

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

    首先、我加载输出文件并运行或对其进行调试、然后暂停并重新加载。 无论有多少次、它都能很好地运行。

    但是,如果运行 taskswitch 文件,第一次它运行良好。但当我重新加载文件时,它会给我 错误 提示。

    您是否有机会在无引导模式下进行检查?

    除了 2 种引导模式外、DSP 似乎无法工作、我无法连接。

    您能否尝试下电上电并检查是否正在发生

    我尝试了很多次。首先它工作得很好,但如果我重新加载文件。  我收到有关高优先级中断的意外错误。

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

    您好、



    首先加载 out 文件并运行它或对其进行调试、然后暂停它并重新加载。 不管多少次,它都能很好地工作。

    您当前检查的是裸机应用吗? 仅加载到 c7x 内核?

    但如果运行 taskswitch 文件、则第一次运行该文件时运行良好。但当我重新加载该文件时、它会给出 错误 提示。

    您是否尝试过其他例子?

    除 2 种引导模式外、DSP 似乎无法工作、我无法连接它。

    你可以在这里参考:  
    https://software-dl.ti.com/jacinto7/esd/processor-sdk-rtos-j722s/latest/exports/docs/psdk_rtos/docs/user_guide/evm_setup_j722s.html

    此致、

    SIvadeep

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您目前检查的是裸机应用吗? 仅加载到 c7x 内核?

    是的、现在我以 OSPI NOR 引导模式运行、我仅加载到 C7 内核。结果是相同的。

    您是否尝试过任何其他示例?

    是的,我尝试了所有的例子。如果有任务启动,它是错误的,当我重新加载程序。

    在无引导模式下运行时、无法连接 c7x_0 内核。

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

    您好、

    在无引导模式下运行时、我无法连接 c7x_0 内核。

    此错误是由于电路板初始化脚本未运行所致。
    我会检查一下、很快就会回复您。

    此致、
    Sivadeep

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

    您好、

    对延迟深表歉意。 您可以在这里参考: CCS Launch、Load and Run

     在重新加载程序之前、您需要“重置 CPU“。

    在无引导模式下运行时、我无法连接 c7x_0 内核。

    请检查这里:  EVM 设置

    此致、
    Sivadeep