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.

[参考译文] TMS320F28375S:引导加载程序出现奇怪问题

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1461544/tms320f28375s-strange-issue-with-bootloader

器件型号:TMS320F28375S

工具与软件:

你好

这是对这一 问题的后续行动。 上一个线程现在已锁定、所以我必须创建这个线程。

我对该问题进行了调试、在引导加载程序未启动的情况下、DSP 会在 c_int00汇编指令内的某处停止。 它到达 GET_DATA 和 GET_ADDR 循环、但在某处出现问题。 它没有 到达 DO_BINIT。 我不确定这如何能帮助我找到原因。

我有第一级引导加载程序(BL0)+第二级 BL +主应用程序。 (BL0 + BL + APP)、每个都在闪存中有专用范围。 BL0从闪存运行、最后它跳转到 BL、而 BL 将跳转到应用。 (从 RAM 运行 BL 和 APP)

奇怪的是、BL0的相同代码在单独运行时(应用程序未刷新)、但在应用程序存在时停止工作。 如果代码中微小的变化、便可让它再次运行。 有时更改会使其运行、但通常情况下无法运行。 例如,在一种情况下,它运行,但我看到一个静态变量,我初始化,有一个不同的值,从开始本身!. 在另一种情况下、BL0和 BL 正常运行、但稍后在应用程序内部运行时、例如通信出现问题。 我不明白、 在 DSP 跳转到应用后、BL0中的东西稍后会如何影响应用。 BTW,该应用程序是100%肯定的,所以没有什么是 wron 那里.

以下是一些示例。 我在不同情况下对 BL0代码进行的更改非常微不足道、也可能涉及任何地方、甚至可以更改甚至未使用的宏的值、或者添加一些虚代码行、或者更改一些调试消息。 所以、无论这是什么、都不是关于我更改的内容。 我在这里编写的不同版本的 BL0基本相同。

BL0_version1 + BL + APP >>运行、正常
BL0_VERSION2 + BL + APP >>不会运行
BL0_version2 + BL       >>跑步
BL0_version3 + BL + APP >>运行、但不正常、BL0中出现奇怪的行为
BL0_version4 + BL + APP >>运行、但不正常、稍后在应用中出现奇怪的行为


