搜索
bottom↓
回复: 11

STM32F103的启动配置:从系统存储器启动的方法

[复制链接]

出0入0汤圆

发表于 2011-9-15 09:44:19 | 显示全部楼层 |阅读模式
如题,谷歌百度一堆,以及查看数据手册,都知道STM32F103芯片靠BOOT0和BOOT1以及NVIC中断向量表的相关配置,可以做到3种启动模式:从内置用户FLASH启动、从SRAM内存启动、从系统存储器启动。

一般地球人都是用FLASH启动,又可以烧进去程序,又可以在线调试。或者用SRAM启动,可以调试小函数。
二者的启动方法在数据手册都有很容易的说明,谷歌百度也可以马上查到。

我想说的是,如何从系统存储器启动?如果是定义NVIC中断向量表,只能使用:
NVIC_SetVectorTable(0x20000000, 0x0);//SRAM启动(芯片内存)
NVIC_SetVectorTable(0x08000000, 0x0);//FLASH启动(芯片内置的用户闪存)

但是,没法用NVIC来写以下代码:
NVIC_SetVectorTable(0x1FFFF000, 0x0);//System启动(ISP串口下载,预置Bootloader)
因为不存在0x1FFFF000这个实参。

BOOT0和BOOT1我已经按照正确配置了,这个很简单,不必多说。

我也试过STM32_ISP下载程序,当时BOOT0=1,BOOT1=0,可以把hex程序文件下载进去,但是还是需要BOOT0和BOOT1都清零才可以运行程序,也就是说还是变成FLASH启动模式才能运行程序。

究竟怎样做才能在BOOT0=1,BOOT1=0的情况下,把程序烧进去,并且从系统存储器启动呢?

请高手赐教!

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2011-9-15 09:59:19 | 显示全部楼层
你说的这个所谓的系统存储器就是进入ISP
这个烧完之后必须返回到flash模式才能运行的,这个系统存储器的概念你理解错了,具体如下

1)用户闪存 = 芯片内置的Flash。
2)SRAM = 芯片内置的RAM区,就是内存啦。
3)系统存储器 = 芯片内部一块特定的区域,芯片出厂时在这个区域预置了一段Bootloader,就是通常说的ISP程序。这个区域的内容在芯片出厂后没有人能够修改或擦除,即它是一个ROM区。

可见这个系统存储器只是帮你通过ISP程序下载hex进去的


下载的时候自动搞boot的方法你可以看看这个
http://www.daxia.com/bibis/moredata_1789880_32217.shtml

我以前在咱们坛子里看到过,不过找不到了,就找到这个,你可以自己找找,

出0入0汤圆

发表于 2011-9-15 10:13:38 | 显示全部楼层
期待...
高手

出0入0汤圆

 楼主| 发表于 2011-9-15 10:36:12 | 显示全部楼层
这么说我已经成功了?请看我写过的话:

我也试过STM32_ISP下载程序,当时BOOT0=1,BOOT1=0,可以把hex程序文件下载进去,但是还是需要BOOT0和BOOT1都清零才可以运行程序,也就是说还是变成FLASH启动模式才能运行程序。



这样是不是就已经是从系统存储器启动了?

出0入0汤圆

发表于 2011-9-15 19:47:34 | 显示全部楼层
回复【3楼】geniusly111  
这么说我已经成功了?请看我写过的话:
我也试过stm32_isp下载程序,当时boot0=1,boot1=0,可以把hex程序文件下载进去,但是还是需要boot0和boot1都清零才可以运行程序,也就是说还是变成flash启动模式才能运行程序。

这样是不是就已经是从系统存储器启动了?
-----------------------------------------------------------------------

你能通过STM32_ISP下载程序就去就说明已经进入了系统存储器。下载完毕之后必须切换回flash模式来执行你刚才下载的程序

出0入0汤圆

 楼主| 发表于 2011-9-16 10:44:23 | 显示全部楼层
哈哈,多谢楼上。看来我成功了。和你说的一模一样。不过只是试试看,我平常都用用户闪存启动的。在线调试很方便

出0入0汤圆

发表于 2011-9-16 11:21:13 | 显示全部楼层
回复【1楼】54anson  小a
-----------------------------------------------------------------------

这几天在搞maple那个板子的dfu

那个挺有意思,usb下载完程序直接通过串口产生一个复位信号,复位之后从bootloader跳到flash的指定位置,就是放user code的地方

arduino系列的bootloader级别的东西还是很方便很有学习意义的~

编辑原因:ibus总把词组都打成错别字 - -!

出0入0汤圆

 楼主| 发表于 2011-9-22 17:54:58 | 显示全部楼层
ibus。。。不懂,我只知道iphone

出0入0汤圆

发表于 2013-1-28 14:53:33 | 显示全部楼层
牛。        

出0入0汤圆

发表于 2013-1-28 19:58:07 | 显示全部楼层
我一直对STM32的启动方式有些混淆,不知道哪位能跟我具体讲述一下

出0入0汤圆

发表于 2014-3-12 09:20:53 | 显示全部楼层
期待高手能在不重设置BOOT0=0,BOOT1=0的情况下 启动STM32
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-20 03:23

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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