打着雨伞请教(之2),关于万利板的程序下载问题

dudu404   2009-1-20 00:17 楼主
先说一下匠人的经历。

第一次,下载LCDDemo.eww到板上,在线运行正常,脱离ST-link后单独用USB供电,也正常。这应该视为程序被正常下载到芯片了吧。这没问题,从略。

第二次,换了一个ADC 的演示程序,编译、debug,照样出现下载对话框,完成后点击go,运行,也正常,LCD 屏幕上现实ADC结果。到这为止都还算正常。接着,匠人点击Stop Debugging按钮,停止调试。并退出IAR,并切换到USB(CN5接口)供电,同时也把CN2短路帽切换到USB。这时,发现LCD显示的居然不是ADC结果,而是第一次灌入的那个程序的内容“stm32 lcd demo”。

反复进行第二次的动作,结果都是如此,即不管仿真时选择了哪个演示程序,调试时运行正确,一旦脱离仿真状态,改用USB供电,运行的就是“stm32 lcd demo”。

why?

请“知之为知之”的朋友回答,请“不知为不知”的朋友不要对匠人喷哈喇子。哈哈,否则匠人的雨伞又要沾满口水啦,欧耶!

回复评论 (23)

恐怕只在ram里跑了下,并没下载到rom里,,,

                                  
点赞  2009-1-20 00:35

可能是楼上的.

                                  
点赞  2009-1-20 08:58

匠人现在也落魄这这种程度

                                  
点赞  2009-1-20 09:11

这应该是匠从逗大家一乐吧。

这种现象也就只有楼上的那们解释了,第二次及以后都是把程序下载到RAM中了,而第一次下载到ROM中了。
所以才出现两种结果。
点赞  2009-1-20 09:32

看看链接文件里面设置的RO地址呀...

打开工程目录下的lnkarm.xcl文件,
找到以下部分并修改:
-DROMSTART=0x8000000
-DROMEND=0x801FFFF

相关链接:http://blog.eeworld.com.cn/user1/2198/archives/2008/48929.html
点赞  2009-1-20 09:37

同意2楼、5楼的判断

                                  
点赞  2009-1-20 09:40

估计两个项目用的连接文件不一样

                                 可以按照圈圈的方法看看。
点赞  2009-1-20 09:58

恩,要先看看你的工程选项中的链接页中选的链接文件是哪

                                  
点赞  2009-1-20 10:23

问题已经解决了,谢谢大家

                                  
点赞  2009-1-20 11:35

匠人有始有终,给大家一个交代

STM32匠人学习笔记

一、关于万利板的程序下载问题

1、问题


打着雨伞请教,关于万利板的程序下载问题
先说一下匠人的经历。
第一次,下载LCDDemo.eww到板上,在线运行正常,脱离ST-link后单独用USB供电,也正常。这应该视为程序被正常下载到芯片了吧。这没问题,从略。
第二次,换了一个ADC 的演示程序,编译、debug,照样出现下载对话框,完成后点击go,运行,也正常,LCD 屏幕上现实ADC结果。到这为止都还算正常。接着,匠人点击Stop Debugging按钮,停止调试。并退出IAR,并切换到USB(CN5接口)供电,同时也把CN2短路帽切换到USB。这时,发现LCD显示的居然不是ADC结果,而是第一次灌入的那个程序的内容“stm32 lcd demo”。
反复进行第二次的动作,结果都是如此,即不管仿真时选择了哪个演示程序,调试时运行正确,一旦脱离仿真状态,改用USB供电,运行的就是“stm32 lcd demo”。
why?

2、原因


       两个DEMO程序的区别在于,第一个DEMO设置为在FLASH_ROM中运行,而第二个DEMO设置为在RAM里运行,因此,重新上电后就丢失了。

3、解决


必须把设置更改为在FLASH_ROM中运行,步骤如下:
1、 workspace窗口下面,选择BOOT_FLASH,如下图:


图 1.1:设置BOOT_FLASH
2、 鼠标右击项目,打开Options窗口,选择LinkerConfig标签,把原来设置的“lnkarm_ram.scl”文件修改为“ linkarm_flash.xcl”。如下图:


图 1.2:设置lnkarm_RAM.xcl文件
备注:
如果在Flash中调试程序,设置lnkarm_flash.xcl;
如果在RAM中调试程序,设置lnkarm_RAM.xcl;
在进行设置时,要确认电路板上的Boot0 和Boot1引脚的跳线连接是否正确。
STM32固件库中有“lnkarm_ram.scl”和 “ linkarm_flash.xcl”的工程模板。
3、 重新下载程序,并改用USB口供电后验证,问题解决。

4、启发


对于用过RAM的人来说,这可能不是问题。但是对于象匠人这种从单片机转学RAM的人来说,应该建立这个概念,就是,程序不仅仅可以在FALSH中运行,而且可以在RAM中运行。所以,如果仅仅把程序下载到RAM中,那一掉电,自然就丢死了程序。
不怕做不到,就怕想不到啊!
点赞  2009-1-20 11:44

天分决定速度,勤奋决定高度

                                  
点赞  2009-1-20 13:13

程序不仅仅可以在FALSH中运行,而且可以在RAM中运行

                                 程序不仅仅可以在FALSH中运行,而且可以在RAM中运行,这可不是ARM单片机或者32位单片机的专利啊。很多8位单片机我想也是支持在RAM中运行的,我记得包括51。当然,象STM32这样有BOOT选择的单片机,(我的印象里)相对不是太多。
点赞  2009-1-20 14:01

二姨家的掌柜就是不一样

"贱"人就是"贱"人啊。应该到国家信访办去工作,问题清楚,解决也清楚。这样的同志要表扬。偶代表STM32的粉丝垮奖一下偶们二姨家的家长。
点赞  2009-1-20 16:10

呵呵,祝匠人早日脱伞。

                                  
点赞  2009-1-20 16:27

iar还是比较好用的~~~

                                  
点赞  2009-1-20 16:31

乡下放假了???



问hot大叔
点赞  2009-1-20 16:32

没有~~~年假农忙~~~

                                  
点赞  2009-1-20 16:33

原来如此



最近看你经常上论坛
准备回归了?
点赞  2009-1-20 16:34

再提醒一下

                                 除了link文件需要根据RAM或者FLASH的运行方式进行修改以外,NVIC_VectTab寄存器也是需要修改的,他决定了中断向量是指向RAM还是FLASH。
点赞  2009-1-20 17:46
12下一页
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复