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.

[参考译文] TMS320F280025C:通用电机控制实验:CCS 工程转至原始文件夹并忽略本地更改时出现问题

Guru**** 2412100 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1253819/tms320f280025c-universal-motor-control-lab-problem-with-ccs-project-going-to-original-folder-and-ignoring-local-changes

器件型号:TMS320F280025C
主题中讨论的其他器件:C2000WARE

我根据通用电机控制实验创建了一个定制项目。

我将通用电机控制实验中的文件复制到定制项目中、以便我可以在该项目中进行修改。  这些是自定义工程中文件的本地副本、不再链接到原始工程中 C:\ti\c2000\C2000Ware_MotorControl_SDK_4_02_00_00\solutions\universal_motorcontrol_lab 处的原始文件

我已更新自定义工程、包括自定义工程内本地路径的搜索路径(不再指向原始工程)

例如、我 在自定义项目中修改了 MOTOR_Vars_t、以添加几个数据字段。   工程构建没有错误、我在访问这些数据字段时没有看到编译器错误。   


不过、当运行自定义项目时、 仍然引用原始 MOTOR_Vars_t 结构、因此数据访问将发生偏移。  例如、如果原始结构可能是:

typedef 结构{

oldmember1,

旧成员2

}example_struct_t

新结构可能会被添加到

typedef 结构{

oldmember1

新成员

旧成员2

}example_struct_t

如果我尝试在中访问 newmember、编译器不会发出投诉。  但在运行时,如果我尝试访问 newmember ,数据读取是 oldmember2。

这就是  通用电机控制项目中的 MOTOR_Vars_t 所发生的情况。  运行时不使用 自定义项目中更新的 MOTOR_Vars_t 结构

作为测试、我删除了自定义项目中的.settings 文件夹。  打开工程时、CCS 创建了一个新的.settings 目录、并使用来自原始工程的设置进行填充。  因此、从自定义项目原始项目之间仍然存在一些链接

我的总体目标是、自定义项目应将定制/本地 MOTOR_Vars_t 用于运行时、而不是使用 原始项目中的 MOTOR_Vars_t。  有什么关于如何断开此链接并使自定义项目正常运行的建议吗?

谢谢!

谢谢!

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

    最新信息...

    对于上述问题、*在*删除对原始通用电机控制实验项目的所有引用后*、我在复制/自定义项目中创建了一个新文件夹。  我在这个新文件夹中添加了一个 C 文件、正是在 这个文件内、我看到了原始文章中描述的问题、在该文章中引用了原始结构、而不是局部/更新的定义。

    作为测试、我将其中一个受影响的函数复制到 motor1_drive.c 中 、这是定制/复制工程中的 motor1_drive.c、而不是 SDK 中的原始工程。  

    在本例中、代码按预期运行!   因此、从 SDK 中获取原始 MOTOR_Vars_t 而不是获取新/本地/自定义副本似乎是新文件夹或新文件的问题。

    再次总结:

    1.将通用电机控制项目从 SDK 解决方案目录复制到新项目。   

    2.在 SDK 中删除原始项目的链接。  创建所有.c 和.h 文件的本地副本。  更新宏和设置、以指向项目的本地副本。

    3.在新建/复制的项目中更新 MOTOR_Vars_t。

    4.在复制的工程中创建新的文件夹和新的.c 文件

    5.无法从新的.c 文件访问新项目中更新的 MOTOR_Vars_t。  而是从 SDK 工程访问原始 MOTOR_Vars_t 定义。

    6.在新项目中从 motor1_drive.c 访问更新的 MOTOR_Vars_t 后可以实现。   

    至少、如果我只使用 motor1_drive.c、我有一个权变措施。   


    尽管如此、了解创建新文件夹和文件所发生的情况仍会很好。

    谢谢!

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

    尊敬的 Mark:

    我们已经认识到在创建一个全新/定制项目时、连接和复制文件是一个问题。 我认为我们甚至在 MCSDK v4_02版本中解决了这个问题、在这里、'universal_motorcontrol_lab.projectspec'文件现在复制所有文件、而不是链接、如下所示。

    	<file action="copy" path="PROJ_ROOT/common/source/motor1_drive.c" targetDirectory="src_control" />
    	<file action="copy" path="PROJ_ROOT/common/include/motor1_drive.h" targetDirectory="src_control" />

    您的.projectspec 文件是否显示这样的复制? 或者、尽管使用了更新的(副本) projectspec 文件、您仍遇到问题吗?

    此致!

    凯文