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/TM4C123GH6PGE:如何在CCS中调试"bootloader"?

Guru**** 2522770 points
Other Parts Discussed in Thread: TM4C123GH6PGE

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/583399/ccs-tm4c123gh6pge-how-to-debug-bootloader-in-ccs

部件号:TM4C123GH6PGE
主题中讨论的其他部件:DK-TM4C123G

工具/软件:Code Composer Studio

您好,

我正在尝试调试CCS中的引导加载程序。 但我找不到办法去做。

我使用的是TM4C123GH6PGE (aka. DK-tm4c123g),程序是“boot_serial”。

我按下了CCS中的“Debug boot_serial”按钮,并尝试按键盘上的F5/F6键(组装步骤进入/组装步骤结束)。

但我收到错误消息:  

Cortex_M4_0:自动运行:目标未运行,因为未定义符号"main"
Cortex_M4_0:错误:发生调试端口错误。

我仍然无法在bl_main.c.中运行Updater()

如何运行"boot_serial"并在其上设置断点以了解其工作原理?

是否应该在属性中设置任何配置?

此致,

伊恩

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

    但我收到错误消息:  

    Cortex_M4_0:自动运行:目标未运行,因为未定义符号"main"
    Cortex_M4_0:错误:发生调试端口错误。默认CCS 自动运行和启动选项 将导致CCS在启动调试会话时运行到main。 引导加载程序没有导致"autorun: target not run as the symbol "main" is not defined"(自动运行:目标未运行,因为符号"main"未定义)错误的main函数。

    请尝试以下任一操作:

    a)在Auto Run (自动运行)和Launch Options (启动选项 )中将Run to symbol (运行至符号)设置为 ConfigureDevice (配置设备)。 启动调试会话时 ,调试器应在达到ConfigureDevice C函数时停止。

    b)在  自动运行和启动选项中取消勾选"程序加载或重置"。 启动调试会话时,调试器将在重置向量处停止,您可以逐步执行汇编程序启动代码。

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

    [报价用户="Chester Gillon"]

    赵伊恩
    但我收到错误消息:  

    Cortex_M4_0:自动运行:目标未运行,因为未定义符号"main"
    Cortex_M4_0:错误:发生调试端口错误。

    启动  调试会话时,默认的CCS自动运行和启动选项将使CCS运行到main。 引导加载程序没有导致"autorun: target not run as the symbol "main" is not defined"(自动运行:目标未运行,因为符号"main"未定义)错误的main函数。

    请尝试以下任一操作:

    a)在Auto Run (自动运行)和Launch Options (启动选项 )中将Run to symbol (运行至符号)设置为 ConfigureDevice (配置设备)。 启动调试会话时 ,调试器应在达到ConfigureDevice C函数时停止。

    b)在  自动运行和启动选项中取消勾选"程序加载或重置"。 启动调试会话时,调试器将在重置向量处停止,您可以逐步执行汇编程序启动代码。

    [/引述]

    您好,Chester,

    非常感谢!

    我已经尝试过这两种方法:

    a)将 “运行至符号”设置为“配置设备”并启动调试会话。 但是,当达到ConfigureDevice C功能时,它仍然无法停止。

    程序启动时,我甚至不能按F5或挂起。

    b)取消勾选"程序加载或重置"并启动调试会话。 但看起来没有什么变化。 程序从652 _c_int00行开始。

    我一直按F5键并将程序转到“0.004万c: E7FEE7FE UDF #0xee7e”  

    设置时有什么问题吗?

    此致,

    伊恩

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

    我一直按F5键并将程序转到"0.004万c:E7FEE7FE UDF #0xee7e"[/报价]查看 TivaWare_C_Serie-SRAM的内容3.156。SRAM \boot_loader\BL_STARTUP.CS.s汇编程序功能ProcessorInit用于将 代码从闪存复制到2.1 ,然后跳转到SRAM代码。

    反汇编屏幕截图显示了SRAM中的程序计数器,地址为0x2000.0416万,但代码看起来无效。  ProcessorInit程序集功能是否将代码从闪存复制到SRAM?

    或者,如果您在到达_c_int00()时刷新反汇编视图,显示的指令是否会改变?

    [我认为CCS拆分视图可能会缓存一些旧数据,在代码被运行的程序复制到SRAM后,任何数据都可能会混淆]  

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

    [报价用户="Chester Gillon"]

    赵伊恩
    我一直按F5键并将程序转到“0.004万c: E7FEE7FE UDF #0xee7e”

    查看 TivaWare_C_Serie-SRAM.SRAM\boot_loader\BL_startup_CCS.s的内容,汇编程序函数ProcessorInit用于将 代码从闪存复制到2.1 ,然后跳转到3.156 中的代码。

    反汇编屏幕截图显示了SRAM中的程序计数器,地址为0x2000.0416万,但代码看起来无效。  ProcessorInit程序集功能是否将代码从闪存复制到SRAM?

    或者,如果您在到达_c_int00()时刷新反汇编视图,显示的指令是否会改变?

    [我认为CCS拆分视图可能会缓存一些旧数据,在代码被运行的程序复制到SRAM后,任何数据都可能会混淆]  

    [/引述]

    您好 ,Chester,

    非常感谢!

    问: ProcessorInit程序集功能是否将代码从闪存复制到SRAM?

    答:我不确定它是否从闪存复制到SRAM正确。 但是,如果我让程序“自由运行”,它每次都能正常运行。 (不在调试会话中)

     问:如果在到达_c_int00()时刷新反汇编视图,显示的指令是否会改变?

    答:我试过。 但它没有任何改变。

    但我得到了一个好消息!

    在我将 bl_config.h中的stack_size从48更改为1024后。

    我想在引导加载程序中添加的所有内容都很完美!!  :)

    但我仍然想知道如何调试bootloader :(

    此致,

    伊恩