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.

[参考译文] TMS320F28388D:我无法满足我的需求-一个简单的双 CPU 应用

Guru**** 2527840 points
Other Parts Discussed in Thread: C2000WARE, MAX232, TMS320F28388D

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1021994/tms320f28388d-i-cannot-do-what-i-need---a-simple-two-cpu-application

器件型号:TMS320F28388D
主题中讨论的其他器件:C2000WAREMAX232

对 IDE 的失望持续了两周、我需要做一些相对简单的事情:

CPU1:通过 RS232连接到外部世界;闪存中的代码、RAM 中的数据、能够与 CPU2通信

CPU2:从 CPU1获取数据、运行一些数学运算、将计算值返回到 CPU1;闪存中的代码、RAM 中的数据

如果您无法提供帮助、我将直接与 TI 工程部门沟通。

到目前为止、我对这款 BRAINDAMAGED IDE 印象不深、这让我对 TI 印象非常不深

请帮助。

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

    您好、Bandit、

    我完全理解这种沮丧、基于 Eclipse 的 IDE (如 CCS)通常是用于简单任务的一个小问题(过度杀戮+不直观)、但一旦您进入项目的工作环境、就会变得非常强大。 这里的问题是、当你不想进入杂草时、所有的细节都会被阻碍、这会令人沮丧。

    现在来回答这个问题:您正确地说、您提到的内容相对简单、但应该单独处理(如您所述)。

    第一个问题是通过 RS232将固件加载到闪存中。 您需要为此选择一个收发器(我们不支持直接片上-15V 逻辑)、但一旦 RS232更改为 UART 逻辑电平、您就可以使用 SCI 执行实时固件更新(或标准固件更新(如果需要)。

    我已经联系了我们的实时固件更新专家、提供了一些资源来处理该问题。

    对于 IPC、我还与 IPC 专家联系、专家可以就此提供一些意见。

    此致、

    Vince

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

    您好、Bandit、

    让 CPU1和 CPU2相互通信并不困难。 我们有现有的 C2000ware 示例、可根据您的应用进行修改。

    路径: driverlib\f2838x\examples\C28x_dual\IPC\ccs\

    示例项目:IPC_ex1_basic

    此致、

    曼诺伊

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

    您好、Bandit、  

    有一个示例可用于通过 MySecureSoftware 将固件加载到 F28388D 的闪存中。 我可以通过私人聊天向您发送链接以请求示例。  

    谢谢、  

    Anu

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

    我不够清楚。

    我不想通过串行端口将代码加载到 CPU1。 我确实希望通过 RS232 (或等效设备)与 CPU1代码进行通信。 例如 I2C 等)。

    我可以通过 IDE 加载代码。我在获取所需应用程序的各个部分以及在 RAM 中加载闪存(代码)和运行时数据方面遇到问题。 我知道会发生这种情况。

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

    请参阅下面的我的答案。 RS232仅用于与 CPU1通信、不加载代码

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

    Anu:我尝试"接受"该请求。 不起作用-"您没有任何友好请求进行审核。"

    但是、请注意我对 RS232的评论、仅用于通信、而不是加载代码。

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

    您好、Bandit、  

    [引用 userid="309403" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1021994/tms320f28388d-i-cannot-do-what-i-need---a-simple-two-cpu-application/3778434 #3778434">我不想通过串行端口将代码加载到 CPU1。 我确实希望通过 RS232 (或等效设备)与 CPU1代码进行通信。 例如 I2C 等)。[/quot]

    为此、您所需的就是一个收发器、它能够采用 RS232协议并将其转换为 SCI/UART 的逻辑电平。 在这里、您可以使用任何 CM-UART 或 SCI 示例。 只要源器件的波特率能够与 CM-UART/SCI 外设的可用波特率匹配、  

    [引用 userid="309403" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1021994/tms320f28388d-i-cannot-do-what-i-need---a-simple-two-cpu-application/3778434 #3778434">我可以通过 IDE 加载代码。我在获取所需应用程序的各个部分以及在 RAM 中加载闪存(代码)和运行时数据时遇到问题。 我知道可能会发生这种情况。[/引述]

    我需要更多一些帮助来了解该部件。 关于将应用程序的一部分放入闪存/RAM、您是不是说在链接器命令文件中正确映射所需程序的部分时遇到了问题? 链接器命令文件可用于指定程序映射到的存储器段。 如果情况并非如此、请提供有关应用用例的更多详细信息、以便我们更好地了解为您提供哪些资源。  

    感谢您的耐心等待、  

    Anu

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

    数十年来、我一直在使用 RS232。 MAX232是最受欢迎的芯片。

    我从 GPIO 示例开始、将其作为我的 hello world。 我从零开始构建项目数次、以确保我知道该序列。 最初、该项目具有 CPU1_RAM 和 CPU1_FLASH (正如我所述)。 我还知道_flash_lnk_文件以及如何选择它们(与 RAM_lnk 文件相比)。  

    令人困惑的一个方面是 CPU_RAM 如何处理 FLASH_lnk 文件。 人们会认为该项目需要一个 CPU_FLASH 才能与 FLASH_lnk 文件配合使用。 (我知道 flash_lnk 文件、例如  flash_programming_cpu2_flash.cmd、是一个加载程序配置文件、它允许链接器知道您的芯片系列中的位置。 有一个相应的 RAM.cmd 文件。) 但该项目只有 CPUx_RAM 文件。  

    如果 CPUx_RAM 文件执行了所有操作、则 CPUx_FLASH 文件的用途/用途是什么?

    因此、我尝试了 IPC_ex2_msgqueue_c28x1项目、因为这是一个很好的起点。 问题是:它不运行。 具体而言、通过/失败指示为零。 (GPIO 引脚是一个很好的指示。)  

    我尝试了单步执行(CPU1) 1.c、但它在 IPC_SYNC()中挂起。 我发现我还需要启动(CPU2) 2.c  

    1) 1)起始序列是什么? 我是启动 CPU1、然后启动 CPU2、还是启动 CPU2? 给定代码后、看起来像启动 CPU2、然后启动 CPU1、因为 CPU2会阻止打开  

    IPC_SYNC (IPC_CPU2_L_CPU1_R、IPC_FLAG31);

    我可以同时启动它们吗? 我该怎么做?

    2) 2)如何查看1.c 中的"pass"全局变量? "变量"窗口中没有变量。

    如何将变量"添加"到"变量"窗口? 我认为它应该是自动的。

    它*似乎*实际执行,因为 CPU1和 CPU2都在最后达到 while (1) 但是、我对该示例的实际工作没有信心。

    此时我唯一可能的调试方法是 GPIO 和摆动引脚、或添加 printf()(或两者兼而有之-我将强制添加这两种方法以实际调试)。

    我可以打开两个控制台窗口、每个窗口用于两个 CPU 吗? 将控制台窗口绑定到给定 CPU 的机制是什么?

    哪些引脚绑定到 CPU UART、因为我需要真正的 RS232。 如果我有引脚、我可以电平转换为 UART 电压(Ya MAX232!!) 并在 PC 上的 PuTTY 窗口中使用正确的适配器。 我似乎可以将引脚映射到内部 UART、因为分接图中仅包含模拟和数字 GPIO 引脚。  

    您能给我指出一份说明如何操作的文档吗?

    (BTW,帮助->欺骗表毫无用处。 如何知道在何处/哪个文件中选择正确的速查表?)

    用例很简单:CPU1正在与外部世界通信。 它获取数据、发送到 CPU2、然后再将结果发送到 CPU1、后者会告诉外部世界结果是什么。 这是一个数学密集型应用。

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

    Bandit、  

    我建议您浏览 C2000为 F2837xD 器件提供的一日技术讲座-此材料也适用于 F2838x 器件- https://dev.ti.com/tirex/explore/node?node=AL-ahRCVFy8HkidT-bYYJA__jEBbtmC__LATEST 

    这将涵盖您有关 IPC、链接器命令文件以及在运行工程时导航 CCS 的问题。  

    SCI 外设可使用多组引脚-有关     可用于 SCI 的引脚的信息,请参阅 F2838x TRM 的第36章:www.ti.com/.../spruii0c.pdf 和数据表的第6节,特别是6.5:www.ti.com/.../tms320f28388d.pdf  

    谢谢、  

    Anu