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.

[参考译文] RTOS/CC2640:尝试在自定义引导加载程序中加载其他程序

Guru**** 2556870 points
Other Parts Discussed in Thread: CC2640

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/583064/rtos-cc2640-trying-to-load-other-program-in-custom-bootloader

部件号:CC2640

工具/软件:TI-RTOS

您好,

我正在尝试创建一个自定义引导加载程序,它在CC2640上的两个程序之间交换,并且遇到了一些问题,希望有人能提供帮助。

首先,我使用SysCtrlSystemReset()来重置设备。 在调试模式下运行时不会重置,但程序冻结是否出现这种预期行为?

要跳到另一个位置,我正在使用此代码,但无法启动另一个程序:

_ASM ("LDR R0,[location]");
_ASM ("ORR R0,#1");
_ASM ("BX R0");

我知道ROM中存在TI-RTOS的问题,使代码可重定位并将重置矢量更改为第1页。

我查看了大量其他帖子,有关Boot Loader的建议似乎没有定论。 例如,是否需要调用chorposDevice(),如果需要,如何调用?

谢谢!
Justin

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否查看过我们的GitHub示例中有关串行引导加载程序的内容? 如果没有,我建议您查看一下。
    github.com/.../serial_bootloader.md

    当您重置连接了调试器的设备时,CC26xx将在引导过程中保持暂停状态,因此不会执行任何操作。 这意味着您看到的是正常的。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,

    感谢您的回复。 我没有使用串行引导加载程序,因为我需要一个自定义加载程序,但我已经详细地查看了该示例。

    因此,在调用SysCtrlSystemReset后,是否有任何方法可以使用调试? 还是另一种重新引导设备并继续调试的方法?

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

    您始终可以在重置设备后尝试连接到正在运行的目标。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,

    再次感谢。

    因此,我设法通过以下方式再次重新运行当前程序:
    ASM (" MOV R0,#0x0000 ");
    ASM (" LDR SP,[R0,#0x0]");
    ASM (" LDR R1,[R0,#0x4]");
    ASM (" BX R1 ");

    有任何建议,说明使用另一正确位置的0x0000可能不起作用?

    谢谢!
    Justin