Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

[SOLVED] Using MDD Framework with PIC18F4550???

Status
Not open for further replies.

xpress_embedo

Advanced Member level 4
Joined
Jul 5, 2011
Messages
1,154
Helped
161
Reputation
396
Reaction score
189
Trophy points
1,353
Location
India
Activity points
10,591
Microchip has provided MDD Framework for Reading Writing Creating Files and Folder in SD Cards using PIC Micro-Controller's..

And i have successfully tested it on PIC18F8722 Micro-Controller on Proteus...
And it is working Absolutely fine for me...

But the Problem is that i am having PIC18F4550 Micro-Controller with me...
and i want to port the code into that...

I tried to do so...
Change the HardwareProfile.h file to meet the PIC18F4550 Requirement..

When i compile the Program..
I got an error which i think is due to the Linker File..
Code:
Error-Section 'FATBuffer' can not fit the absolute section. Section 'FATBuffer' start = 0x0000900, length = 0x0000200

Link Step Failed


What i think is that the MDD Framework has modified the PIC18F8722 Linker Script but they have not provided it for PIC18F4550 Pls Some one help me...

Thanks in Advance
 

check how are data sections defined in the 18f8722 and then port the similar solution to 18f4550. Generally by default 18f4550 has few smaller blocks defines in order to be used as usb buffers.
 

check how are data sections defined in the 18f8722 and then port the similar solution to 18f4550. Generally by default 18f4550 has few smaller blocks defines in order to be used as usb buffers.

Thanks for your reply...

I am not able to get much while looking at the linker file....
Even get something but still don't know how to solve my problem

This is my Linker file of PIC18F8722 Which is working fine when using Controller PIC18F8722
Code:
// File: 18f8722_g.lkr
// Generic linker script for the PIC18F8722 processor

#DEFINE _CODEEND _DEBUGCODESTART - 1
#DEFINE _CEND _CODEEND + _DEBUGCODELEN
#DEFINE _DATAEND _DEBUGDATASTART - 1
#DEFINE _DEND _DATAEND + _DEBUGDATALEN

LIBPATH .

#IFDEF _CRUNTIME
  #IFDEF _EXTENDEDMODE
    FILES c018i_e.o
    FILES clib_e.lib
    FILES p18f8722_e.lib

  #ELSE
    FILES c018i.o
    FILES clib.lib
    FILES p18f8722.lib
  #FI

#FI

#IFDEF _DEBUGCODESTART
  CODEPAGE   NAME=page       START=0x0               END=_CODEEND
  CODEPAGE   NAME=debug      START=_DEBUGCODESTART   END=_CEND        PROTECTED
#ELSE
  CODEPAGE   NAME=page       START=0x0               END=0x1FFFF
#FI

CODEPAGE   NAME=idlocs     START=0x200000          END=0x200007       PROTECTED
CODEPAGE   NAME=config     START=0x300000          END=0x30000D       PROTECTED
CODEPAGE   NAME=devid      START=0x3FFFFE          END=0x3FFFFF       PROTECTED
CODEPAGE   NAME=eedata     START=0xF00000          END=0xF003FF       PROTECTED

#IFDEF _EXTENDEDMODE
  DATABANK   NAME=gpre       START=0x0               END=0x5F
#ELSE
  ACCESSBANK NAME=accessram  START=0x0               END=0x5F
#FI

DATABANK   NAME=gpr0       START=0x60              END=0xFF
DATABANK   NAME=gpr1       START=0x100             END=0x1FF
DATABANK   NAME=gpr2       START=0x200             END=0x2FF
DATABANK   NAME=gpr3       START=0x300             END=0x3FF
DATABANK   NAME=gpr4       START=0x400             END=0x4FF
DATABANK   NAME=gpr5       START=0x500             END=0x5FF
DATABANK   NAME=gpr6       START=0x600             END=0x6FF
DATABANK   NAME=buffer1    START=0x700             END=0x8FF      PROTECTED
DATABANK   NAME=buffer2    START=0x900             END=0xAFF      PROTECTED
//DATABANK   NAME=gpr9       START=0x900             END=0x9FF
//DATABANK   NAME=gpr10      START=0xA00             END=0xAFF
//DATABANK   NAME=gpr11      START=0xB00             END=0xBFF
DATABANK   NAME=gpr12      START=0xB00             END=0xCFF       PROTECTED
DATABANK   NAME=gpr13      START=0xD00             END=0xDFF

