OpenEdv-开源电子网

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

求大神指点。。IAP功能中程序存储问题

[复制链接]

2

主题

7

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2016-4-26
在线时间
3 小时
发表于 2017-9-23 15:07:23 | 显示全部楼层 |阅读模式
10金钱
文档中提到,STM32中的APP
程序可以在FLASH中运行,也可在SRAM中运行。
可是,SRAM不是有掉电丢失数据的特性吗,我的理解是只能用作数据存储器,为什么在这里可以用作程序存储器呢,而且存储了bootloader程序。


最佳答案

查看完整内容[请看2#楼]

因为没有掉电啊。没掉电就可以在SRAM里面运行。一旦断电,或者复位,就不行了。 必须重新从其他地方加载到SRAM。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-9-23 15:07:24 | 显示全部楼层
因为没有掉电啊。没掉电就可以在SRAM里面运行。一旦断电,或者复位,就不行了。
必须重新从其他地方加载到SRAM。
回复

使用道具 举报

2

主题

685

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3448
金钱
3448
注册时间
2017-7-4
在线时间
869 小时
发表于 2017-9-24 09:51:10 | 显示全部楼层
存储程序都在flash中,划分了2块,一块存储BootLoader,一块存储app;只是有2种运行方式:一是直接在flash上运行(单片机一般是nor flash,支持在片上执行程序);二是将程序从flash上拷贝到sram上运行;电脑就是第二种方式,从硬盘拷贝程序到RAM(内存)中运行,因为硬盘没法直接运行程序呀。
回复

使用道具 举报

2

主题

7

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2016-4-26
在线时间
3 小时
 楼主| 发表于 2017-9-24 16:11:03 | 显示全部楼层
Acuity 发表于 2017-9-24 09:51
存储程序都在flash中,划分了2块,一块存储BootLoader,一块存储app;只是有2种运行方式:一是直接在flash ...

我理解的也是这个意思,但是开发板的开发文档里的意思好像是程序直接就写在了sRAM里,bootloader写在SRAM里,请问有这种可能吗?
回复

使用道具 举报

54

主题

372

帖子

0

精华

高级会员

Rank: 4

积分
979
金钱
979
注册时间
2016-6-15
在线时间
474 小时
发表于 2017-9-24 16:24:27 | 显示全部楼层
本帖最后由 shuaigew88 于 2017-9-24 16:25 编辑

SRAM中运行只限在调试模式下,最终还是要在flash中运行。当然如果你的RAM足够大可以将程序从flash搬运到RAM中运行,前提是程序必须烧录到flash中。
回复

使用道具 举报

17

主题

181

帖子

0

精华

高级会员

Rank: 4

积分
504
金钱
504
注册时间
2017-7-24
在线时间
117 小时
发表于 2017-9-24 16:49:01 | 显示全部楼层
对于你提问的那块,我他们见解不太一样。不过你可以测试一下,烧写到sram中,然后选择sram执行,然后复位,再开启,再选择sram执行,如果能执行,那证明烧写进flash了。如果不能,那应该可以证明app存储在sram中的。如果试过了希望可以给我一个答案好吧,我很期待。对于原子哥iap的例程中sram那块我是这么理解的:首先就是烧写BootLoader肯定不用说,然后运行BootLoader,通过串口软件发送app,板子接收app,这时我认为这个文件等同于存储在ram中而不是flash中。然后你可以选择sram执行,等于直接在ram中执行。前提是你的ram足够大到装下程序和承载运行时的存储,如果不能的话肯定是实现不了的。
回复

使用道具 举报

17

主题

181

帖子

0

精华

高级会员

Rank: 4

积分
504
金钱
504
注册时间
2017-7-24
在线时间
117 小时
发表于 2017-9-24 16:51:56 | 显示全部楼层
哦对,补充一下,BootLoader写在sram里然后运行是不可能的。sram掉电丢失数据的好吧。就算能弄进去也是没意义的,考进去BootLoader,然后断电,再复位的结果是程序由于没有指向的向量表无法跳转,直接无法运行的好吧
回复

使用道具 举报

2

主题

685

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3448
金钱
3448
注册时间
2017-7-4
在线时间
869 小时
发表于 2017-9-24 17:18:50 | 显示全部楼层
苦笑 发表于 2017-9-24 16:11
我理解的也是这个意思,但是开发板的开发文档里的意思好像是程序直接就写在了sRAM里,bootloader写在SRAM ...

不可能!
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-18 15:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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