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.

[参考译文] TMS320F2800157:调试 I2C 引导模式

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1510135/tms320f2800157-debugging-i2c-boot-mode

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

工具/软件:

我有一个 F280015x 系列 LaunchPad、我想验证我的代码将在地址0x50的 I2C EEPROM 中启动。 根据 TRM、我可以在 GPIO4和 GPIO5上连接 EEPROM、当我最终完成设计时、这些可以在 OTP 中设置为0x47。

我没有看到有关如何调用调试程序和设置 EMU-BOOTPIN-CONFIG 的说明。  我找到了下面的此参考、但没有了解如何配置 CCS 20。  

CCS/LAUNCHXL-F280049C:设置 EMU-BOOTPIN-CONFIG / EMU-BOOTDEF 而不是 OTP - C2000微控制器论坛- C2000Tmμ︎ 微控制器- TI E2E 支持论坛

如果我启动调试会话并打开"Watch"窗口、则没有任何选项、只有一个空白框。  此外、Reset 提供两个选项:1) CPU 和2)系统。 选择其中一个后、CPU 暂停、我看不到如何重新启动它。

通过 CCS 连接到器件后、在 CCS 存储器监视窗口中打开地址位置、并根据需要更新值。 设置这些值后、从 CCS 发出复位命令、现在当您点击"Run"时、器件将根据仿真启动设置进行启动。

提前感谢您的建议。

