打印
[STM32F1]

STM3210X 启动问题求证!!!!!

[复制链接]
1091|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xjsfsq|  楼主 | 2014-11-29 17:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STM32 的开发之前做过一些,但对头文件的理解以及存储器的映射理解不是很深,现在准备开始研究ARM的时候,发现启动引导问题暴露出来了,现在我把我对STM32 启动过程描述一下,请高手指正:
STM32 有三种启动模式,根据上电后两个BOOT脚的电平可以确定是哪种启动:
1,User flash memory  2,system memory 3, embedded SRAM.
现假设User flash 的起始地址是0x08000000
system memory address 是0x1FFFF000
embedded SRAM address 是0x20000000
1。现在假设User flash 里已经烧写有应用程序,并且我选择user flash memory启动模式,则上电后PC指针从绝对物理地址0x00000000启动,然后经跟着就是执行厂家固化的boot程序(即:检测boot引脚的高低电平,根据检测结果实现指针跳转)。由于我之前假设是User flash模式,所以PC指针会跳转到0x0800000处,然后紧跟着就是堆栈设置,中断向量入口设置,最后执行main函数。
2。如果是system flash模式,则上电检测后会跳转到0x1FFFF000,在这个模式里厂家还固化了一些函数来实现IAP(初始化串口,还有一些串口协议等等)。估计在这个模式下,中断是不好使的。这一点求证??
3。如果是sram模式估计过程跟模式1的过程相似。

所以在STM32 运行中,不会出现象ARM的那种情况,即需要引导将FLASH中程序copy到SRAM中执行的这个过程。这一点结论,我心里没有底
沙发
xjsfsq|  楼主 | 2014-12-1 08:53 | 只看该作者
自己的沙发自己坐了。

使用特权

评论回复
板凳
小班儿| | 2014-12-1 09:27 | 只看该作者
不是很懂,给你顶 一下

使用特权

评论回复
地板
小班儿| | 2014-12-1 09:27 | 只看该作者
希望版主来解决下

使用特权

评论回复
5
xjsfsq|  楼主 | 2014-12-1 12:30 | 只看该作者
请知道的大侠求证一下

使用特权

评论回复
6
hiliuzheng| | 2014-12-2 14:54 | 只看该作者
楼主理解错误了,0x08000000永远是flash,如果从flash启动,硬件会把0x00000000也映射到flash,那么flash可以从两个位置访问到。其他两种情况也是类似的

使用特权

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

本版积分规则

10

主题

24

帖子

0

粉丝