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.

[FAQ] [参考译文] [常见问题解答] AM62A7:启用半主机以处理系统调用

Guru**** 2486505 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1444835/faq-am62a7-enabling-semihosting-to-work-with-system-calls

器件型号:AM62A7

工具与软件:

我们有 fopen ()/ fprintf ()/ fclose ()-函数调用在 A53上无法正常工作。

fopen 函数始终返回 NULL。  我们使用 GCC 编译器。

这是否与半主机有关?  如果有、如何启用它?

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

    为了在通过 GCC 编译时启用半主机、您需要链接  libc.a   librdimon.a.  软件库。

    要链接上述库、请添加  -lc 和-lrdimon  链接器命令的标志。 另请拆下  -nostartfiles  允许链接标准库的标志。

    在 CCS 工程中、打开 Project Properties 并导航到 Build -> GNU Linker -> Libraries  并添加上述标志。  

    请参阅下图。

    此外、还 添加了  --specs=rdimon.specs GCC 编译器中的标志调用以使用半托管版本的 SYSCalls。

    在 CCS 工程属性中、导航到 Build -> GNU Compiler -> Miscellaneous 并添加上述标志。

    请参阅下图。

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

    完成上述更改后、在中添加以下函数声明  *。c  初始文本文件。

    extern void initialise_monitor_handles(void);

    也可以在进行任何系统调用之前调用上述函数。 请参阅下图。

    请确保在调试器中启用半主机选项。 导航至  Tools -> Debugger -> Program/Memory Load Options。

    重新编译程序并再次运行它。

    执行上述步骤之后、您将能够使应用代码正常工作。