打印
[开发工具]

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

[复制链接]
4249|23
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
程序匠人|  楼主 | 2009-1-20 00:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
CD, LCD, ST, USB, ADC
先说一下匠人的经历。

第一次,下载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?

请“知之为知之”的朋友回答,请“不知为不知”的朋友不要对匠人喷哈喇子。哈哈,否则匠人的雨伞又要沾满口水啦,欧耶!
沙发
zyok| | 2009-1-20 00:35 | 只看该作者

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

使用特权

评论回复
板凳
LPcfANS| | 2009-1-20 08:58 | 只看该作者

可能是楼上的.

使用特权

评论回复
地板
winloop| | 2009-1-20 09:11 | 只看该作者

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

使用特权

评论回复
5
芯行天下| | 2009-1-20 09:32 | 只看该作者

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

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

使用特权

评论回复
6
computer00| | 2009-1-20 09:37 | 只看该作者

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

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

相关链接:http://blog.21ic.com/user1/2198/archives/2008/48929.html

使用特权

评论回复
7
香水城| | 2009-1-20 09:40 | 只看该作者

同意2楼、5楼的判断

使用特权

评论回复
8
lut1lut| | 2009-1-20 09:58 | 只看该作者

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

可以按照圈圈的方法看看。

使用特权

评论回复
9
computer00| | 2009-1-20 10:23 | 只看该作者

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

使用特权

评论回复
10
程序匠人|  楼主 | 2009-1-20 11:35 | 只看该作者

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

使用特权

评论回复
11
程序匠人|  楼主 | 2009-1-20 11:44 | 只看该作者

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

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中,那一掉电,自然就丢死了程序。
不怕做不到,就怕想不到啊!

使用特权

评论回复
12
LPcfANS| | 2009-1-20 13:13 | 只看该作者

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

使用特权

评论回复
13
ijk| | 2009-1-20 14:01 | 只看该作者

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

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

使用特权

评论回复
14
静默| | 2009-1-20 16:10 | 只看该作者

二姨家的掌柜就是不一样

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

使用特权

评论回复
15
mcuisp| | 2009-1-20 16:27 | 只看该作者

呵呵,祝匠人早日脱伞。

使用特权

评论回复
16
hotpower| | 2009-1-20 16:31 | 只看该作者

iar还是比较好用的~~~

使用特权

评论回复
17
phoenixmy| | 2009-1-20 16:32 | 只看该作者

乡下放假了???



问hot大叔

使用特权

评论回复
18
hotpower| | 2009-1-20 16:33 | 只看该作者

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

使用特权

评论回复
19
phoenixmy| | 2009-1-20 16:34 | 只看该作者

原来如此



最近看你经常上论坛
准备回归了?

使用特权

评论回复
20
vigia| | 2009-1-20 17:46 | 只看该作者

再提醒一下

除了link文件需要根据RAM或者FLASH的运行方式进行修改以外,NVIC_VectTab寄存器也是需要修改的,他决定了中断向量是指向RAM还是FLASH。

使用特权

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

本版积分规则

734

主题

11156

帖子

675

粉丝