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.

[参考译文] CCS/TM4C123GH6PM:应用程序在引导加载程序初始化后赢得#39;t 启动

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/617364/ccs-tm4c123gh6pm-application-won-t-start-after-bootloader-init

器件型号:TM4C123GH6PM

工具/软件:Code Composer Studio

您好!

我只是对引导加载程序的逻辑是否正确展开有疑问。 在 serial_bootloader 示例中、我设法通过 UART 器件刷写程序。 但是,应用程序无法启动。 为了进行测试、我将应用程序刷写到了所考虑的地址(0x2800)、并在之后将引导加载程序刷写到地址0x00、而不擦除任何闪存页(选中它@反汇编窗口)。 根据我对调试过程中的机制的了解、引导加载程序将跳转以启动应用程序到其矢量表:

;
;从应用程序的矢量表加载初始 PC 并分支到
;应用程序的入口点。
;
LDR R0、[r0、#4]
BX R0
endasmfunc 

此地址源自定义

VTABLE 开始地址 

设置为0x2800。 是否可以这样或换句话说:将 bin / out 文件刷写到控制器时、矢量表是否会像加载引导加载程序那样从0x2800开始? 如何使用"Disassembly"窗口来确定这一点?

最后一个需要我理解的问题:初始化引导加载程序将初始化处理器(使用同名函数)。 启动我的程序、它将初始化时钟本身。 会覆盖预模式设置吗?

Volker

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

    NARF、我只是错过了补充

    //导入特定于器件的 Hwi 模块
    var m3Hwi = xdc.useModule('ti.sysbios.family.arm.m3.Hwi');
    m3Hwi.resetVectorAddress = 0x2800; 

    我的配置文件、它现在可以完美地工作。 只是出于好奇:为什么需要这样做?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Volker、
    我认为下面的这个帖子解释了为什么需要通过 SYS/BIOS 修改复位矢量。

    e2e.ti.com/.../1189332