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

2019-08-13 23:16发布

文档中提到,STM32中的APP
程序可以在FLASH中运行,也可在SRAM中运行。
可是,SRAM不是有掉电丢失数据的特性吗,我的理解是只能用作数据存储器,为什么在这里可以用作程序存储器呢,而且存储了bootloader程序。


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
正点原子
1楼-- · 2019-08-13 23:35
因为没有掉电啊。没掉电就可以在SRAM里面运行。一旦断电,或者复位,就不行了。
必须重新从其他地方加载到SRAM。
Acuity
2楼-- · 2019-08-14 02:53
存储程序都在flash中,划分了2块,一块存储BootLoader,一块存储app;只是有2种运行方式:一是直接在flash上运行(单片机一般是nor flash,支持在片上执行程序);二是将程序从flash上拷贝到sram上运行;电脑就是第二种方式,从硬盘拷贝程序到RAM(内存)中运行,因为硬盘没法直接运行程序呀。
苦笑
3楼-- · 2019-08-14 05:36
Acuity 发表于 2017-9-24 09:51
存储程序都在flash中,划分了2块,一块存储BootLoader,一块存储app;只是有2种运行方式:一是直接在flash ...

我理解的也是这个意思,但是开发板的开发文档里的意思好像是程序直接就写在了sRAM里,bootloader写在SRAM里,请问有这种可能吗?
shuaigew88
4楼-- · 2019-08-14 09:39
 精彩回答 2  元偷偷看……
q247341184
5楼-- · 2019-08-14 12:14
对于你提问的那块,我他们见解不太一样。不过你可以测试一下,烧写到sram中,然后选择sram执行,然后复位,再开启,再选择sram执行,如果能执行,那证明烧写进flash了。如果不能,那应该可以证明app存储在sram中的。如果试过了希望可以给我一个答案好吧,我很期待。对于原子哥iap的例程中sram那块我是这么理解的:首先就是烧写BootLoader肯定不用说,然后运行BootLoader,通过串口软件发送app,板子接收app,这时我认为这个文件等同于存储在ram中而不是flash中。然后你可以选择sram执行,等于直接在ram中执行。前提是你的ram足够大到装下程序和承载运行时的存储,如果不能的话肯定是实现不了的。
q247341184
6楼-- · 2019-08-14 12:53
哦对,补充一下,BootLoader写在sram里然后运行是不可能的。sram掉电丢失数据的好吧。就算能弄进去也是没意义的,考进去BootLoader,然后断电,再复位的结果是程序由于没有指向的向量表无法跳转,直接无法运行的好吧

一周热门 更多>