#IFDEF _DEBUGDATASTART
  DATABANK   NAME=gpr14      START=0xE00             END=_DATAEND
  DATABANK   NAME=dbgspr     START=_DEBUGDATASTART   END=_DEND           PROTECTED
#ELSE //no debug
  DATABANK   NAME=gpr14      START=0xE00             END=0xEFF
#FI

DATABANK   NAME=gpr15      START=0xF00             END=0xF5F
ACCESSBANK NAME=accesssfr  START=0xF60             END=0xFFF          PROTECTED

SECTION    NAME=CONFIG     ROM=config
SECTION    NAME=dataBuffer RAM=buffer1
SECTION    NAME=FATBuffer  RAM=buffer2

#IFDEF _CRUNTIME

  #IFDEF _DEBUGDATASTART
    STACK SIZE=0x200 RAM=gpr12
  #ELSE
    STACK SIZE=0x200 RAM=gpr12
  #FI
#FI

And this one is PIC18F4550 which i have to modify.. please help to do so...

Code:
// File: 18f4550_g.lkr
// Generic linker script for the PIC18F4550 processor

#DEFINE _CODEEND _DEBUGCODESTART - 1
#DEFINE _CEND _CODEEND + _DEBUGCODELEN
#DEFINE _DATAEND _DEBUGDATASTART - 1
#DEFINE _DEND _DATAEND + _DEBUGDATALEN

LIBPATH .

#IFDEF _CRUNTIME
  #IFDEF _EXTENDEDMODE
    FILES c018i_e.o
    FILES clib_e.lib
    FILES p18f4550_e.lib

  #ELSE
    FILES c018i.o
    FILES clib.lib
    FILES p18f4550.lib
  #FI

#FI

#IFDEF _DEBUGCODESTART
  CODEPAGE   NAME=page       START=0x0               END=_CODEEND
  CODEPAGE   NAME=debug      START=_DEBUGCODESTART   END=_CEND        PROTECTED
#ELSE
  CODEPAGE   NAME=page       START=0x0               END=0x7FFF
#FI

CODEPAGE   NAME=idlocs     START=0x200000          END=0x200007       PROTECTED
CODEPAGE   NAME=config     START=0x300000          END=0x30000D       PROTECTED
CODEPAGE   NAME=devid      START=0x3FFFFE          END=0x3FFFFF       PROTECTED
CODEPAGE   NAME=eedata     START=0xF00000          END=0xF000FF       PROTECTED

#IFDEF _EXTENDEDMODE
  DATABANK   NAME=gpre       START=0x0               END=0x5F
#ELSE
  ACCESSBANK NAME=accessram  START=0x0               END=0x5F
#FI

DATABANK   NAME=gpr0       START=0x60              END=0xFF
DATABANK   NAME=gpr1       START=0x100             END=0x1FF
DATABANK   NAME=gpr2       START=0x200             END=0x2FF

#IFDEF _DEBUGDATASTART
  DATABANK   NAME=gpr3       START=0x300             END=_DATAEND
  DATABANK   NAME=dbgspr     START=_DEBUGDATASTART   END=_DEND           PROTECTED
#ELSE //no debug
  DATABANK   NAME=gpr3       START=0x300             END=0x3FF
#FI

DATABANK   NAME=gpr4       START=0x400             END=0x4FF
DATABANK   NAME=gpr5       START=0x500             END=0x5FF
DATABANK   NAME=gpr6       START=0x600             END=0x6FF
DATABANK   NAME=gpr7       START=0x700             END=0x7FF
ACCESSBANK NAME=accesssfr  START=0xF60             END=0xFFF          PROTECTED


#IFDEF _CRUNTIME
  SECTION    NAME=CONFIG     ROM=config
  #IFDEF _DEBUGDATASTART
    STACK SIZE=0x100 RAM=gpr2
  #ELSE
    STACK SIZE=0x100 RAM=gpr3
  #FI
#FI


Please help me to solve my problem....
I want to run SD Cards

- - - Updated - - -

check how are data sections defined in the 18f8722 and then port the similar solution to 18f4550. Generally by default 18f4550 has few smaller blocks defines in order to be used as usb buffers.

Thanks for your reply...

I am not able to get much while looking at the linker file....
Even get something but still don't know how to solve my problem

This is my Linker file of PIC18F8722 Which is working fine when using Controller PIC18F8722
Code:
// File: 18f8722_g.lkr
// Generic linker script for the PIC18F8722 processor

