下载烧录后, 如何判定程序是在运行的呢?

50 篇文章 1 订阅
34 篇文章 0 订阅

废话少絮. 记录.

------------------------------------------------------------------------------------------------------------------------------------------------

1. 先用仿真器(JTAG/J-link)下载到板子内, 下载后, 在程序的第一行设置断点, 让它停住, 能停住, 说明仿真器没问题, 程序能执行起来了. 

2. 在检查下 PC 寄存器的值是否正确. 以确定没有跑飞掉, 在指定的范围内.

3. 检查下 CPU 内部 RAM (或者外部的 SDRAM)的内容是否和下载的执行文件(bin, hex, elf等格式)相同.

4. 一般在开始处设置的是程序状态寄存器(如 ARM 的 CPSR), 执行后观察相应的寄存器值有没有按照预期改变. 如, u-boot 源码中的 start.S 文件中开始的语句:

/*
 * the actual start code
 */

start_code:
	/*
	 * set the cpu to SVC32 mode, 设置状态寄存器, 选定工作模式(汇编指令参考相关文档)
	 */
	mrs	r0, cpsr
	bic	r0, r0, #0x1f  /* 指定位置 1  */
	orr	r0, r0, #0xd3  /* 清 0 指定位 */
	msr	cpsr, r0


5. 继续单步执行, 观察 PC 指针是否跟着改变(除了函数调用, 中断或 goto 语句外, PC 值一般都是累加的), 再观察程序运行的结果是否正确.

6. 其实还有个简单的方法, 就是用示波器来观察相应的引脚, 当然你得有引脚引出来. 通过观察波形也可以判断程序是否正常. 不过这方法是有局限的.


如果上述步骤中没有任何问题, 基本可以判定程序是运行的, 仿真器无问题,CPU工作是正常的, 电源模块暂时是正常的工作的. 要想判定整体的硬件和程序是否正常工作还需要做进一步的测试. 

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

参考书籍: <现代嵌入式系统开发专案实务>, 作者: 邱毅凌


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值