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.

[参考译文] AM263P4:使用 C 代码时的 PRU 栈指针初始化

Guru**** 2454880 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1493084/am263p4-pru-stack-pointer-initialization-when-using-c-code

器件型号:AM263P4

工具/软件:

我昨天被告知、PRU 的 C 代码编译器不会添加指令来初始化 R2保存的栈指针的值。  我被告知需要解决这个问题、并添加内联汇编来初始化该值。

具体而言、编译后的代码会创建汇编命令、以在进入 main 函数时立即移动栈指针。 我需要一种方法在进入 main 函数之前添加指令、以便根据栈大小正确初始化 R2的值。

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

    您好 Nathan、

    请遵循此处的指南、了解如何使用 C 语言和汇编组合对 PRU 进行编程:

    software-dl.ti.com/.../PRU-Getting-Started-Labs_Lab2.html

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

    感谢您提供的信息。 很遗憾、这没有回答我的问题。 所提供的任何示例都不显示将 R2初始化为栈指针位置的方法。 在项目设置中未提及完成此操作所需的任何特殊步骤。 也没有示例说明如何在 main 函数条目之前插入汇编命令。

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

    我仍在寻求解决这一问题的办法。 有关更多信息、下面是生成的汇编代码片段、其中显示了进入 main 函数时立即操作寄存器 R2。  请在输入 main 之前、为我提供一种方法、可将 R2设置为正确的值。

    ;****************************************************************************
    ;* FNAME:主 FR 大小: 33 *
    ;**
    ;*函数环境*
    ;**
    ;*函数属性*
    ;* 1 Auto、32 SOE *
    ;****************************************************************************

    ||main||:
    ;*------------------------------------------------------------------------------------------------ *
    .dwcfi CFA_OFFSET、0
    Sub r2, r2, 0x21 ;[]
    .dwcfi CFA_OFFSET、33
    SBBO &R3.b2, r2, 1, 32;[]

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

    Nathan,这不能完全解决问题,即使使用 R2的汇编初始化,它是在子 r2, 4之后

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

    但它应该能够让您在强制初始化完成后使用 R2。 一个更困难的解决方法是使用汇编级编程。