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.

[参考译文] RTOS/PROCESSOR-SDK-AM437X:加载 PRU 映像

Guru**** 2576195 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/628123/rtos-processor-sdk-am437x-loading-pru-image

器件型号:PROCESSOR-SDK-AM437X

工具/软件:TI-RTOS

您好!

(IDKAM437x、 pdk_AM437X_1_0_6、 processor_sdk_rtos_AM437X_3_03_00_04、CCS v7)

也许我没有完成作业、但我找不到有关如何制作包含 PRU 程序代码的 C 数组的信息。

我打算用 ARM 加载 PRU 程序并运行它。
应通过以下方式完成此操作:

PRUICSS_setPRUBuffer();
PRUICSS_pruExecProgram();
PRUICSS_pruEnable(); 

对吧?

我看到在 PRP/HSR 中、指令数组是使用 PDSP 汇编器生成的。

我找不到有关如何为 C PRU 代码生成此类文件的任何信息。

到目前为止,我在 CCS 中加载具有.out 的 PRU 内核.... 现在我想集成加载和 exe。 在 RTOS 应用程序中....

请以正确的方式引导我...

此致、

马里

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    RTOS 团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    马来

    您可以使用 PRU 代码生成工具 ti-cgt-2.1.x hexpru 将.out 文件转换为固件头文件.bin、请参阅 e2e.ti.com/.../2231359

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

    您好、Garrett、

    很抱歉、但对我来说不够清楚。

    1.)我编译 SORTE、但我不知道如何使用 CCS 运行它。

    2) 我从(SORTE) main.c 中看到:

    extern uint8_t PRU_imem0_start;
    extern uint8_t PRU_imem0_end; 

    这是来自 ink.cmd 的指针。

    PRU0_IMEM:{
    PRU_imem0_start =.;
    保留(*(PRU0_IMEM))
    PRU_imem0_end =.;
    } > APP_Cached_DATA_BLK1_MEM 

    我无法确定 PRU0_IMEM 在.bin 文件中的定义/指向位置

    3.)是否可以从 CCS PRU 工程编译.bin? 它是否适用于 RTOS ->  

    4) 然后、如何在 CCS 工程中包含.bin 文件并添加获取文件地址?


    谢谢

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

    Marko、

    您是否访问过 wiki -

    "运行 PRUSS SORTE 示例"部分是否回答了您的第一个问题?

    对于问题#2-4、让我尝试找出 PRU 编译器工具团队是否有任何文档。

    此致、

    Garrett

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

    您好、Garrett、

    我知道我可以加载映像,但我的目标是查看整个项目设置... 我问是否可以在 CCS 中导入工程。

    如果 TI 能 做出一些很好的解释、大约2-4 Q 会更好...

    感谢您的投入和努力。 我解决了我的问题(我认为...)。 我只是在我的一个示例上取得成功...  让我与他人分享我的经验、如果我做了一些错误、请告诉我:

    1)  请参阅最后一篇文章->  

    我成功生成.bin 文件。

    2)  Giannis Roussos 建议使用 bin2h 软件。  

    我将.bin 文件转换为.c 数组

    ..\bin2h_v1.01>bin2h yourPruProjectExamples\Debug\text.bin yourARMprojectExamples\text.c -id=YourNameOfArray 

    生成带有数组的.c 文件(数组数据为 PRU 程序数据)。

    SIZE _t arrayPru_len = 8192;
    unsigned char arrayPru[8192]=
    {
    0xC0、0x00、0x24、0x00、0x02、0xE0、0x04、
    0x05、0xC3、0x00、0x23、0xC3、0x8D、0x00、0x00、0x24、0x02
    
    、0x24、0x01、0x01、0x01、0x02、0x80、0xC1、0x24、0x02、0x01、0x01、0x01、0x01、0x01、0x24、0x01、0xC0、0x01、0x01、0x01、0x01、0x01、0x01、0x01、0x24、0x01、0x01、0x01、0x01、0x01、0x24、0x01、0x01、0x01、0x01、0x01、0x01、0x01、0x24
    
    0x24、0x80、0x00、0x24、0x80、0x00、0xE1、0xC0、0x40、
    0x00、0x24、0x80、0x00、0x24、0x80、0x20、0x00、0xE1、
    0x80、0x00、0x24、0x80、0x00、0x00、0x00、0x24、
    0x20、0x20、0x20、0x20、0x00、0x20、0x24、0x01、0x20、0x20、0x20、0x00、0x20、0x20、0x20、0x20、0x20、
    0x20、0x20、0x20、0x01、0x20、0x20、0x20、0x20、0x20、0x20、0x20、0x20、0x
    0x00、0x24、0x80、0x00、0xE1、0xC0、0x1A、0x48、0x24、0x80
    、0x94、0xC1、0x24、0x99、0x00、0xF9、0xF9、0x18、0x1F、
    0x99、0x20、0x00、0xE1、0xD8、0x78、0x04、0x24、0x9、0xF68、0xF8、0xF8、0xF10
    、
    0x00、0xF8、0xF8、0xF68、0xF8、0xF8、0xF8、0xF68、0xF8、0xF8、0xF10、0xF8、0xF10、0x00、0xF8、0xF8、0xF10、0xF10、0xF
    } 

    将 size_t 替换为无符号整型...

    3.) ARM 代码....

    extern char arrayPru[8192];
    
    void loadTest (UARg arg0、UARg arg1){
    PRUICSS_Config * pruIcssCfg;
    PRUICSS_Handle 句柄;
    
    PRUICSS_socGetInitCfg (&pruIcssCfg);
    handle = PRUICSS_create (pruIcssCfg、2);
    
    if (PRUICSS_pruDisable (handle、0))
    while (1);
    if (PRUICSS_setPRUBuffer (handle、0、arrayPru、(11*60)))
    while (1);
    PRUICSS_enableOCPMasterAccess (handle);
    if (PRUICSS_pruExecProgram (handle、0))
    while (1);
    if (PRUICSS_pruEnable (handle、0))
    while (1);
    
    while (1);
    } 


    请告诉我这是错误还是危险方法... 不知怎么……

    此致、

    马里  

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

    感谢您分享您的体验! 我问我们的 PRU 编译器专家、审核了您的方法、他们的反馈是肯定的。 此外、该团队还在开发一种将二进制数直接转换为 C 数组的整体解决方案。 这种支助应在年底前提供。 作为这项工作的一部分、我们将在新的 PRU2.2项目中创建一些示例和 PRU 配套资料。 当前的大多数示例都集中在从运行 Linux 的 ARM 加载 PRU 内核、因此该过程与您正在执行的操作不同。

    您可能会发现该技术讲座很有用- processors.wiki.ti.com/.../CCS_Modules_Library 、其中展示了如何使用 CCS 直接在 PRU 上加载和调试程序。

    此致、
    Garrett