找回密码
 注册
关于网站域名变更的通知
查看: 476|回复: 1
打印 上一主题 下一主题

下载烧录后, 如何判定程序是否运行

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-2-28 09:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
下载烧录后, 如何判定程序是否运行
  p5 T4 w$ j* X% M7 Y5 w9 @8 a8 n& u! ~/ J( @: C. X
2 |7 ]9 s: x7 Y* R) X) }! O

废话少说. 记录.

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

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

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

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

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

[cpp] view plaincopy/*

* 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工作是正常的, 电源模块暂时是正常的工作的. 要想判定整体的硬件和程序是否正常工作还需要做进一步的测试.


. B+ ^: m: v0 J& y- S; b& w

该用户从未签到

2#
发表于 2019-2-28 17:55 | 只看该作者
很不错,谢谢楼主分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-4 15:41 , Processed in 0.140625 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表