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.

[参考译文] CCS/TMS320F280049:C2000Ware 示例 eabi

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/945671/ccs-tms320f280049-c2000ware-example-eabi

器件型号:TMS320F280049

工具/软件:Code Composer Studio

您好!

我无法理解为什么如果我在项目中将表单 COFF 切换到 EABI、程序不会运行到 main。

我尝试打开许多示例、但使用 μ СOFF 的示例不会在 EABI 模式下启动。


我想立即强调的是、它不是关于编译、我修复了库文件和汇编文件。  

编译正常。 在调试期间、切换到 main 并不起作用。

EABI (不适用):

COFF (工作正常):

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

    大家好、Turnaev、

    请尝试在 F28x_codestartbranch.asm 中禁用看门狗(WD_DISABLE .set 0; 在此    asm 文件中应替换为 WD_DISABLE .set 1)。  这有助于在到达 main()之前避免看门狗复位。  如果应用程序中有很多全局变量、在到达 main 之前、cinit 例程可能需要更多的时间来初始化所有全局变量。  在此期间、看门狗可能会过期、因此建议将其禁用。  您可以根据应用程序的需要在 main()中再次启用它。

    谢谢、此致、

    Vamsi

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

    您好、 Vamsi!

    感谢您的回答、 但关闭看门狗不起作用。

    我开始比较 DriverLib 和常规示例、并注意到一些问题。
    如果我从工程中排除 f28004x_headers_nonbios.cmd 文件、则工程启动并进入 main。 但是、这种操作当然是不可接受的、因为在这种情况下没有外设工作。

    我不明白使用 DriverLib 的项目是如何理解外设的位置的。

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

    大家好、Turnaev、

    感谢您尝试禁用看门狗。

    我们会在一天内回来。

    谢谢、此致、

    Vamsi

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

    大家好、 Turnaev、

    我们尚未将 F28004x 器件中的位字段软件和示例(在 device_support 文件夹中提供)移动到 EABI。  位字段结构需要 f28004x_headers_nonbios.cmd 才能将寄存器映射到正确的存储器位置

    COFF 和 EABI 格式之间的一个区别是、EABI 将对所有未初始化的段进行零初始化。 所有位字段结构都是未初始化的结构、应保持未初始化状态。 它只能由应用软件初始化。 通过转到 EABI 模式、编译器将为所有寄存器添加零初始化代码。

    可以通过在链接器命令文件中添加 type=NOINIT 来删除它。 请参阅 f28002x device_support 中的类似文件。 也可以在链接器选项中关闭此功能。 Project properties->C2000 Linker->Advanced options->Miscalleneous->--zero_init

    此致、

    Veena

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

    您好、Veena!

    真的很不错,谢谢!

    此致、

    Sergey Turnaev

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

    您好 Sergey,

    以下两项建议中、您的案例中有哪些适用-

    1.  位字段结构需要 f28004x_headers_nonbios.cmd 才能将寄存器映射到正确的存储器位置。
    2. 可以通过在链接器命令文件中添加 type=NOINIT 来删除它。 请参阅 f28002x device_support 中的类似文件。 也可以在链接器选项中关闭此功能。 Project properties->C2000 Linker->Advanced options->Miscalleneous->--zero_init

    此致、

    Vivek Singh

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

    您好、 Sergey、

    很抱歉、这是我对您的问题。 在这两种方法中,您使用哪一种方法来解决问题?

    此致、

    Vivek Singh

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

    我修改了文件 f28004x_headers_nonbios.cmd、将所有"page = 1"替换为"type=NOINIT"

    未设置选项"Project properties->C2000 Linker->Advanced options->Miscalleneous->--zero_init"。

    文件排除 f28004x_headers_nonbios.cmd 是不可接受的、它完全中断了所有寄存器的工作。