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.

[参考译文] 编译器/AM3359:TI_CGT_PRU_2.3.0 HexPRU --Array 选项

Guru**** 2524550 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/708845/compiler-am3359-ti_cgt_pru_2-3-0-hexpru---array-option

器件型号:AM3359

工具/软件:TI C/C++编译器

我正在尝试为.text 和.data 段创建两个数组类型文件、以便可以在裸机中加载它们。   

我曾希望使用--array 选项创建 C 数组,但我还没有找到细节。   

是否设置了任何 PRUHex.cmd 文件的示例以执行此操作?

我的问题是.data 段起始地址不包含在文件中。  我可以通过让数据段在.stack 和.bss 段之前加载到 PRU DMEM 中来解决该问题。  我尝试删除段名、但这没有任何效果。

另一个可行的问题是、它似乎创建了两个文件-一个用于代码段、另一个用于数据段。  理想情况下、我会将这些文件放入一个文件中。   

我已经了解过 PRU 汇编语言参考的第12部分、但无法获得所需的输出。

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

    尝试类似这样的十六进制命令文件...

    /* hex_array.cmd */
    -array
    -image
    -o PRU_page0.c
    -o PRU_page1.c
    
    ROMS
    {
    PAGE 0:
    PRU_page0:o = 0x0、l = 0x1000
    第1页:
    PRU_page1:o = 0x0、l = 0x1000
    } 

    调用它类似于...

    % hexpru file.out hex_array.cmd
    转换为数组格式...
    "file.out".text =>.text
    "file.out".rodata =>.rodata 

    文件 PRU_page0.c 的开头是...

    const uint32_t PRU_page0[]={
    0x00000000、
    0x00000000、
    0x240001c0、
    0x24800080、
    0x0504e0e2、
    (笑声) 

    文件 PRU_page1.c 的开头是...

    const uint8_t PRU_page1[]={
    0x00、
    0x00、
    0x00、
    0x00、
    0x00、 
    (笑声)

    谢谢、此致、

    乔治

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

    谢谢。  这对我们有 很大帮助。  我已经接近、但缺少正确的组合。

    现在、它将按照长度运算符指定的每个区域转储4K。

    是否有任何方法可以避免输出仅到代码段末尾和数据区域末尾?  我可以按原样使用它、也可以手动将 ROM 长度调整为更小的尺寸。


    感谢您的快速帮助。

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

    [引用 user="Dan Beadle">是否有任何方法可以避免输出仅到代码段末尾和数据区域末尾?  我可以按原样使用它、也可以手动将 ROM 长度调整为更小的尺寸。

    很抱歉、但我感到困惑。  假设您进行了手动更改、您会更改什么内容、您如何知道要将其更改为什么内容?

    谢谢、此致、

    乔治