John

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

    您好、John:

    我认为这些说明是指使用"内存"视图(旧版本 CCS 中的"内存浏览器")。 此窗口应允许您输入 EMU 引导配置寄存器的地址并对其进行修改。

    我认为复位类型不会有任何影响。 要在重置后开始运行、您应该能够点击"继续"按钮(或转到"运行"->"继续")。 这不是为你工作吗?

    Whitney

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

    您好 Whitney、

    我在 CCS 20刚刚 起步、但最终摆脱了僵局。  如何 在程序启动时设置 EMU-BOOTPIN-CONFIG、以便能够从 I2C 引导?

    John  

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

    您好 Whitney、

    我想我将要与 TRM 中的 Rosetta Stone 联系起来、将所有这些都联系在一起。 下面是 TRM 中显示需要在调试器中更改的实际寄存器是 Zx ADC-GPREGx 寄存器的页面。

    下面是提供访问权限的 Register 面板中的视图。

    我将在下周尝试这项工作、因此我要求我们将支持申请保留到开放状态、直到那时为止。

    John

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

    没错、0xD00处的这些"EMU"字段是您将在调试期间写入来测试引导加载程序的字段。 我认为我们不能在"Registers"视图中看到它们(这与您在帖子中显示的 OTP 字段不同)。 不过、就像我提到的、使用"Memory"窗口应该可以正常工作。

    在上图中、转到"Scripts"->"Emu Boot Load Select"->"EMU_BOOT_FLASH"以填充 EMU 引导配置部分、使设置更容易可视化。

    在地址0xD00处、值0x5AFFFFFFF 基本上要求忽略 BMSP 并使用 BOOTDEF 表中的引导模式0。 然后在地址0xD04处、它将闪存(3)分配给 BOOTDEF 表中的引导模式0。 如果运行 EMU_BOOT_RAM、则3将变为5。 在这里、您可以写入前面提到的该0x47值、以便在 GPIO5和 GPIO4上选择 I2C。

    Whitney

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

    您好 Whitney、

    为了支持一些内部问题、不得不在下周尝试一下。  请保持开放直至。

    John

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

    没关系。 我将保持打开状态、直到30天后没有新回复、线程才会自动锁定。

    Whitney

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

    您好 Whitney、

    我想保持该线程打开、因为我已经解决了 CCS 的 IT 问题并开发了 PROM 映像。

    谢谢、

    John

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

    你好、约翰、没问题。 我不会关闭它。

    Whitney

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

    您好 Whitney、

    在启动 I2C EEPROM 时遇到问题。

    我正在使用157LaunchPad、有三种不同型号的 LED 闪烁程序、因此可以确定正在运行哪个程序。  TMS320闪存中加载了一个、我启动调试使用的 CCS 副本有第二个、I2C EEPROM 有第三个。   CCS 副本从 RAM 运行、因此不会覆盖闪存中的副本。  

    如果我运行基于 CCS 的程序、则会看到它按预期顺序使 LED 闪烁。  如果我暂停一下,看看记忆,我看不到你之前展示的模式。  

    如果运行 EMU_BOOT_FLASH 或 EMU_BOOT_RAM 脚本、我确实可以看到这些位置的存储器值会发生变化。  我本来希望它们已经准备好、所以当我运行代码时、我只需要暂停、在0xD04位置写入0x47、重置 CPU、运行、然后查看我的 I2C 代码引导。   

    您能帮助我回到正轨吗?

    John

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

    我认为它们通常默认填充。 我认为必须自己编写(或使用 GEL 文件脚本)是正常的。

    但您对接下来的步骤是正确的。 一旦 EMU 引导设置到位、您应该能够重置并运行。 当你尝试它的时候发生了什么? 是不是真的?" 它是引导至闪存吗?

    您应该能够将引导 ROM 符号添加到调试会话(运行->加载->添加符号)、并像您自己的代码一样调试引导 ROM。

    如果您以前没有这样做、可以在下面的文件夹中找到符号.out:

    \libraries\boot_rom\f280015x\rev1\ROM_Sources\CCS_FILES\CPU\Release

    当 CCS 要求您定位源文件时、您可以将其指向

    \libraries\boot_rom\f280015x\rev1\ROM_Sources\F280015x_ROM\bootROM\source

    我会使用"Disassembly"视图在 CPU1BROM_startSystemBoot ()(在 cpubrom_boot.c 中)中放置一个断点、然后逐步执行该代码。

    Whitney

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

    您好 Whitney、

    我的系统正在引导至闪存是正确的。

    我同意你指向我的方向,我正试图到达那里。  这里是我所在的位置。  

    我在 Debug 中启动了基本程序、并允许其加载到 RAM 中。  我去了  \libraries\boot_rom\f280015x\rev1\ROM_Sources\ccs_files\cpu\Release 、并找到两个.out 文件:F280015x_CPU1_FULL_ROM.out 和 F280015x_ROM.out 。  如果加载了 F280015x_CPU1_FULL_ROM.out、查找.asm 文件时出现错误。  加载 F280015x_ROM.out 似乎可以。

    我运行"Scripts"->"Emu Boot Load Select"->"EMU_BOOT_FLASH"并将引导模式设置为47。

    打开这个窗口  \libraries\boot_rom\f280015x\rev1\rom_source\F280015x_ROM\bootROM\source\cpubrom_boot.c 并在第2075行设置断点

    我没有加载任何符号相关联的代码。  还包含了我希望有所帮助的屏幕截图。

    再次感谢您的指导!

    John

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

    您好 Whitney、

    我设法发现我可以启动调试程序、并且在运行一次后、我可以将引导模式从5更改为3、并在闪存中引导复制。  我还看到了模式5导致执行内存复制。

    我已设置为引导模式47、但无法看到进度、因为仍然缺少通过引导加载程序代码进行调试的方法。

    发现了几篇论述通过引导加载程序进行调试的文章、但没有真正深入了解如何加载符号文件、设置断点和单步执行它。  是否有涵盖此内容的 TI 文档?

    我会继续挖掘,直到我听到你的声音。

    John

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

    您好、John:

    抱歉、我应该先在 CCS 20中尝试一下、因为它似乎无法很好地处理源代码的定位问题。

    添加符号后、我能够打开反汇编窗口并查找 CPU1BROM_startSystemBoot 函数并放置一个断点来对其运行。

    与旧 CCS 版本不同、这似乎没有触发 CCS 要求我找到源代码。 但是、我可以转至 Run (运行)-> Edit Source Paths...(编辑源路径...) 并将 ROM 源文件夹添加到列表中。

    这仍然不允许我单步执行 C 代码、但它似乎为 CCS 提供了 cpubrom_boot.c 文件和 ROM 符号之间的链接、以便我能够在 C 代码中放置断点并对其运行。 例如、我在 ram_boot 实例中放入一个断点、运行 emu_boot_ram 脚本、恢复应用程序、并看到它到达断点。

    这并不理想、但这正是我今天下午能够解决的问题。 您可以在 CCS 论坛上询问他们是否有任何改进提示。 这是我在可以找到的文档中唯一提到的:

    software-dl.ti.com/.../ccs_debug-main.html

    Whitney

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

    您好 Whitney、

    我按照您的文章进行了操作、让我可以看到我尝试访问 I2C prom、但只读取了 prom 标头(示波器跟踪)。  发现我没有设置任何时钟寄存器。  设置这些 就是问题所在。

    非常感谢教我如何通过 Bootrom 进行调试。 将来一定会坚持这一点。

    John