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.

[参考译文] TMS320F2.8388万D:运行双核时出现问题

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

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1090448/tms320f28388d-problem-running-dual-core-blinky-example

部件号:TMS320F2.8388万D
主题中讨论的其他部件:C2000WARETMDSCNCD2.8388万D

尝试从运行双核闪屏示例

C:\ti\C2000Ware_4_00_00\driverlib\f2838x\examples\C28x_dual\led</s>2838

在TMDSCNCD2.8388万D控制卡上,通过Code Composer将程序加载到RAM。

他们通过以下操作将CPU2设置为闪存LED2 (位于此控制卡上):

//配置CPU2以控制LED GPIO
GPIO _setMasterCore (DEVICE_GPIO PIN_LED2,GPIO核心_CPU2);

但是,它们通过循环运行此代码仅刷新LED1,这适用于刷新LED1:

GPIO_writePin (DEVICE_GPIO PIN_LED1,0);//打开LED。
DEVICE_DELAY _US (50万);
GPIO_writePin (DEVICE_GPIO PIN_LED1,1);//关闭LED。


所以我尝试通过打开和关闭LED1来刷新LED2,如下所示:

gPIO_writePin (DEVICE_gPIO_PIN_LED1,0);//转LED1 (此功能有效)。
gPIO_writePin (DEVICE_gPIO_PIN_LED2,0);//以尝试打开LED2。 (不起作用。)
DEVICE_DELAY _US (50万);
gPIO_writePin(DEVICE_gPIO_PIN_LED1, 1);//关闭LED1 (此功能有效)。
GPIO_writePin (DEVICE_GPIO PIN_LED2,1); //以尝试关闭LED2。 (不起作用。)

LED1按预期闪烁,但LED2仅保持关闭。

请注意,Project | Build Configurations | Set Active (项目|构建配置|设置为活动)允许我仅设置CPU1 RAM或CPU1 _flash,没有CPU2选项,因此我设置为CPU1 _RAM。

我可能在这里做了什么错,或者我缺少什么?