#DEFINE _CODEEND _DEBUGCODESTART - 1
#DEFINE _CEND _CODEEND + _DEBUGCODELEN
#DEFINE _DATAEND _DEBUGDATASTART - 1
#DEFINE _DEND _DATAEND + _DEBUGDATALEN

LIBPATH .

#IFDEF _CRUNTIME
  #IFDEF _EXTENDEDMODE
    FILES c018i_e.o
    FILES clib_e.lib
    FILES p18f8722_e.lib

  #ELSE
    FILES c018i.o
    FILES clib.lib
    FILES p18f8722.lib
  #FI

#FI

#IFDEF _DEBUGCODESTART
  CODEPAGE   NAME=page       START=0x0               END=_CODEEND
  CODEPAGE   NAME=debug      START=_DEBUGCODESTART   END=_CEND        PROTECTED
#ELSE
  CODEPAGE   NAME=page       START=0x0               END=0x1FFFF
#FI

CODEPAGE   NAME=idlocs     START=0x200000          END=0x200007       PROTECTED
CODEPAGE   NAME=config     START=0x300000          END=0x30000D       PROTECTED
CODEPAGE   NAME=devid      START=0x3FFFFE          END=0x3FFFFF       PROTECTED
CODEPAGE   NAME=eedata     START=0xF00000          END=0xF003FF       PROTECTED

#IFDEF _EXTENDEDMODE
  DATABANK   NAME=gpre       START=0x0               END=0x5F
#ELSE
  ACCESSBANK NAME=accessram  START=0x0               END=0x5F
#FI

DATABANK   NAME=gpr0       START=0x60              END=0xFF
DATABANK   NAME=gpr1       START=0x100             END=0x1FF
DATABANK   NAME=gpr2       START=0x200             END=0x2FF
DATABANK   NAME=gpr3       START=0x300             END=0x3FF
DATABANK   NAME=gpr4       START=0x400             END=0x4FF
DATABANK   NAME=gpr5       START=0x500             END=0x5FF
DATABANK   NAME=gpr6       START=0x600             END=0x6FF
DATABANK   NAME=buffer1    START=0x700             END=0x8FF      PROTECTED
DATABANK   NAME=buffer2    START=0x900             END=0xAFF      PROTECTED
//DATABANK   NAME=gpr9       START=0x900             END=0x9FF
//DATABANK   NAME=gpr10      START=0xA00             END=0xAFF
//DATABANK   NAME=gpr11      START=0xB00             END=0xBFF
DATABANK   NAME=gpr12      START=0xB00             END=0xCFF       PROTECTED
DATABANK   NAME=gpr13      START=0xD00             END=0xDFF

#IFDEF _DEBUGDATASTART
  DATABANK   NAME=gpr14      START=0xE00             END=_DATAEND
  DATABANK   NAME=dbgspr     START=_DEBUGDATASTART   END=_DEND           PROTECTED
#ELSE //no debug
  DATABANK   NAME=gpr14      START=0xE00             END=0xEFF
#FI

DATABANK   NAME=gpr15      START=0xF00             END=0xF5F
ACCESSBANK NAME=accesssfr  START=0xF60             END=0xFFF          PROTECTED

SECTION    NAME=CONFIG     ROM=config
SECTION    NAME=dataBuffer RAM=buffer1
SECTION    NAME=FATBuffer  RAM=buffer2

#IFDEF _CRUNTIME

  #IFDEF _DEBUGDATASTART
    STACK SIZE=0x200 RAM=gpr12
  #ELSE
    STACK SIZE=0x200 RAM=gpr12
  #FI
#FI

And this one is PIC18F4550 which i have to modify.. please help to do so...

Code:
// File: 18f4550_g.lkr
// Generic linker script for the PIC18F4550 processor

#DEFINE _CODEEND _DEBUGCODESTART - 1
#DEFINE _CEND _CODEEND + _DEBUGCODELEN
#DEFINE _DATAEND _DEBUGDATASTART - 1
#DEFINE _DEND _DATAEND + _DEBUGDATALEN

LIBPATH .

#IFDEF _CRUNTIME
  #IFDEF _EXTENDEDMODE
    FILES c018i_e.o
    FILES clib_e.lib
    FILES p18f4550_e.lib

  #ELSE
    FILES c018i.o
    FILES clib.lib
    FILES p18f4550.lib
  #FI

#FI

