Arm 如何在flash中调试引导加载程序?

Arm 如何在flash中调试引导加载程序?,arm,bootloader,Arm,Bootloader,s3c44b0x不支持闪存断点(与其他处理器不同,如lpc1758具有片上闪存),那么当引导加载程序仍在闪存中运行时,如何调试引导加载程序?逻辑分析仪、printf、ICE和EPROM/闪存模拟器将是老派的方式 (ARM7TDMI)声称具有片上破冰调试支持,因此获得一个在线仿真器可能是您想要做的 添加: 如果您有足够的RAM,在从闪存引导期间,您可以将日志消息打印到RAM中的内存缓冲区,然后在UART初始化后使用printf将该缓冲区输出到串行 第二次添加: 要隔离引导过程的哪一部分,您可以用空

s3c44b0x不支持闪存断点(与其他处理器不同,如lpc1758具有片上闪存),那么当引导加载程序仍在闪存中运行时,如何调试引导加载程序?

逻辑分析仪、printf、ICE和EPROM/闪存模拟器将是老派的方式

(ARM7TDMI)声称具有片上破冰调试支持,因此获得一个在线仿真器可能是您想要做的

添加:

如果您有足够的RAM,在从闪存引导期间,您可以将日志消息打印到RAM中的内存缓冲区,然后在UART初始化后使用printf将该缓冲区输出到串行

第二次添加:

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

如果您有输出管脚,请添加一些指示灯以二进制方式对部分进行计数,以便查看当前正在运行的代码部分

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

参考资料:

  • 那么:

我想从引导加载程序的一开始就进行调试,因为UART未初始化,printf无法工作。我有一个jlink仿真器,但是它不支持s3c44b0x的flash调试。如果程序在UART初始化之前崩溃怎么办。我想找到确切的位置,然后找出原因。假设使用外部RAM,您可以用NVRAM替换RAM,并在崩溃后读取内存转储。否则,您可以使用与您的芯片一起工作的ICE,或者将芯片交换到一个支持的j-Link。我知道这可能会给你带来很多麻烦,但你的环境似乎在缩小你的选择范围。并使用逻辑分析仪。