谢谢。

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

    您好,

    只是确认一下,您正在使用来自LED_EX1_C28x_dual_dlinky_CPU2项目的编译的.out文件加载CPU2,对吗? 当您打开示例文件时,应该会打开项目的两个版本,即CPU1和CPU2版本。 您需要编译这两个版本,然后开始运行CPU1的程序。 在调试模式下启动程序后(在程序中进一步运行之前),您需要将CPU2的程序加载到设备上。 这应允许您在CPU2上控制LED2 (因为LED2被指定为由CPU2控制)。 如果您对此有任何问题,请告诉我。

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

    1.已激活项目LED_ex1_C28x_dual_dlinky_CPU1。

    2. DID Project | Build Project并获得控制台消息
    已完成目标构建:"LED_ex1_C28x_dual_dlinky_CPU1.OU"

    3.已激活项目LED_ex1_C28x_dual_dlinky_CPU2。

    4. DID Project | Build Project并获得控制台消息
    已完成目标构建:"LED_ex1_C28x_dual_dlinky_CPU2.OUT"

    5.已激活项目LED_ex1_C28x_dual_dlinky_CPU1。 (返回CPU1项目)

    6. DID运行|调试和获得对话框,说明:
    "项目LED_ex1_C28x_dual_dlinky_CPU1与目标配置中的多个CPU兼容。
    请选择要加载程序的CPU。 此选择将与活动目标配置相关联。"

    ___德州仪器(TI) XDS100v2 USB调试探头_0/C28xx_CPU1
    ___德州仪器(TI) XDS100v2 USB调试探头_0/C28xx_CPU2

    所以我选择了CPU1的首选项。

    7. DID运行|加载|加载程序和带有2个下拉菜单的对话框:
    C:\Texas Instruments _workspaces\workspace_ePlex,led _ex1_C28x_dual_dlinky_CPU1,CPU1 _RAM\led _ex1_C28x_dual_dlinky_CPU1。输出
    C:\Texas Instruments _workspaces\workspace_ePlex,led _ex1_C28x_dual_dlinky_CPU2\CPU2_RAM\led _ex1_C28x_dual_dlinky_CPU2.out

    我为CPU2选择了较低的选项,但它没有指示CPU2.out文件正在加载的位置-- CPU1还是CPU2?

    8.单击绿色的恢复(F8)箭头开始调试运行。 不工作。 两个指示灯都不亮。

    9.接下来,刚运行过|调试,出现快速对话框,显示:
    正在加载程序:C:\Texas Instruments _WO...U1_RAM\LED_EX1_C28x_dual_dlinky_CPU1.out
    文本:0 of 8090 at 0xc000 (Texas Instruments XDS100v2 USB调试探头_0/C28xx_CPU1)

    10.单击绿色的恢复(F8)箭头开始调试运行,CPU1 LED1按预期在LED_ex1_C28x_dual_dlinky_CPU1项目中的主代码闪烁。

    但是LED2 (用于CPU2)刚稳定亮起(不闪烁),但LED2的代码与LED1的代码相同,因此我希望它们以相同的方式一起闪烁。

    如何获取CPU2代码以执行和刷新LED2?   LED2仅保持亮起而不闪烁。

    更新:

    1.我返回到project led-ex1_C28x_dual_dlinky_CPU2并运行了|调试,然后单击绿色的恢复(F8)箭头开始CPU2的调试运行。 Code Composer (代码编辑器)窗口变成白色。 无法查看项目资源管理器或任何内容。 于是我退出Code Composer并重新打开Control Card (评估板)的电源。

    2.再次启动Code Composer,激活项目LED_ex1_C28x_dual_dlinky_CPU1,运行DID |调试,并单击绿色恢复(F8)箭头,它就可以工作。 两个指示灯均闪烁。 我不知道我做了什么来使它正常工作。



    3.接下来,我将项目LED_EX1_C28x_dual_dblinky_CPU2中CPU2 LED2的闪烁速率更改为CPU1 LED1的闪烁速率的5倍,只是为了验证上述情况并非偶然。 接下来,我执行了Project | Build Project,Run | Debug,然后单击绿色的Resume (F8)箭头开始调试运行。 Code Composer (代码编辑器)屏幕变为空白(白色)
     但运行正常:CPU1 LED1和CPU2 LED2都闪烁,CPU2 LED2以预期的5倍速率闪烁。
     
     我不明白发生了什么。

     执行此操作的正确程序是什么?

     如何将CPU1和CPU2代码合并到同一个项目文件中并同时加载,或者我是否需要将CPU1和CPU2作为单独的项目和加载?  如何对闪存进行编程?

    谢谢。

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

    您好,

    您所采取的步骤似乎没问题。 在步骤7中,是否还尝试在调试窗口中右键单击CPU2 (如果此窗口未自动显示,您可以通过“查看”->“调试”将其打开),并在加载CPU2程序之前选择“连接目标”? 加载CPU1,然后执行此步骤应该可以正常工作,完成此操作后的唯一步骤是运行两个CPU程序。 此外,如果您通过Connect Target连接到CPU2,当您转至“运行”->“加载 ”时,您应该能够直接从下拉列表中选择CPU2的.out文件(我尚未使用“加载程序”测试此操作)。

     您在更新POST时遇到的问题可能是由于以下事实导致的:通常您不在CPU2上运行程序,而是运行CPU1并将程序加载到CPU2。 当您在关闭电源后重启并重新启动CCS后运行CPU1时,可能是程序没有从CPU2的闪存中擦除,因此它继续独立于CPU1运行。 如果 您对此有任何疑问,请告诉我,如果您的计划能够正常运行,请告诉我。

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

    已成功烧录项目LED_EX1_C28x_dual_linky_CPU1中CPU1的闪存和项目LED_EX1_C28x_dual_linky_CPU2中CPU2的闪存,关闭电源后重启,工作正常。 在开发双核应用程序时,Code Composer使用闪存(“刻录和学习”)比RAM运行得更好。

    CPU1和CPU2代码是否可以在一个项目中组合并编译为.out文件;即CPU1和CPU2在同一个项目中,而不是在这些单独的项目中?

    (非常感谢您的帮助!)

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

    据我所知,不会 双核需要编程为2个独立的.out文件。