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.

[参考译文] CCSTUDIO-THEIA:F28P650DK6PZP

Guru**** 2901510 points

Other Parts Discussed in Thread: SYSCONFIG, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1639653/ccstudio-theia-f28p650dk6pzp

部件号: CCSTUDIO-THEIA
Thread 中讨论的其他器件: SysConfigC2000WARE

尊敬的团队

         我在 C2000 系列控制器器件型号 F28P650DK6PZP MCU 和 CCS 版本 20.5.0 上工作。在这里、我创建了一个新的工作区并从 CCS 空驱动程序库导入代码 、并使用 sysonfig 配置了 GPIO 并进行编译。我在 device.c 中发现两个 device.c 文件、一个是工程手动编写的、另一个是 SysConfig 生成的、这是我生成的手册、出错了 已执行 device.c 并尝试未出现错误。

1) 为什么此工程有 2 个 device.c 文件
2) 为什么会出现此错误。

image.png

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

    嗨、Nirdhesh、

    我不确定我是否理解您的陈述:

    我 在工程中找到了两个 device.c 文件、一个是工程中手动生成的、另一个是 SysConfig 生成的、这是一个当我执行 device.c 并尝试无错误地获得时给出错误的手册。“

    哪一个工作正常、哪一个不工作?

    您能在这里分享这两者以供参考吗?

    此致、

    Zackary Fleenor

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

    尊敬的 Nirdhesh:

    您的构建日志使问题非常清楚。 让我直接回答您的两个问题。


    1.为什么项目有两个 device.c 文件?

    从 C2000Ware 导入空 driverlib 工程时,文件夹中附带了一个手动文件 — 这是工程模板 device.c device/ [1]中包含的标准器件初始化文件。 然后、当您添加 SysConfig (.syscfg) 并配置 GPIO 时、SysConfig device.csyscfg/ 文件夹[2]中自动生成自己的 SysConfig。 这两个文件定义了相同的函数(,,等)Device_init Device_initGPIO Device_enableAllPeripherals、因此您最终会得到两个相互竞争的副本。

    也会发生相同的复制 f28p65x_codestartbranch.asm —构建日志显示它是从 ../device/ C2000Ware device_support 路径和从 C2000Ware device_support 路径编译 code_start 的、从而导致重新定义符号。


    2.为什么会出现这些错误?

    您看到的每个链接器错误都是 错误#10056:符号重新定义 —链接器找到在 ./syscfg/device.obj 和中定义的相同函数 ./device/device.obj 、并且无法解析要使用哪个函数[3]。 codestart 段放置错误 (#10099) 是具有两个 code_start 入口点的下游结果。


    修复

    从编译中排除手动文件。 具体来说、右键点击并从编译中排除:

    要排除的文件
    位置
    device.c
    device/device.c (手册副本)
    f28p65x_codestartbranch.asm
    device/f28p65x_codestartbranch.asm (手册副本)

    SysConfig 生成的版本保留在文件夹中 — 这些版本旨在与您的配置配合使用,并在您在 syscfg/ .syscfg SysConfig [2]中修改外设时保持同步。

    您已经确认了这种方法是有效的(“当我排除 device.c 并尝试我没有错误地得到“)、因此您走在了正确的轨道上。 只需确保您也 f28p65x_codestartbranch.asmdevice/ 文件夹中排除重复项 code_start 、以消除重新定义。

    剩余的警告(第#190-D: enumerated type mixed with another type syscfg/device.c 123 行)不是严重的、不会妨碍成功构建。


    主题标题上的注释

    该线程标题提到“下电上电后不保留程序“。 您当前的构建配置是 CPU1_RAM、它将代码加载到易失性 RAM 中—它将无法通过设计的下电上电。 如果您需要程序持续存在、则需要切换到 基于闪存的构建配置 (CPU1_FLASH)、并确保为闪存引导配置了引导模式引脚[3]。


    为了帮助进一步完善这一点、了解以下信息会很有用:

    • 无论用户在手册中是否进行任何 device/device.c 需要保留或迁移到 SysConfig 配置中的自定义修改
    • 无论您是直接从 C2000Ware 空工程模板导入此工程、还是按照可能有意包含这两个文件的特定教程操作
    • 您打算从闪存(用于下电上电保留)还是 RAM(仅限调试)运行

    1. C2000 入门 — 导入空 Driverlib 工程
    2. C2000 SysConfig 入门
    3. C2000 调试提示 — 独立闪存操作

    此致、

    Zackary Fleenor