We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
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?
It seems that the problem is in incorrect base, ALE and CLE addresses in NAND Mem bus config module. I've found in datasheets that CLE connected to PTD[8], ALE to PTD[9]. I cannot understand just one thing: what is the "base address" means: is it base address NFC, base address of PORTD or base address of GPIO at all? Now my config looks like a:
#define NAND_DEV0_ADDR_BASE 0x400A8000 #define NAND_DEV0_ADDR_ALE 0x400FF0E0 #define NAND_DEV0_ADDR_CLE 0x400FF0E4
Perhaps stating the processor/chip implementation you're using, and citing some documentation might assist others providing you with some insight?
Do have the external bus configured, and clocked correctly?
Can you access/probe the NAND device, and say get an ID out of it independently of the MDK code? Have you validated the NAND and external bus interface?