Ash1n 发表于 2022-10-16 23:43:28

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

fx_media_open(&nand , "GD_NAND" , fx_nand_flash_driver , NULL , work , sizeof(work));
这一行代码为什么返回值是0x21FX_BUFFER_ERROR啊

eric2013 发表于 2022-10-17 10:39:17

这个错误应该是配置有点问题。

Ash1n 发表于 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块,我这样子格式化对吗

Ash1n 发表于 2022-10-18 11:23:19

eric2013 发表于 2022-10-17 10:39
这个错误应该是配置有点问题。

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

eric2013 发表于 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 ...

看着没什么问题。

eric2013 发表于 2022-10-18 13:11:20

Ash1n 发表于 2022-10-18 11:23
硬汉哥,我想问一下fx_media_format这个函数只需要调用一次就好了吗,之后就可以直接用fx_media_open来打 ...

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

Ash1n 发表于 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,还需要添加什么吗

lqw675 发表于 2023-3-16 15:03:43

您好,我现在也遇到这个问题了,请问您是怎么解决的
页: [1]
查看完整版本: GD32裸机移植FILEX ,levelx为nand flash的磨损均衡层 , fx_media_open返回值错误