打印

程序下载后可以运行,但下电再上电不行

[复制链接]
6411|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
用调试器下载到目标板可以运行程序,但是拔下调试器下电再上电,目标板和没有程序一样,有没有哪位遇到过?
一天一个文件夹,今天把昨天的程序改了之后就成这样了。删除几行程序或移动几行程序都会造成这种结果,不改就没问题。
程序编译后接近26K.

MCU:C8051F340
KEIL UV3编译

相关帖子

沙发
ayb_ice| | 2012-7-20 14:26 | 只看该作者
本帖最后由 ayb_ice 于 2012-7-20 14:32 编辑

什么叫不行,我看是运行的,只不过没有运行到主循环又重新开始了

哪怕程序全是FF,也是会跑的,只是不是你想要的结果而已

用这个软件下载个官方的例子的HEX文件试试

未命名.JPG (36.82 KB )

未命名.JPG

使用特权

评论回复
板凳
wukunshan| | 2012-7-20 14:39 | 只看该作者
可能是目标板的复位电路有问题。连接调试器时是调试器的复位引脚在起作用,拔掉后就不起作用了。检查目标板的复位电路看看。

使用特权

评论回复
地板
ningling_21|  楼主 | 2012-7-20 17:09 | 只看该作者
本帖最后由 ningling_21 于 2012-7-20 17:10 编辑

2# ayb_ice

不行是指程序没有正常运行,外观好像没下载程序。

通过用调试器读取程序空间发现,代码依然存在。

通过调试发现,调试过程中有时程序会乱跑,从一个子程序直接跳到另一个子程序,从某个子程序返回后,直接跳转到0X8FFF之后,其实那之后是全FF的。这样的结果就是一直处于刚上电的状态...

如果直接烧录HEX文件,下电再上电只能正常运行一次,再下电就死机了...

使用特权

评论回复
5
ningling_21|  楼主 | 2012-7-20 17:12 | 只看该作者
可能是目标板的复位电路有问题。连接调试器时是调试器的复位引脚在起作用,拔掉后就不起作用了。检查目标板的复位电路看看。
wukunshan 发表于 2012-7-20 14:39


手动复位也无效。

复位电路是看门狗实现的,如果规定时间内不喂狗就会被复位...

使用特权

评论回复
6
ayb_ice| | 2012-7-20 17:24 | 只看该作者
1:先把狗关掉
2:换芯片试试,

应该还是程序问题,先整个最简单的程序测试一下

用调试器调试时,复位再运行什么情况,项目是否用到了内部FLASH当EE

使用特权

评论回复
7
ningling_21|  楼主 | 2012-7-20 21:13 | 只看该作者
1:先把狗关掉
2:换芯片试试,

应该还是程序问题,先整个最简单的程序测试一下

用调试器调试时,复位再运行什么情况,项目是否用到了内部FLASH当EE ...
ayb_ice 发表于 2012-7-20 17:24

把内狗关掉,结果是一样的;
换了块目标板,也是一样的结果;

最终发现的规律是:和程序大小有关系:
编译大小为:25959时,下载调试也不能运行;
编译大小为:25205时,调试没问题,脱机也没问题;

使用特权

评论回复
8
ningling_21|  楼主 | 2012-7-20 21:15 | 只看该作者
6# ayb_ice
有用到FLASH,保存一些关键数据...

使用特权

评论回复
9
shell.albert| | 2012-7-20 21:50 | 只看该作者
噢, 这个问题比较奇怪!
跟编译后生成的程序大小有关系。

使用特权

评论回复
10
yiucing| | 2012-7-21 09:08 | 只看该作者
clean target
rebuild all
看看

使用特权

评论回复
11
linqing171| | 2012-7-21 12:14 | 只看该作者
根据你的问题,感觉这个脱机失败比较奇怪。
查看一下Map文件, 程序和数据是否公用了一块Flash。

使用特权

评论回复
12
linqing171| | 2012-7-21 12:17 | 只看该作者
340我也用过,63k都写满了也可以运行。

你把你保存数据的Flash区块尽量往后面一点。
或者在定义一个10K大小的Flash变量在25K的地址,让这部分跳过去看看。

使用特权

评论回复
13
ningling_21|  楼主 | 2012-7-21 13:39 | 只看该作者
clean target
rebuild all
看看
yiucing 发表于 2012-7-21 09:08


是一样的结果...

使用特权

评论回复
14
sycamin| | 2012-7-21 14:13 | 只看该作者
你写了内部FLASH,
有可能在写到时候写到了别到地方,写内部FLASH的时候要关中断,

使用特权

评论回复
15
fjzzclc| | 2012-7-21 16:46 | 只看该作者
不懂,学习了

使用特权

评论回复
16
ningling_21|  楼主 | 2012-7-21 21:21 | 只看该作者
你写了内部FLASH,
有可能在写到时候写到了别到地方,写内部FLASH的时候要关中断,
sycamin 发表于 2012-7-21 14:13

这个不会,中断已经关了。
除非遭到强烈的干扰程序乱飞了...

使用特权

评论回复
17
ningling_21|  楼主 | 2012-7-24 07:26 | 只看该作者
原因已找到,程序的问题,超出25K的部分被擦除导致...
TKS楼上几位!

使用特权

评论回复
18
王强波| | 2016-7-18 19:58 | 只看该作者
我自己画了一个stm8207C6T6单片机最小系统      写了一个程序 然后用st-link下载   掉电后  程序就不跑了   得重新下载  而同样的程序在开发板中掉电后  就可以正常运行  求教大神原因

使用特权

评论回复
19
Yal7788| | 2017-5-29 14:15 | 只看该作者
我也遇到这个问题了。。。。

使用特权

评论回复
20
Yal7788| | 2017-5-29 14:16 | 只看该作者
ningling_21 发表于 2012-7-24 07:26
原因已找到,程序的问题,超出25K的部分被擦除导致...
TKS楼上几位!

lz 能说的详细点吗?  虽然隔了这么9

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5013

主题

17735

帖子

51

粉丝