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.

[参考译文] 编译器:如何在TI ARM编译器(v 16.9 ™︎6 LTS)中使用"position independent code(PIC)"选项。

Guru**** 2595805 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/641982/compiler-how-to-use-position-independent-code-pic-option-in-ti-arm-compiler-v16-9-6-lts

主题中讨论的其他部件:MSP432P401R

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

您好,

我想知道如何在TI ARM编译器(v 16.9 6.LTS)中使用“位置无关代码(PIC)”选项。

我正在使用MSP432P401R和Code Compiler Studio v7。

谢谢。  

此致,崔京周。

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


    我们的主要专家今天已经出来了,但我发现了类似的线索。
    e2e.ti.com/.../235.0353万

    在此主题中,我们提到TI MSP430编译器不支持PIC。 我假设我们的ARM编译器也是如此。 无论如何,请查看该主题,我会在他们回来时收到专家回复。

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

    John是正确的,TI ARM编译器不支持PIC。 只有C6000编译器可以执行此操作。 ARM文档不应列出可用于ARM的PIC选件。

    您需要与位置无关的代码是出于什么目的?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    例如,在将函数放置在RAM中的情况下,我要使用"stdio.h"的printf()函数。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    PIC代码不需要具有不同运行和加载地址的代码。

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

    我还知道PIC代码不需要任何其他代码来执行和加载地址。

    作为一个直观的示例,我正在尝试将一些代码迁移到SRAM (使用方法->)  ),并使用printf函数。 我进入无限循环,处理程序退出程序。  

    我还知道,使用C6000编译器可以解决问题,因为它支持pic代码。

    但我必须试用MSP432P401R和TI编译器。

    但是,在这种情况下,我收到了一个答复,说它不支持事先知情同意程序。 有没有办法解决这个问题?

    谢谢你

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

    请暂时忘记一些事情,例如位置无关代码(PIC),以及分配部分在一个地址加载并在另一个地址执行。  如果不参考类似的编译器工具功能,您要解决什么问题?

    谢谢,此致,

    -George

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

    感谢您的回复。

    我想解决的问题是:

    1)我已经将函数1放置在MSP432P401R的SRAM中。

    2)在函数1的代码中,有几个printfs,它们打印一些原始执行的结果(函数1)。

    3)但是,由于函数1放置在SRAM上,我进入无限循环,处理程序退出程序。  

      (我假定发生这种情况是因为程序由于迁移而无法找到printf。)

    在这种情况下,我如何可以毫无问题地执行整个程序?

    谢谢你

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

    我建议您将问题转移给MSP432专家。  我不知道他们是否有解决你的情况的办法。  但是,如果他们这样做了,那么您应该尝试使用它。  我建议您在 MSP设备论坛中开始新的主题。  如果您愿意,我可以将此主题移至该论坛。

    谢谢,此致,

    -George

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

    谢谢!

    请您将此问题从本论坛移至MSP论坛吗?

    此致,

    Hayeon。

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

    您好Hayeon:

     不久前,我将 这个示例代码放在一起。 它 包含 3个RAM函数,还使用printf

     希望这能有所帮助。

        David