硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1857|回复: 7
收起左侧

[FileX] GD32裸机移植FILEX ,levelx为nand flash的磨损均衡层 , fx_media_open返回值错误

[复制链接]

4

主题

11

回帖

23

积分

新手上路

积分
23
发表于 2022-10-16 23:43:28 | 显示全部楼层 |阅读模式
fx_media_open(&nand , "GD_NAND" , fx_nand_flash_driver , NULL , work , sizeof(work));
这一行代码为什么返回值是0x21  FX_BUFFER_ERROR啊
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
发表于 2022-10-17 10:39:17 | 显示全部楼层
这个错误应该是配置有点问题。
回复

使用道具 举报

4

主题

11

回帖

23

积分

新手上路

积分
23
 楼主| 发表于 2022-10-17 13:42:02 | 显示全部楼层
ret = fx_media_format(
                                                &nand,                                        //media pointer
                                                fx_nand_flash_driver,        //Driver Entry
                                                FX_NULL ,                                 //Information Pointer
                                                work ,                                        //media memory ptr
                                                sizeof(work),                        //memory size
                                                "MY_NAND" ,                         //volume_name
                                                1,                                                //Number of FAT tables
                                                32,                                                //Number of directory entries
                                                0,                                                //Number of hidden sectors
                                                65536,                                        //Total number of sectors
                                                2048 ,                                        //Number of bytes per sector
                                                1 ,                                                //Number of sectors per cluster
                                                1 ,                                                //Number of heads
                                                1);                                                //Number of sectors per track
我的nand flash是128MB的,一页是2048B,一块有64页,一共1024块,我这样子格式化对吗
回复

使用道具 举报

4

主题

11

回帖

23

积分

新手上路

积分
23
 楼主| 发表于 2022-10-18 11:23:19 | 显示全部楼层
eric2013 发表于 2022-10-17 10:39
这个错误应该是配置有点问题。

硬汉哥,我想问一下fx_media_format这个函数只需要调用一次就好了吗,之后就可以直接用fx_media_open来打开文件系统,不需要在format了
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
发表于 2022-10-18 13:11:00 | 显示全部楼层
Ash1n 发表于 2022-10-17 13:42
ret = fx_media_format(
                                                &nand,                                        //media pointer
                                                fx_nand_flash_driver,        //Driver Entry ...

看着没什么问题。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
发表于 2022-10-18 13:11:20 | 显示全部楼层
Ash1n 发表于 2022-10-18 11:23
硬汉哥,我想问一下fx_media_format这个函数只需要调用一次就好了吗,之后就可以直接用fx_media_open来打 ...

对,仅需一次就行。不用每次上电都来一次。
回复

使用道具 举报

4

主题

11

回帖

23

积分

新手上路

积分
23
 楼主| 发表于 2022-10-19 14:20:53 | 显示全部楼层
eric2013 发表于 2022-10-18 13:11
看着没什么问题。

#ifndef FX_DISABLE_CACHE
    /* Determine how many logical sectors can be cached with user's supplied
       buffer area - there must be at least enough for one sector!  */
    media_ptr -> fx_media_sector_cache_size =  memory_size / media_ptr -> fx_media_bytes_per_sector;

    /* Is there at least one?  */
    if (media_ptr -> fx_media_sector_cache_size == 0)
    {

        /* Build the "uninitialize" I/O driver request.  */
        media_ptr -> fx_media_driver_request =      FX_DRIVER_UNINIT;
        media_ptr -> fx_media_driver_status =       FX_IO_ERROR;

        /* If trace is enabled, insert this event into the trace buffer.  */
        FX_TRACE_IN_LINE_INSERT(FX_TRACE_INTERNAL_IO_DRIVER_UNINIT, media_ptr, 0, 0, 0, FX_TRACE_INTERNAL_EVENTS, 0, 0)

        /* Call the specified I/O driver with the uninitialize request.  */
        (media_ptr -> fx_media_driver_entry) (media_ptr);

        /* Error in the buffer size supplied by user.  */
        return(FX_BUFFER_ERROR);
    }

在fx_media_open.c文件里的343行下面的代码,fx_media_bytes_per_sector被设为FF,导致返回值为FX_BUFFER_ERROR,应该怎么解决啊,我的fx_user.h里的内容就设置了FX_STANDALONE_ENABLE、FX_SINGLE_THREAD、FX_NO_LOCAL_PATH、FX_NO_TIMER,还需要添加什么吗
回复

使用道具 举报

2

主题

14

回帖

20

积分

新手上路

积分
20
发表于 2023-3-16 15:03:43 | 显示全部楼层
您好,我现在也遇到这个问题了,请问您是怎么解决的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-2 09:29 , Processed in 0.170048 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表