Can't mount FS on NAND

Hi all.
I'm trying to mount file system on NAND flash MT29F1G08ABADAH4. I'm using cortex m4.
Here are my NAND setting:

#define NAND0_ENABLE 1
#define NAND0_TYPE 0
#define NAND0_DRIVER 0
#define NAND0_DEV_NUM 0
#define NAND0_PAGE_SIZE 2112
#define NAND0_PAGE_COUNT 64
#define NAND0_BLOCK_COUNT 1024 // 128Mb
#define NAND0_PAGE_CACHE 8
#define NAND0_BLOCK_CACHE 16
#define NAND0_SW_ECC 1
#define NAND0_CACHE_SIZE 4
#define NAND0_CACHE_RELOC 0
#define NAND0_CACHE_ADDR 0x80000000
#define NAND0_FAT_JOURNAL 1
#define NAND0_DEFAULT_DRIVE 1

I've tried to use example from MDK 5.0:File System Component:System Routines:fmount:

void main (void) {

if (finit ("N:") != fsOK) {// error handling} if (fmount ("N:") != fsOK) {// error handling} // do smth funmount ("M:"); funinit ("M:");
}

So, i've got a problem:
finit("N0:") returnk OK, but fmount("N0:") fails with "fsMediaError" code

Can anybody help me?

Parents
  • Thanks a lot, I've read most of links you gave before asking the question. Problem is that Keil made new MDK, 5.*, and low-and-middle level functions seems to be closed from users.

    Look at MDK5.0 official example: File System Component->Reference->System Routines->fmount:

    void main (void) {
    FILE *f;
    // Initialize the M: drive.
    if (finit ("M:") != fsOK) {
    // error handling
    ...
    } // Mount the M: drive.
    if (fmount ("M:") != fsOK) {
    // error handling
    ...
    } // Update a log file on SD card.
    f = fopen ("M:\\Logs\\Test_file.log","a");
    if (f == NULL) {
    // error handling
    ...
    } else {
    // write data to file
    fclose (f);
    } // The drive is no more needed.
    funmount ("M:");
    funinit ("M:");
    ..
    }

    This example make me think that all I need - just to config NAND memory bus and NAND flash device. MDK 5.* already has the NAND flash driver, and commands like a read_flash_ID are already implemented. I think, fmount() consists of step2-step4 from your post, but unfortunatelu I'm not sure and still trying to check that...

Reply
  • Thanks a lot, I've read most of links you gave before asking the question. Problem is that Keil made new MDK, 5.*, and low-and-middle level functions seems to be closed from users.

    Look at MDK5.0 official example: File System Component->Reference->System Routines->fmount:

    void main (void) {
    FILE *f;
    // Initialize the M: drive.
    if (finit ("M:") != fsOK) {
    // error handling
    ...
    } // Mount the M: drive.
    if (fmount ("M:") != fsOK) {
    // error handling
    ...
    } // Update a log file on SD card.
    f = fopen ("M:\\Logs\\Test_file.log","a");
    if (f == NULL) {
    // error handling
    ...
    } else {
    // write data to file
    fclose (f);
    } // The drive is no more needed.
    funmount ("M:");
    funinit ("M:");
    ..
    }

    This example make me think that all I need - just to config NAND memory bus and NAND flash device. MDK 5.* already has the NAND flash driver, and commands like a read_flash_ID are already implemented. I think, fmount() consists of step2-step4 from your post, but unfortunatelu I'm not sure and still trying to check that...

Children
More questions in this forum