#IFDEF _DEBUGCODESTART
  CODEPAGE   NAME=page       START=0x0               END=_CODEEND
  CODEPAGE   NAME=debug      START=_DEBUGCODESTART   END=_CEND        PROTECTED
#ELSE
  CODEPAGE   NAME=page       START=0x0               END=0x7FFF
#FI

CODEPAGE   NAME=idlocs     START=0x200000          END=0x200007       PROTECTED
CODEPAGE   NAME=config     START=0x300000          END=0x30000D       PROTECTED
CODEPAGE   NAME=devid      START=0x3FFFFE          END=0x3FFFFF       PROTECTED
CODEPAGE   NAME=eedata     START=0xF00000          END=0xF000FF       PROTECTED

#IFDEF _EXTENDEDMODE
  DATABANK   NAME=gpre       START=0x0               END=0x5F
#ELSE
  ACCESSBANK NAME=accessram  START=0x0               END=0x5F
#FI

DATABANK   NAME=gpr0       START=0x60              END=0xFF
DATABANK   NAME=gpr1       START=0x100             END=0x1FF
DATABANK   NAME=gpr2       START=0x200             END=0x2FF

#IFDEF _DEBUGDATASTART
  DATABANK   NAME=gpr3       START=0x300             END=_DATAEND
  DATABANK   NAME=dbgspr     START=_DEBUGDATASTART   END=_DEND           PROTECTED
#ELSE //no debug
  DATABANK   NAME=gpr3       START=0x300             END=0x3FF
#FI

DATABANK   NAME=gpr4       START=0x400             END=0x4FF
DATABANK   NAME=gpr5       START=0x500             END=0x5FF
DATABANK   NAME=gpr6       START=0x600             END=0x6FF
DATABANK   NAME=gpr7       START=0x700             END=0x7FF
ACCESSBANK NAME=accesssfr  START=0xF60             END=0xFFF          PROTECTED


#IFDEF _CRUNTIME
  SECTION    NAME=CONFIG     ROM=config
  #IFDEF _DEBUGDATASTART
    STACK SIZE=0x100 RAM=gpr2
  #ELSE
    STACK SIZE=0x100 RAM=gpr3
  #FI
#FI


Please help me to solve my problem....
I want to run SD Cards
 

ok, so here's what is THINK is going on:
When you look at the linker script for 18f8722 there you can find following block:
Code:
ATABANK   NAME=gpr0       START=0x60              END=0xFF
DATABANK   NAME=gpr1       START=0x100             END=0x1FF
DATABANK   NAME=gpr2       START=0x200             END=0x2FF
DATABANK   NAME=gpr3       START=0x300             END=0x3FF
DATABANK   NAME=gpr4       START=0x400             END=0x4FF
DATABANK   NAME=gpr5       START=0x500             END=0x5FF
DATABANK   NAME=gpr6       START=0x600             END=0x6FF
DATABANK   NAME=buffer1    START=0x700             END=0x8FF      PROTECTED
DATABANK   NAME=buffer2    START=0x900             END=0xAFF      PROTECTED
//DATABANK   NAME=gpr9       START=0x900             END=0x9FF
//DATABANK   NAME=gpr10      START=0xA00             END=0xAFF
//DATABANK   NAME=gpr11      START=0xB00             END=0xBFF
DATABANK   NAME=gpr12      START=0xB00             END=0xCFF       PROTECTED
DATABANK   NAME=gpr13      START=0xD00             END=0xDFF
each databank has name specified followed by start and end address. By default every bank of ram has 256bytes. Since it is not allowed for compiler to put array of data (like buffer table of fat system) across multiple databanks, this produces an error. What you need to do is redefine some dstabanks start and end so that you have one bank with at least 0x200 (512d) bytes of size. In he linker script of 18f8722 this has apparently been done by commenting out grp9,10 and 11 and renaming gpr7 and gpr8 to buffer1 and buffer2. Then these 2 buffer banks have both 0x200 bytes each and thus the buffer array can fit.

Below these definitions you will find something like
Code:
SECTION    NAME=CONFIG     ROM=config
SECTION    NAME=dataBuffer RAM=buffer1
SECTION    NAME=FATBuffer  RAM=buffer2
this says, that 2 new sections are defined, and should be linked with buffer1 and buffer 2 regions of RAM.

Now if you browse through the code of fat library, you will probably find something like
Code:
#pragma udata FATBuffer
char FATbuffer[0x200]
#pragma udata
This basically tells compiler to put the big array in this bank of RAM.

