【问题标题】:how to debug bootloader in flash?如何在闪存中调试引导加载程序?
【发布时间】:2010-02-26 14:21:19
【问题描述】:

s3c44b0x不支持flash断点(不像lpc1758等其他处理器有片上flash),那么当bootloader还在flash中运行时如何调试呢?

【问题讨论】:

    标签: arm bootloader


    【解决方案1】:

    逻辑分析仪、printf、ICE 和 EPROM/闪存仿真器将是老式的方法。

    Samsung S3C44b0x (ARM7TDMI) 声称具有片上 ICE 断路器调试支持,因此您可能想要获得一个在线仿真器。

    添加:

    如果您有足够的 RAM,则在从 Flash 启动期间,您可以将日志消息打印到 RAM 中的内存缓冲区,然后在 UART 初始化后使用 printf 将这个缓冲区输出到串行。

    第二次添加:

    要隔离引导过程的哪个部分,您可以用空存根替换模块或步骤,其唯一目的是隔离崩溃。方法是缩小失败的可能性。制作仅初始化第一个基本步骤的固件映像,例如系统内存,如果可行,添加您的任务或进程管家模块/步骤,稍后包括初始化 UART 等。

    如果您有输出引脚,请添加一些 LED 以对二进制部分进行计数,以便您查看当前正在运行的代码部分。

    查看本书Debugging Rules 并打印您自己的免费Rules of Debugging 海报副本。这是一本简短的书,虽然没有什么革命性的东西,但它巩固了调试过程,并帮助大多数人在调试过程中更有条理和更有条理。

    参考资料:

    【讨论】:

    • 我想从引导加载程序的最开始调试,因为 UART 没有初始化,printf 不会工作。我有一个 jlink 模拟器,但是它不支持 s3c44b0x 的 flash 调试。
    • 如果程序在 UART 初始化之前崩溃了怎么办。我想找到确切的点,然后找出原因。
    • 假设外部 RAM,您可以用 NVRAM 替换 RAM,并在崩溃后读取内存转储。否则,请获得与您的芯片配合使用的 ICE,或将芯片换成 j-Link 支持的芯片。我知道这可能会很麻烦,但是您的环境似乎正在缩小您的选择范围。并使用逻辑分析仪。
    猜你喜欢
    • 2021-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多