Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
FAL
关于easyflash4.0的写入和读取norflash一些疑惑咨询
发布于 2019-03-01 16:30:34 浏览:3102
订阅该版
* 本帖最后由 Sanjay_Wu 于 2019-3-1 16:48 编辑 * 最近学习easyflash,在移植到stm32的时候存在一些问题和疑惑: 1、使用fal实现easyflash对flash的读写函数,easyflash对flash的写入和读取要求最小单位为4个字节。 2、参考iot_board的easyflash例程代码,移植ef_fal_port.c的flash读取和写入函数: ```/** * Read data from flash. * @note This operation's units is word. * * @param addr flash address * @param buf buffer to store read data * @param size read bytes size * * @return result */ EfErrCode ef_port_read(uint32_t addr, uint32_t *buf, size_t size) { EfErrCode result = EF_NO_ERR; EF_ASSERT(size % 4 == 0); fal_partition_read(part, addr, (uint8_t *)buf, size); return result; } /** * Erase data on flash. * @note This operation is irreversible. * @note This operation's units is different which on many chips. * * @param addr flash address * @param size erase bytes size * * @return result */ EfErrCode ef_port_erase(uint32_t addr, size_t size) { EfErrCode result = EF_NO_ERR; /* make sure the start address is a multiple of FLASH_ERASE_MIN_SIZE */ EF_ASSERT(addr % EF_ERASE_MIN_SIZE == 0); if (fal_partition_erase(part, addr, size) < 0) { result = EF_ERASE_ERR; } return result; } /** * Write data to flash. * @note This operation's units is word. * @note This operation must after erase. @see flash_erase. * * @param addr flash address * @param buf the write data buffer * @param size write bytes size * * @return result */ EfErrCode ef_port_write(uint32_t addr, const uint32_t *buf, size_t size) { EfErrCode result = EF_NO_ERR; EF_ASSERT(size % 4 == 0); if (fal_partition_write(part, addr, (uint8_t *)buf, size) < 0) { result = EF_WRITE_ERR; } return result; }``` 上述函数知,在代码做了一些判断:**EF_ASSERT(size % 4 == 0);** 如果写入或读取不是4个字节为单位的话则会断言报错。 3、easyflash对于norflash(SPI-Flash)的写入粒度是1bit,擦除粒度是4K,我在ef_cfg.h定义如下: ```/* the minimum size of flash erasure */ #define EF_ERASE_MIN_SIZE (4 * 1024) /* 对于norflash,擦除粒度为4K */ /* the flash write granularity, unit: bit * only support 1(nor flash)/ 8(stm32f4)/ 32(stm32f1)/ 64(stm32l4) */ #define EF_WRITE_GRAN (1) ``````/* backup area start address */ #define EF_START_ADDR 0x00000000 /* ENV area size. It's at least one empty sector for GC. So it's definination must more then or equal 2 flash sector size. */ #define ENV_AREA_SIZE (2 * EF_ERASE_MIN_SIZE)``` **4、问题**: (1)、在移植编译下载后,easyflash初始化成功,但是在setenv的时候存在问题,也就是断言在写入的最小不是4字节: (2)**如果把读写的函数里面的EF_ASSERT(size % 4 == 0);注释掉,就能够setenv,printenv等操作。** 我用的norflash使用的是w25q128。 **以上,存在此问题,如有知道的朋友麻烦帮你看一下,感谢!** ![正常图片.jpg](https://oss-club.rt-thread.org/uploads/201903/01/164623i0106gb0h0vee6t7.jpg) ![出错图片.jpg](https://oss-club.rt-thread.org/uploads/201903/01/164631p8nb2cma8mocausc.jpg)
查看更多
0
个回答
默认排序
按发布时间排序
暂无答案,快来添加答案吧
撰写答案
登录
注册新账号
关注者
0
被浏览
3.1k
关于作者
Sanjay_Wu
这家伙很懒,什么也没写!
提问
13
回答
32
被采纳
0
关注TA
发私信
相关问题
1
关于FAL移植
2
添加fal软件包之后编译出现错误,求助!
3
FAL驱动移植&构建脚本问题
4
帮我看一下这样分区会不会冲突??
5
EasyFlash 4.0疑似出BUG
6
疑似FAL日志输出与DFS冲突??
7
fal软件包偏移量大于等于当前分区的大小会报错
8
为什么片内Flash总是写失败?
9
片上flash的文件系统的建立
10
潘多拉 fal bench 失败【已解决】
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
LVGL使用字库IC芯片显示中文
2
基于STM32H750和Rt-Thread的CANFD通信实现的记录(一)
3
freemodbus主机在freertos的适配,参考rtthread例程
4
开源共生 商业共赢 | RT-Thread 2024开发者大会议程正式发布!
5
【24嵌入式设计大赛】基于RT-Thread星火一号的智慧家居系统
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
SFUD
msh
rt_mq_消息队列_msg_queue
keil_MDK
ulog
MicroPython
C++_cpp
本月问答贡献
出出啊
1517
个答案
342
次被采纳
小小李sunny
1443
个答案
289
次被采纳
张世争
805
个答案
174
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
148
次被采纳
本月文章贡献
出出啊
1
篇文章
4
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
1
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部