Difference between revisions of "MMC Card Reader Development"
Jump to navigation
Jump to search
Line 55: | Line 55: | ||
*stdio.h has no equivalent '''FRESULT''' | *stdio.h has no equivalent '''FRESULT''' | ||
|- | |- | ||
− | | Read || | + | | Read |
+ | | | ||
+ | size_t | ||
+ | [http://www.cplusplus.com/reference/clibrary/cstdio/fread/ fread] ( | ||
+ | void * ptr, | ||
+ | size_t size, | ||
+ | size_t count, | ||
+ | FILE * stream | ||
+ | ); | ||
+ | | | ||
+ | FRESULT | ||
+ | [http://elm-chan.org/fsw/ff/en/read.html f_read] ( | ||
+ | FIL* FileObject, /* Pointer to the file object structure */ | ||
+ | void* Buffer, /* Pointer to the buffer to store read data */ | ||
+ | UINT ByteToRead, /* Number of bytes to read */ | ||
+ | UINT* ByteRead /* Pointer to the variable to return number of bytes read */ | ||
+ | ); | ||
+ | | | ||
+ | *'''size_t''' matches '''ByteRead''' | ||
+ | *'''ptr''' matches '''Buffer''' | ||
+ | *'''count''' matches '''ByteToRead''' | ||
+ | *'''stream''' matches '''FileObject''' | ||
+ | *stdio.h has no equivalent '''FRESULT''' | ||
|- | |- | ||
− | | Write || | + | | Write |
+ | | | ||
+ | size_t | ||
+ | [http://www.cplusplus.com/reference/clibrary/cstdio/fwrite/ fwrite] ( | ||
+ | const void * ptr, | ||
+ | size_t size, | ||
+ | size_t count, | ||
+ | FILE * stream | ||
+ | ); | ||
+ | | | ||
+ | FRESULT | ||
+ | [http://elm-chan.org/fsw/ff/en/write.html f_write] ( | ||
+ | FIL* FileObject, /* Pointer to the file object structure */ | ||
+ | const void* Buffer, /* Pointer to the data to be written */ | ||
+ | UINT ByteToWrite, /* Number of bytes to write */ | ||
+ | UINT* ByteWritten /* Pointer to the variable to return number of bytes written */ | ||
+ | ); | ||
+ | | | ||
+ | *'''size_t''' matches '''ByteWritten''' | ||
+ | *'''ptr''' matches '''Buffer''' | ||
+ | *'''count''' matches '''ByteToWrite''' | ||
+ | *'''stream''' matches '''FileObject''' | ||
+ | *stdio.h has no equivalent '''FRESULT''' | ||
|- | |- | ||
− | | Close | | + | | Close |
− | + | | | |
− | | | + | int |
+ | [http://www.cplusplus.com/reference/clibrary/cstdio/fclose/ fclose] ( | ||
+ | FILE * stream | ||
+ | ); | ||
+ | | | ||
+ | FRESULT | ||
+ | [http://elm-chan.org/fsw/ff/en/close.html f_close] ( | ||
+ | FIL* FileObject /* Pointer to the file object structure */ | ||
+ | ); | ||
+ | | | ||
+ | *'''int''' matches '''FRESULT''' | ||
+ | *'''stream''' matches '''FileObject''' | ||
|- | |- | ||
|} | |} |
Revision as of 19:43, 25 August 2009
This wiki describes the development of the MMC Card Reader Project
Contents
Architecture
- See here for block diagram
Development Roadmap
Phase 1
- Create stdio.h wrapper for file system in freertos_posix
- Use existing I2C EEPROM driver for development
Phase 2
- Circuit design for interfacing MMC
Phase 3
- SPI driver for MMC
Phase 4
- Test for normal read/write function
- hotswap (should not hang or cause voltage dip)
- multiple file read/write (protection)
Circuit and PCB
- SD Card connector
- SPI interface to main board
Software Implementation
- Use FatFs for accessing FAT16 file system.
- Create a stdio.h wrapper for freertos_posix
Comparison of FatFs and stdio API
- selected list is described below
Function | stdio.h | FatFs | Remarks |
---|---|---|---|
Open |
FILE * fopen ( const char * filename, const char * mode ); |
FRESULT f_open ( FIL* FileObject, /* Pointer to the blank file object structure */ const XCHAR* FileName, /* Pointer to the file neme */ BYTE ModeFlags /* Mode flags */ ); |
|
Read |
size_t fread ( void * ptr, size_t size, size_t count, FILE * stream ); |
FRESULT f_read ( FIL* FileObject, /* Pointer to the file object structure */ void* Buffer, /* Pointer to the buffer to store read data */ UINT ByteToRead, /* Number of bytes to read */ UINT* ByteRead /* Pointer to the variable to return number of bytes read */ ); |
|
Write |
size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream ); |
FRESULT f_write ( FIL* FileObject, /* Pointer to the file object structure */ const void* Buffer, /* Pointer to the data to be written */ UINT ByteToWrite, /* Number of bytes to write */ UINT* ByteWritten /* Pointer to the variable to return number of bytes written */ ); |
|
Close |
int fclose ( FILE * stream ); |
FRESULT f_close ( FIL* FileObject /* Pointer to the file object structure */ ); |
|