完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
吧现象详细说明一下:用户App将FLASH最后64K用于保存数据,在正常供电下,读、写结果都正确,用户App也正常;但是在写的过程中突然断电,就死机(变砖),反复上电也没用,似乎是用户App被冲了。
最后64K?是什么地址? Link .id: ENTRY( _start ) __stack_size = 2048; PROVIDE( _stack_size = __stack_size ); MEMORY { FLASH (rx) : ORIGIN = 0x0000000000, LENGTH = 256K RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 64K } APP: #define PAGE_FAST_SIZE (u16)0x100 #define PAGE_SIZE (u32)0x1000 #define FLASH_SIZE (u32)0x40000 #define FLASH_END (u32)(0x08000000+FLASH_SIZE) #define EE_BASE_ADDRESS (FLASH_END-1*PAGE_SIZE) #define BACK_ADDRES (FLASH_END-2*PAGE_SIZE) void write_fundata_fast(uint32_t Address) { u16 i; u32 addr; FLASH_Unlock_Fast(); mCRC=0; for(i=0;i { mCRC +=fundata.i;// Get mCRC } for(i=0;i { addr=Address+i*PAGE_FAST_SIZE; if( *(u32*)addr!=ERASED ) FLASH_ErasePage_Fast(addr); FLASH_ProgramPage_Fast(addr, &fundata.lparameter[i*PAGE_FAST_SIZE/4]); } FLASH_Lock_Fast(); } void Power_Off_Store() { write_fundata_fast(EE_BASE_ADDRESS); } #define FLASH_SIZE (u32)0x40000 #define ERASED 0xe339e339 |
|
相关推荐
1个回答
|
|
掉电还要做擦除动作?本身掉电操作flash是很容易出问题的,你还多块擦除编程,其实307是有480Kflash的,256K后面的空间可以做数据,我测试过也可以跑程序,只是用MRS下载会异常,自己做个bootloader的话,后面的空间就可以尽量利用,那样你可以预先擦除,掉电操作能省多少时间是多少,看看这样有没有帮助
|
|
|
|
只有小组成员才能发言,加入小组>>
477 浏览 1 评论
CH579M+RT-Thread,RTC从Sleep模式唤醒失败是什么原因?
2874 浏览 2 评论
2361 浏览 1 评论
818浏览 2评论
CH569通过HSPI实现USB3.0和FPGA高速双向通讯
644浏览 1评论
499浏览 1评论
CH32F103C8T6使用当前官网上的CDC例程会出现设备描述符请求失败
365浏览 1评论
642浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-26 15:26 , Processed in 1.177341 second(s), Total 77, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号