OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6167|回复: 3

stm32 nor flash 启动

[复制链接]

38

主题

131

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
303
金钱
303
注册时间
2013-7-15
在线时间
0 小时
发表于 2014-6-30 21:30:54 | 显示全部楼层 |阅读模式
5金钱
通过设置MDK算法 和 启动地址,终于将程序成功下载到 外部nor flash中了,但是板子上电,运行,还是从内部flash 启动的那个程序,boot 依然是内部flash启动方式,因为没有从外部启动的方式了,在mdk 的调试脚本文件中编写了nor flash 配置信息 和PC 指针:
[mw_shl_code=c,true]FUNC void Setup(void) { _WDWORD(0x40021014, 0x00000114); // FSMC clock enable _WDWORD(0x40021018, 0x000001FD); // GPIOD~G clock enable _WDWORD(0x40011400, 0x44BB44BB); // GPIOD config _WDWORD(0x40011404, 0xBBBBBBBB); // GPIOD config _WDWORD(0x40011800, 0xBBBBB444); // GPIOE config _WDWORD(0x40011804, 0xBBBBBBBB); // GPIOE config _WDWORD(0x40011C00, 0x44BBBBBB); // GPIOF config _WDWORD(0x40011C04, 0xBBBB4444); // GPIOF config _WDWORD(0x40012000, 0x44BBBBBB); // GPIOG config _WDWORD(0x40012004, 0x444444B4); // GPIOG config _WDWORD(0xA0000008, 0x00001011); // FSMC config _WDWORD(0xA000000C, 0x10000100); // FSMC config PC = 0x64000000; } Setup();[/mw_shl_code]



但是程序还是不会向外部 nor flash中启动,请问怎么才能启动呢?
看看我的 .map文件,大概的分布:
[mw_shl_code=c,true]============================================================================== Memory Map of the image   Image Entry point : 0x64000131   Load Region LR_ROM1 (Base: 0x64000000, Size: 0x00001608, Max: 0x00100000, ABSOLUTE)     Execution Region RW_IRAM1 (Base: 0x20000000, Size: 0x00005040, Max: 0x00010000, ABSOLUTE)     Base Addr    Size         Type   Attr      Idx    E Section Name        Object     0x20000000   0x00000014   Data   RW           25    .data               system_stm32f10x.o     0x20000014   0x00000014   Data   RW          193    .data               stm32f10x_rcc.o     0x20000028   0x00000016   Data   RW          256    .data               main.o     0x2000003e   0x00000002   PAD     0x20000040   0x00005000   Zero   RW            1    STACK               startup_stm32f10x_hd.o     Execution Region ER_ROM1 (Base: 0x64000000, Size: 0x000015c8, Max: 0x00100000, ABSOLUTE)     Base Addr    Size         Type   Attr      Idx    E Section Name        Object     0x64000000   0x00000130   Data   RO            3    RESET               startup_stm32f10x_hd.o     0x64000130   0x00000000   Code   RO          345  * .ARM.Collect$$$$00000000  mc_w.l(entry.o)     0x64000130   0x00000004   Code   RO          358    .ARM.Collect$$$$00000001  mc_w.l(entry2.o)     0x64000134   0x00000004   Code   RO          361    .ARM.Collect$$$$00000004  mc_w.l(entry5.o)     0x64000138   0x00000000   Code   RO          363    .ARM.Collect$$$$00000008  mc_w.l(entry7b.o)     0x64000138   0x00000008   Code   RO          364    .ARM.Collect$$$$00000009  mc_w.l(entry8.o)     0x64000140   0x00000004   Code   RO          359    .ARM.Collect$$$$00002712  mc_w.l(entry2.o)     0x64000144   0x00000020   Code   RO           10    .emb_text           core_cm3.o     0x64000164   0x00000024   Code   RO            4    .text               startup_stm32f10x_hd.o     0x64000188   0x00000244   Code   RO           24    .text               system_stm32f10x.o     0x640003cc   0x00000618   Code   RO          180    .text               stm32f10x_fsmc.o     0x640009e4   0x0000039c   Code   RO          192    .text               stm32f10x_rcc.o     0x64000d80   0x00000358   Code   RO          206    .text               stm32f10x_gpio.o     0x640010d8   0x0000015c   Code   RO          254    .text               main.o     0x64001234   0x0000001a   Code   RO          283    .text               stm32f10x_it.o     0x6400124e   0x00000002   PAD     0x64001250   0x00000310   Code   RO          333    .text               fsmc_nor.o     0x64001560   0x00000024   Code   RO          368    .text               mc_w.l(init.o)     0x64001584   0x0000000e   Code   RO          372    i.__scatterload_copy  mc_w.l(handlers.o)     0x64001592   0x00000002   Code   RO          373    i.__scatterload_null  mc_w.l(handlers.o)     0x64001594   0x0000000e   Code   RO          374    i.__scatterload_zeroinit  mc_w.l(handlers.o)     0x640015a2   0x00000003   Data   RO          255    .conststring        main.o     0x640015a5   0x00000003   PAD     0x640015a8   0x00000020   Data   RO          370    Region$$Table       anon$$obj.o ============================================================================== [/mw_shl_code]

[mw_shl_code=c,true] [/mw_shl_code] [mw_shl_code=c,true] [/mw_shl_code] [mw_shl_code=c,true] [/mw_shl_code]

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-6-30 21:38:10 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2014-7-1 13:02:11 | 显示全部楼层
貌像是先从内部的flash启动,完成后在跳转到外部的flash去执行,应该是这样的,STM32好像都不支持直接从外部启动的功能,看BOOTx的设置说明
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

38

主题

131

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
303
金钱
303
注册时间
2013-7-15
在线时间
0 小时
 楼主| 发表于 2014-7-1 13:30:40 | 显示全部楼层
回复【3楼】Badu_Space:
---------------------------------
恩,应该是这样的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-6 21:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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