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.

[参考译文] TMS320F28069:在反汇编窗口中、无法进入(前进)闪存

Guru**** 2562120 points
Other Parts Discussed in Thread: UNIFLASH

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1002708/tms320f28069-in-disassembly-window-cant-able-to-step-into-forward-for-flash

器件型号:TMS320F28069
主题中讨论的其他器件:UNIFLASH

你好

我正在尝试刷写程序、我已经完成了包括 cmd 链接器文件设置在内的每个步骤、所有这些步骤之后、我构建和调试程序、然后我选择了脚本-> EMU 引导模式选择-> EMU_BOOT_FLASH。 它会立即带我进入"Disassembly"窗口。 之后、我确实使用"Step Into"来转发反汇编窗口中的存储器地址、但我停留在该代码上、它不允许转发、因为我需要达到 " LB _c_int00      ;在"DSP2803x_CodeStartBranch.asm" 文件中的 RTS 库中分支到 boot.asm 的启动",用于闪存编程。 我卡在 419和428行、如何通过这些行来访问闪存地址。 我在这里分享了屏幕截图、如果您需要更多详细信息、请告诉我。

谢谢

Robin

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

    Robin、

     您的应用程序的程序入口点是什么?

    此致、

    Ozino

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

    在这里

    谢谢

    Robin

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

    Robin、

    是否可以从工具栏中转到“工具”->“调试器选项”->“自动运行”和“启动”选项?  它应显示以下对话框:

    您需要确保未选中圆圈中的框。  在上面的示例中、我认为代码已经通过 Boot.asm 代码运行。

    一旦您在加载程序后取消选中此项、然后单击"Reset"、您将经历与不具有仿真连接的器件相同的引导流程(并且应该在您设置 EMU 引导时执行此操作)。

    最棒的
    Matthew

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

    您好、Mathhew

    非常感谢您的宝贵答复、我也尝试过这种方式、但对于循环来说、它仍然是无限的(在419到428行之间)。

    谢谢

    Robin

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

    您好 Matthew

    这不起作用,但我仍然有相同的错误,您能不能建议不同的方法,我也不知道为什么停留在无限循环中? 因为在简单的调试和运行中、我不会看到任何问题、但在闪存中只会出现问题。

    谢谢

    Robin

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

    Robin、

    我不确定我是否正确理解了这个问题,您显示的代码片段位于代码中的 main()函数内,具有无限循环,将永远保留在该代码中。  此时、代码将在引导代码和任何初始化之后执行。

    现在、PWM ISR 应继续触发、您应该会看到代码定期跳转到这些 ISR 例程。  这是 ISR 不触发的问题吗?  我不确定这与闪存存储器方面的关系。

    最棒的

    Matthew

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

    Matthew、

    我使用此方法进行闪存操作">www.youtube.com/watch 您将注意到,我们需要从当前位置(从 Disassembly 窗口)执行单步转发,到 codestartbranch.asm 的开头,该开头是一个到 cmd 文件的链接(用于引导至闪存操作)。 但问题发生在"infinite for loop"、它不允许我访问 codestartbranch.asm 文件。 我的最终目标是将代码永久存储在控制卡中。

    最棒的

    Robin

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

    Robin、

    我相信、如果您处于无限循环中、您已经执行了代码启动分支、并转到了主函数。  从屏幕截图中可以看出、C 代码中存在无限循环、这就是 CPU 卡住的地方。  我认为视频的重点是展示 ROM 中执行的操作、以及闪存存储器的分支。

    屏幕截图显示代码(在拆分窗口中)位于地址0x3F638A、即闪存扇区 A 0x3F4000-0x3F7FFF 中。  因此、您已经将代码编程到闪存中、并在停止 CCS 时从闪存中执行。

    在调用 main()之前,代码启动分支本来会发生得更早。  除非我们如我之前所述取消选中这些框、否则 CCS 将在加载程序后自动转到 main()(并且始终跳过代码启动分支)。

    最棒的

    Matthew

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

    感谢您的回复、我位于闪存地址(介于0x3F4000至 0x3F7FFF 之间)、 然后我运行代码、然后按"终止"、之后我拔下所有设备并重新插接、我希望代码应该在闪存中、但我没有获得任何输出、这意味着它不会闪存。 您能不能指导我完成闪存的整个过程、这样我就能理解我在哪里犯了错误。

    谢谢

    Robin

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

    Robin、

    您能否根据下表验证引导引脚是否设置为 GetMode (GetMode 的默认操作是引导至闪存)。

    最棒的

    Matthew

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

    您好、Mathhew

    GPIO 34设置为高电平、但我在代码中看不到 GPIO 34、关于 TRST、我附加了原理图的屏幕截图。

    谢谢

    Robin

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

    Robin、

    您将需要一个连接到 GPIO34和 GPIO37上 VDDIO 的2.2k Ω 至10k Ω 电阻器。  GPIO37也可用作 TDO (JTAG 信号)、因此您需要在原理图上找到该信号。  TRSTn 应该有一个连接到 VSS 的2.2k Ω 至10k Ω 电阻器、以便在未连接调试探针时将其保持在复位状态。

    从上图中、我也看不到 GPIO34上的上拉电阻器。  您是否使用 LaunchPad 或 controlCARD 之类的 TI 硬件、或者这是定制 PCB?

    最棒的

    Matthew

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

    感谢 Matthew 的回复;是的、这是客户 的 PCB;我认为我需要对硬件进行一些更改。 我可以使用 Uniflash 软件执行独立操作吗? 而不更改任何硬件更改、您刚才提到过吗?

    谢谢

    Robin

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

    Robin、

    是的、uniflash 将通过 JTAG 连接进行编程、无需引导加载程序。

    最棒的

    Matthew

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="8973" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1002708/tms320f28069-in-disassembly-window-cant-able-to-step-into-forward-for-flash/3722818 #3722818"]您需要一个连接到 GPIO34和 GPIO37上 VDDIO 的2.2k-10k Ω 电阻器。  GPIO37也可用作 TDO (JTAG 信号)、因此您需要在原理图上找到该信号。  TRSTn 应该有一个连接到 VSS 的2.2k Ω 至10k Ω 电阻器、以便在未连接调试探针时将其保持在复位状态。[/引用]
    在我们的原理图中、GPIO 34、37 (TDO)确实设置为1、 TRSTN 拉低。 这些处于"获取模式"。  
    请参阅随附的 Fash 写入操作的屏幕截图。  
    使用 UNIFLASH 进行回读时、我们看到闪存未被访问(所有地址都包含 FFFF -请参阅屏幕截图)
    我们希望看到使用 CCS 提供的校验和写入闪存中的代码
    要成功访问闪存并在独立模式下运行、我们需要做些什么?
     我们非常感谢您的任何帮助。
     
    谢谢
    Robin
     
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Robin、

    您能否向我发送编译工程时生成的.map 文件?  我想验证应该被组装的预期闪存区域。  编译后、这应该存在于我们的项目目录中。

    最棒的

    Matthew

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

    当然、我已经尝试上传.map 文件、但它不允许我上传。 我将其转换为.doc format.e2e.ti.com/.../TMS320C2000-Linker-PC-v20-MAP-file.docx

    谢谢

    Robin

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

    Robin、

    我今天有点落后,今晚美国时间晚些时候,我将在我的分析中发表另一份答复。  感谢您在这里的耐心等待。

    最棒的

    Matthew

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

    不用担心 Matthew、花点时间、感谢您告诉我。

    谢谢

    RG

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

    Robin、

    请查看地址空间0x3F0000 (扇区 D)和0x3F6000 (扇区 A)、它们包含项目中的程序代码。  对于扇区 D 中的代码、由于速度原因、这被定义为从 RAM 运行(在运行复制函数后)、因此您应该会看到此代码在 RAM 地址0x8000处重复。

    分配给数据空间的唯一闪存是扇区 B (0x3F4000)、该扇区为空。  如果您希望在运行期间更新/分配给此空间的某种类型的数据表、则在生成数据时需要调用闪存 API 来写入此数据。

    如果该空间用于容纳加载时间初始化的数据表、则我们需要定义#pragma、该 pragma 会生成链接器指令以将代码加载到此空间、以便在稍后的程序执行中使用。

    请告诉我、以上内容是否解决了您对 CCS 正确加载闪存的担忧。

    最棒的

    Matthew