So the 18f4550 script should look something like

DATABANK NAME=gpr0 START=0x60 END=0xFF
DATABANK NAME=gpr1 START=0x100 END=0x1FF
DATABANK NAME=gpr2 START=0x200 END=0x2FF

#IFDEF _DEBUGDATASTART
DATABANK NAME=gpr3 START=0x300 END=_DATAEND
DATABANK NAME=dbgspr START=_DEBUGDATASTART END=_DEND PROTECTED
#ELSE //no debug
DATABANK NAME=gpr3 START=0x300 END=0x3FF
#FI

DATABANK NAME=buffer1 START=0x400 END=0x5FF PROTECTED
DATABANK NAME=buffer2 START=0x600 END=0x7FF PROTECTED
//DATABANK NAME=gpr6 START=0x600 END=0x6FF
//DATABANK NAME=gpr7 START=0x700 END=0x7FF

ACCESSBANK NAME=accesssfr START=0xF60 END=0xFFF

SECTION NAME=dataBuffer RAM=buffer1
SECTION NAME=FATBuffer RAM=buffer2


That should work, but please check if such large arrays are needed. Those 2 buffers alone take HALF of your total ram memory in MCU.
 
Thanks for your help...

I modified the linker file as follow:-

Code:
// File: 18f4550_g.lkr
// Generic linker script for the PIC18F4550 processor

#DEFINE _CODEEND _DEBUGCODESTART - 1
#DEFINE _CEND _CODEEND + _DEBUGCODELEN
#DEFINE _DATAEND _DEBUGDATASTART - 1
#DEFINE _DEND _DATAEND + _DEBUGDATALEN

LIBPATH .

#IFDEF _CRUNTIME
  #IFDEF _EXTENDEDMODE
    FILES c018i_e.o
    FILES clib_e.lib
    FILES p18f4550_e.lib

  #ELSE
    FILES c018i.o
    FILES clib.lib
    FILES p18f4550.lib
  #FI

#FI

#IFDEF _DEBUGCODESTART
  CODEPAGE   NAME=page       START=0x0               END=_CODEEND
  CODEPAGE   NAME=debug      START=_DEBUGCODESTART   END=_CEND        PROTECTED
#ELSE
  CODEPAGE   NAME=page       START=0x0               END=0x7FFF
#FI

CODEPAGE   NAME=idlocs     START=0x200000          END=0x200007       PROTECTED
CODEPAGE   NAME=config     START=0x300000          END=0x30000D       PROTECTED
CODEPAGE   NAME=devid      START=0x3FFFFE          END=0x3FFFFF       PROTECTED
CODEPAGE   NAME=eedata     START=0xF00000          END=0xF000FF       PROTECTED

#IFDEF _EXTENDEDMODE
  DATABANK   NAME=gpre       START=0x0               END=0x5F
#ELSE
  ACCESSBANK NAME=accessram  START=0x0               END=0x5F
#FI

DATABANK   NAME=gpr0       START=0x60              END=0xFF
DATABANK   NAME=gpr1       START=0x100             END=0x1FF
DATABANK   NAME=gpr2       START=0x200             END=0x2FF

#IFDEF _DEBUGDATASTART
  DATABANK   NAME=gpr3       START=0x300             END=_DATAEND
  DATABANK   NAME=dbgspr     START=_DEBUGDATASTART   END=_DEND           PROTECTED
#ELSE //no debug
  DATABANK   NAME=gpr3       START=0x300             END=0x3FF
#FI

DATABANK   NAME=buffer1       START=0x400             END=0x5FF		PROTECTED
//DATABANK   NAME=gpr5       START=0x500             END=0x5FF
DATABANK   NAME=buffer2      START=0x600             END=0x7FF		PROTECTED
//DATABANK   NAME=gpr7       START=0x700             END=0x7FF
ACCESSBANK NAME=accesssfr  START=0xF60             END=0xFFF          PROTECTED


SECTION 	NAME=dataBuffer 		RAM=buffer1
SECTION 	NAME=FATBuffer			RAM=buffer2

#IFDEF _CRUNTIME
  SECTION    NAME=CONFIG     ROM=config
  #IFDEF _DEBUGDATASTART
    STACK SIZE=0x100 RAM=gpr2
  #ELSE
    STACK SIZE=0x100 RAM=gpr3
  #FI
#FI

