发帖
2 0 0

PB03操作FLASH教程

东东3
金牌会员

11

主题

23

回帖

1255

积分

金牌会员

积分
1255
PB&TG系列 1157 2 2024-10-24 15:32:03
本帖最后由 东东3 于 2024-10-24 15:48 编辑

首先需要在工程中添加fs.c,文件路径如下:二次开发SDK源码\phy6222_v313_0512\components\libraries\fs
1729755252899.png
在初始化中添加如下代码对其初始化
1729755367120.png
在资料的介绍中可使用的地址范围为0x0000~0x3ffc,超出此范围报错。我在使用中没有对大量的的数据进行存储,只使用了后面的几位,实际还需自行测试。
1729755701420.png
这里主要使用两个函数进行操作
uint8 osal_snv_write( osalSnvId_t id, osalSnvLen_t len, void* pBuf)//写flash
id--待写入数据地址
len--待写入数据长度
pBuf--待写入数据内容

uint8 osal_snv_read( osalSnvId_t id, osalSnvLen_t len, void* pBuf)//读flash
id--待读出数据地址
len--待读出数据长度
pBuf--待读出数据内容


注:每次烧录程序时会先对程序进行擦除,同时也会清除用户写入flash数据

──── 0人觉得很赞 ────

使用道具 举报

2024-10-25 08:52:43
2025-7-30 18:02:08

osal_snv_read原型是 hal_fs_item_read。我用的 hal_fs_item_read、hal_fs_item_write

uint8 osal_snv_read( osalSnvId_t id, osalSnvLen_t len, void* pBuf)
{
    int ret;
    LOG("osal_snv_read:%x\n",id);
    ret = hal_fs_item_read((uint16_t)id,(uint8_t*) pBuf, (uint16_t)len,NULL);

    if(ret != PPlus_SUCCESS)
    {
        LOG("rd_ret:%d\n",ret);
        return NV_OPER_FAILED;
    }

    LOG_DUMP_BYTE(pBuf, len);
    return SUCCESS;
}   

 // 从指定的文件ID读取设备名称数据
    ret = hal_fs_item_read(DEVICE_NAME_FILE_ID, savedName, GAP_DEVICE_NAME_LEN, &nameLen);
  
您需要登录后才可以回帖 立即登录
高级模式
返回
统计信息
  • 会员数: 29633 个
  • 话题数: 43028 篇