打印
[应用相关]

求问想把数据存在main flash中要如何操作

[复制链接]
586|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hfdy01|  楼主 | 2020-7-12 21:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我有一堆比较大的数据想存在flash中,但是info flash太小了,想存在main flash中。
但是同样的程序在info flash中是可以正常写入的,在main flash中却不行了,单片机总是会reset。

求问想把数据存在main flash中要如何操作?

使用特权

评论回复
沙发
CallReceiver| | 2020-7-12 21:39 | 只看该作者
可以自己定义存的地址,还要改什么linker文件

使用特权

评论回复
板凳
xia00| | 2020-7-12 21:42 | 只看该作者

这两个是我擦除和写入flash的函数,在info flash内是可以正常执行的。但是在main flash里面调用会reset掉!

void FERASE(U16 address)
{
//_DINT();
U8 *Erase_address ;
Erase_address = (U8 *)address ;
FCTL1 = FWKEY + ERASE ;
FCTL3 = FWKEY ;
*Erase_address = 0 ;
FCTL1 = FWKEY ;
FCTL3 = FWKEY + LOCK ;
//_EINT();
}

void FWRITE(U16 address, U8* data,U16 length)
{
//_DINT();
U16 i ;
U8* Wr_Addr ;
Wr_Addr =(U8*)address ;

FCTL1 = FWKEY + WRT ; // Set WRT bit for write operation
FCTL3 = FWKEY ;
//while(FCTL3 & BUSY);
for(i=0;i<length;i++)
{
*Wr_Addr= data ;
Wr_Addr++ ;
}
FCTL1 = FWKEY ;
FCTL3 = FWKEY + LOCK ;
//while(FCTL3 & BUSY);
//_EINT();
}

使用特权

评论回复
地板
boy1990| | 2020-7-12 21:44 | 只看该作者
确保FLASH的目标写入地址没有被程序占用,程序占用FLASH的大小及范围可通过IAR option里生成MAP文件查看。

使用特权

评论回复
5
sourceInsight| | 2020-7-12 21:47 | 只看该作者
确保目标地址有效,而不是空地址或保留地址,FLASH地址有错MCU会RESET.

使用特权

评论回复
6
feiqi1| | 2020-7-12 21:50 | 只看该作者
你想占用mainflash,怕是会影响你系统的稳定性的啊,我么用的时候都不会用mainflash 。。

使用特权

评论回复
7
androidbus| | 2020-7-12 21:52 | 只看该作者
完全可以,本人就是那么用的,但是你要注意范围和页大小,最好做个页起始对齐,存没有这个问题,主要是擦除。

使用特权

评论回复
8
qiangweii| | 2020-7-12 21:57 | 只看该作者
这个跟程序的执行顺序相关系的,你把相关数据写到程序存出去了吧?

使用特权

评论回复
9
shashaa| | 2020-7-12 21:59 | 只看该作者
单片机的flash擦出的时候最小的擦除单位是sector的。

使用特权

评论回复
10
bbapple| | 2020-7-12 22:04 | 只看该作者
信息存储区是按照sector擦除的,而程序flash是以扇区block为单位擦除的,,一擦除,你存储的信息自然就呗复位掉了。

使用特权

评论回复
11
handleMessage| | 2020-7-12 22:07 | 只看该作者
是不是数据保存超出范围了?

使用特权

评论回复
12
zhouhuanの| | 2020-7-12 22:09 | 只看该作者

芯片复位不一定是程序的问题。

使用特权

评论回复
13
Listate| | 2020-7-12 22:11 | 只看该作者
info flash和main flash什么区别?

使用特权

评论回复
14
Mozarts| | 2020-7-12 22:13 | 只看该作者

这个Flash还需要link文件吗?

使用特权

评论回复
15
_gege| | 2020-7-12 22:15 | 只看该作者
这个地址可能存在问题,不要超出范围。

使用特权

评论回复
16
Edisons| | 2020-7-12 22:16 | 只看该作者
不知道楼主使用的是什么处理器?

使用特权

评论回复
17
laozhongyi| | 2020-7-12 22:18 | 只看该作者
会是读写程序有问题吗?

使用特权

评论回复
18
kingkits| | 2020-7-16 11:36 | 只看该作者
main flash 在写操作的期间,是不允许任何读操作的,这时如果系统尝试读取下一条指令则会出错,或者出现中断,会跳转到中断向量表(也会出错),所以需要进行特殊处理,ST有专门的例子

使用特权

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

本版积分规则

78

主题

1578

帖子

1

粉丝