And thought it will work but it gives and error..
as follow:-
Code:
Error - section 'FATBuffer' has a memory 'buffer2' which can not fit the absolute section. Section 'FATBuffer' start=0x00000900, length=0x00000200.
Errors    : 1

The Start 0x900 shows that there is something related to PIC18F8722
Because it is in its linker file

Now i try to find the reason behind it
in file FSIO.c
i find the line
Code:
#ifdef __18CXX
    #pragma udata dataBuffer = DATA_BUFFER_ADDRESS
    BYTE gDataBuffer[MEDIA_SECTOR_SIZE];    // The global data sector buffer
    #pragma udata FATBuffer = FAT_BUFFER_ADDRESS
    BYTE gFATBuffer[MEDIA_SECTOR_SIZE];     // The global FAT sector buffer
#endif

Now i try to find the FAT_BUFFER_ADDRESS
and i found it in FSconfig.h file

Code:
#ifdef __18CXX
    /* Define the locations for the dataBuffer and FATbuffer; PLEASE CHECK THE LINKER FILE */
    #define DATA_BUFFER_ADDRESS      0x700
    #define FAT_BUFFER_ADDRESS       0x900
#endif

And this is for 18f8722 linker script

now i see the modified linker script for 18f4550

and changed it accordingly
as follow:

Code:
#ifdef __18CXX
    /* Define the locations for the dataBuffer and FATbuffer; PLEASE CHECK THE LINKER FILE */
    #define DATA_BUFFER_ADDRESS      0x400
    #define FAT_BUFFER_ADDRESS       0x600
#endif

Now when i compiler my code i get an error as follow:-
:-(

Please help me

Code:
Error - section '.code_FSIO.o' can not fit the section. Section '.code_FSIO.o' length=0x0000f598
Errors    : 1

I don't know what to do now..
Please help
 

Hi.
Did you solved this problem?
I'm asking because i have the same.
Regards
Jack
 

Are you doing a usb based project? If yes. I think the problem is with the buffer addresses. Did you check the address range for user data for your particular PIC?
 
  • Like
Reactions: dondu

    dondu

    Points: 2
    Helpful Answer Positive Rating
has anyone tried above thing and made a working .lkr file for PIC18F4550??...if so please can u post the working file here???
 

has anyone tried above thing and made a working .lkr file for PIC18F4550??...if so please can u post the working file here???

In any case with the latest MDD Framework, it will not work with PIC18F4550. As the size of the MDD exceeds the size of the PIC18F4550.
Change your controller or write yourself.
Or use mikroc with that compiler you can do so
 

I notice an increasing discussion at Microchip forum that MDD is a dead end and should be obsoleted by FATFS. I have implemented MDD in a PIC32 project where it serves it's purpose. The code is however helplessly long winded and it took quite a long time to get rid of serious bugs. I'd definitely steer clear of it in a new project.
 

well i need it only for temporary basis to show code running for my project so does anyone know which version MDD library supports PIC18F4550 IC??
i saw that microchip is having archive where older versions of library are there so i can download them .....
 

I last used the Microchip MDD library with a design based on the PIC18F4550 three or four years ago.

I utilized the PICDEM FS USB board, a SD card PICtail board along with the "Mass Storage - SD Card Reader - Firmware" demo as a template.

At that time, the required files from MDD File System only consisted of three source and three header files, shortly after that point the MDD File System seemed to gain a life of its own, quickly becoming incredibly convoluted or "long winded" as FvM described it.

Therefore, it is certainly doable, you might start with the 2011 versions and move to 2010 versions if need be. Also, download the PICDEMFSUSB demo installer and reference the USB Device - Mass Storage - SD Card reader demo. Several files including the linker file may need to be edited.

Although, I agree with FvM and would not recommend Mirochip's MDD for new designs.

Instead, today I typically port Chan's FatFs or Petit FatFs to the microcontroller be utilized in a design, FatFs or Petit FatFs are particularly easy to port, well documented and has a large following, including a support forum:

Chan's FatFs - Generic FAT File System Module

Chan's Petit FAT File System Module

BigDog
 

thanks for the reply well problem is that i have to work with microchip library as one student is already working with chan's library for his project .....i have downloaded a 2011 version but it also has same problem.....one thing i wanna clear is that i dont know much about linker files so i am using the file provided by xpress_embedo in his last post also making necessary changes in FSconfig.h file as indicated in the post ...i wanna know is that linker file correct ?? so i can start using older versions from one which i have downloaded...bcuaz if my linker file is not right then i might not get result for any library version........
 

Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top