在STM32F10x下利用IAP升级程序步骤

aweyfan   2008-8-18 12:09 楼主

这里只粗要说明简单的步骤。
1.从官方网站下载例程
http://www.st.com/stonline/products/support/micro/files/an2557.zip下载例程后需要根据自己的电路板修改头文件platform_config.h。主要是根据电路板中实际使用的芯片定义页大小、Flash尺寸大小等。如果这里定义的不对,传输的应用程序将不能进行正确写入,可能会产生校验错误。如果是使用B型的STM32xx开发板,则在头文件开始添加以下一句定义即可。
#define USE_STM3210B_EVAL    1
2.编写编译应用程序。并在开发环境里指定应用程序起始地址。我用的是Keil MDK,设置界面如下。
http://images.blog.tom.com/newimg/469/598/2008/0818/1219030841.jpg
3.在common.h里修改ApplicationAddress变量使它的值与实际下载的应用程序起始地址一致。这里定义为#define ApplicationAddress    0x8004000
4.因为MDK不能直接生成二进制文件,所以还需要用其它工具进行转换一下。这里是利用MDK自带的fromelf.exe。在MDK环境下设置步骤为①打开Options for Target ‘xxxx’对话框,选择User标签页;②构选Run User Programs After Build/Rebuild框中的Run #1多选框,在后边的文本框中输入C:KeilARMBIN31fromelf.exe --bin -o ..outputgpio.bin ..outputgpio.axf;界面如下:
http://images.blog.tom.com/newimg/469/598/2008/0818/1219030792.JPG
5.根据STM32 IAP官方应用文档,利用超级终端下载编译好的二制文件。
http://www.st.com/stonline/products/literature/an/13588.pdf

回复评论 (6)

改一下你的帖子

                                 抱歉,改了一下你的帖子,主要是增加了图片显示,保留了你的原图片链接显示。
点赞  2008-8-18 12:19

找到更简洁的指令,文件名通用

$KARMBIN31fromelf --bin -o #L.bin #L.axf

点赞  2008-8-21 21:56

顶!再帮LZ贴下图。

这里只粗要说明简单的步骤。
1.从官方网站下载例程
http://www.st.com/stonline/products/support/micro/files/an2557.zip下载例程后需要根据自己的电路板修改头文件platform_config.h。主要是根据电路板中实际使用的芯片定义页大小、Flash尺寸大小等。如果这里定义的不对,传输的应用程序将不能进行正确写入,可能会产生校验错误。如果是使用B型的STM32xx开发板,则在头文件开始添加以下一句定义即可。
#define USE_STM3210B_EVAL    1
2.编写编译应用程序。并在开发环境里指定应用程序起始地址。我用的是Keil MDK,设置界面如下。

3.在common.h里修改ApplicationAddress变量使它的值与实际下载的应用程序起始地址一致。这里定义为#define ApplicationAddress    0x8004000
4.因为MDK不能直接生成二进制文件,所以还需要用其它工具进行转换一下。这里是利用MDK自带的fromelf.exe。在MDK环境下设置步骤为①打开Options for Target ‘xxxx’对话框,选择User标签页;②构选Run User Programs After Build/Rebuild框中的Run #1多选框,在后边的文本框中输入C:KeilARMBIN31fromelf.exe --bin -o ..outputgpio.bin ..outputgpio.axf;界面如下:

5.根据STM32 IAP官方应用文档,利用超级终端下载编译好的二制文件。
http://www.st.com/stonline/products/literature/an/13588.pdf
点赞  2008-8-21 22:18
假如要实现远程升级的话,要在两段代码(A、B)之间切换,但是每次升级的时候,编译更新程序就的修改工程配置里面的启动地址。
但是编译的时候,无法确定我要将代码写在那一段(A、还是B?)。现在我遇到了这个问题。难道每次都要准备2个程序?一个是A段,另一个是B段。
点赞  2011-3-9 13:35
                                 不错,挺有用的
点赞  2011-3-9 17:08
看下找找思路
点赞  2011-10-20 10:50
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复