BL0通过闪存运行。 是否有任何东西 可能解释这一奇怪的问题?
我有一个  关于这个的单独问题







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

    你好、Saeed、  

    请允许我多花一点时间 来查看所有信息、我将在 明天下午回复您。

    此致!

    Matt

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

    你好、Saeed、

    [quote userid="632268" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1461544/tms320f28375s-strange-issue-with-bootloader 奇怪的是 BL0的相同代码在单独运行时(应用程序未刷新),但在应用程序存在时停止工作。 如果代码中微小的变化、便可让它再次运行。 有时更改会使其运行、但通常情况下无法运行。 例如,在一种情况下,它运行,但我看到一个静态变量,我初始化,有一个不同的值,从开始本身!. 在另一种情况下、BL0和 BL 正常运行、但稍后在应用程序内部运行时、例如通信出现问题。 我不明白、 在 DSP 跳转到应用后、BL0中的东西稍后会如何影响应用。 BTW,该应用程序是100%肯定的,所以没有什么值得信赖的。

    这听起来内存存在问题。 您能否检查 BL0、BL 和主应用程序的链接器命令文件以确保存储器中没有严重重叠?  

    此致!

    Matt

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

    您好、Matt

    我已多次检查链接器文件、但再次进行了彻底检查。  

    关于闪存:没有重叠。 每个应用程序都链接到闪存中的一个单独范围。  

    扇区0-1
    扇区2-3
    部门4*  
    扇区5-9.

    *为此,我仅使用了扇区4的一半,大小与2+3相同。 我让另一半没有使用。 但这不是问题的原因,我检查。


    关于 RAM:存在一些重叠。 但在转换到下一个 RAM 之前、整个 RAM 会被清除。
    要么当前运行的应用程序在末尾将其清除、即在跳转到下一个应用程序之前将其清除、要么由下一个应用程序本身清除、即 在 codestart (和 wddisable)后的第一个事项进行清除


    好的
    Saeed

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

    你好、Saeed、

     RAM 中有什么重叠?  

    我现在还在同一页、BL (所定义的第二级引导加载程序)会在闪存中的两个应用程序之间进行选择以复制到 RAM 中。 然后、它清除 RAM 并分支到下一个应用、或者分支到下一个应用、然后由它清除。

    此致!

    Matt

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

    您好、Matt

    关于 RAM 中的重叠问题、每个应用程序都具有独立的 RAM 分配。 引导加载程序都具有相似的 RAM 分配。 主应用程序还有一个。 例如、LS5可用于引导加载程序中的.ebss、而用于应用程序中的 CLA 程序。 每个引脚具有完全独立的内存映射。

    我们有第一级加载程序 BL0、两个与第二级 BL 类似的引导加载程序和主应用程序(每个都专用于我在上一篇文章中提到的四个闪存范围中的一个)。 BL0从两个第二级 BLS 中选择一个、将所选的一个从闪存复制到 RAM、然后清除整个 RAM (仍然在 BL0中)、然后跳转到该所选的 BL。  

    在主应用程序开始时会再次清除整个 RAM。 只有这次、在应用程序一开始就会将其清除、而不是在 BL 结束时再跳转到它。 因此、每个应用程序都可以在开始运行之前获得干净的 RAM。  

    总之、从 BL0跳转到所选 BL 时、RAM BL0跳转之前清零、而在从 BL 跳转到应用的 过程中、它在应用本身跳转之后立即清零。

    此致、
    Saeed

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

    你好、Saeed、

    感谢您重新阐明您的引导流程、这对我来说很合理。

    [报价 userid="632268" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1461544/tms320f28375s-strange-issue-with-bootloader/5616590 #5616590"]总之、从 BL0跳转到选定的 BL 时、RAM 在按 BL0跳转到之前立即清除、而在从 BL 跳转到应用 程序的过程中、它在应用程序本身跳转到之后立即清除。

    当我们从一个应用程序跳转到另一个应用程序时、关于"清除"RAM 的一个问题是、RAM 在初始化后不应被清除。 如果 RAM 被清除、在复制所有 ramfunc (以及任何其他映射到 RAM 的输出节)之前需要将其清除。

    此致!

    Matt

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

    您好、Matt

    是的、现在就是这样。 在初始引导中以及应用程序之间的以下转换中执行这些步骤。 复制任何内容之前、清除 RAM 总是完成。 在同一应用中执行初始化后、从不清除 RAM。

    此致!
    Saeed

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

    你好、Saeed、  

    感谢您的澄清、我将向 RAM 专家提问、进一步深入了解。  

    此致!

    Matt

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

    您好、Matt

    您同事是否有更新?

    如果您需要我提供的任何其他信息、请告诉我。

    谢谢!
    Saeed

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

    很抱歉这么晚才回复。 我看不出我们在这里有什么关于 RAM 功能的具体问题?  

    Vivek Singh

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

    您好、Vivek

    我不确定是什么导致了问题、RAM 还是闪存。 我知道、从闪存运行第一个引导加载程序时会出现这个随机问题。  我从 RAM 运行时看不到它。  我阅读了 篇文章、其中介绍了修改闪存应用时需要考虑的要点。 我没有看到任何错误或被忽视,我也不明白为什么这个问题是随机发生的,而不是总是。  

    此致!
    Saeed

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

    你好、Saeed、

    您能否提供一些可重复问题的详细信息? 除非行为是可重复且一致的、否则很难确定问题。  

    Unknown 说:
    BL0_version1 + BL + app >>运行、正常
    BL0_VERSION2 + BL + APP >>不会运行

    例如、在这个未运行的 BL0_version2中、您会看到什么行为? 变量是否使用意外值进行初始化? 通信是否无法正常工作? 对于 BL0_version2、您是否每次都看到相同的行为? 如果您知道、与您看到的问题相关的地址是什么? 当您加载应用时、是否看到特定存储器地址发生了变化?

    您是否看到从 One BL0 -> BL -> App 分支时出现任何问题? 在分支之后、PC 和 RPC 的设置是否符合您的预期?

    此致、

    Skyler

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

    您好、Skyler

    例如、在这个未运行的 BL0_version2中、您会看到什么行为?  变量是否使用意外值进行初始化?  通信是否无法正常工作?

    -在这些情况下 DSP 不再启动,即使在电源循环后。

    引用我的第一篇文章:"我调试了这个问题、如果引导加载程序没有启动、DSP 会在 c_int00汇编指令中的某个位置停止。 它到达 GET_DATA 和 GET_ADDR 循环、但在某处出现问题。 它无法 到达 DO_BINIT。"

    对于 BL0_version2、您是否每次都看到相同的行为? 如果您知道、与您看到的问题相关的地址是什么?
    -是的, 如果一个版本的 BL0产生这个问题,它将在每次同一个特定的版本存在.


    此致!

    Saeed

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

    你好、Saeed、

    您如何加载 BL0、辅助 BL 和应用程序? BL0是否通过 CCS 加载、而辅助 BL/APP 是否由 BL0加载?

    您能否发送与这些工程关联的链接器.cmd 文件和.map 文件?

    此致、

    Skyler

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

    你好、Saeed、

    此问题是否已得到解决? 如果是、我将关闭该主题。

    此致、

    Skyler

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

    您好、Skyler

    很抱歉这么晚才回来。 我一直很忙其他事情。 实际上、没有问题得到解决、它处于暂挂状态。 请保持该主题处于打开状态。 第一次有机会、我会提供更多信息。

    好的
    Saeed

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

    好的、会的。

    此致、

    Skyler