Skip to content
Snippets Groups Projects
Commit 7d3787d4 authored by chayrai's avatar chayrai
Browse files

avancee systeme de fichiers pour carte mere

parent ee403771
Branches
No related tags found
No related merge requests found
...@@ -6,7 +6,7 @@ export TARGET_ARCH = -mmcu=$(MCU) ...@@ -6,7 +6,7 @@ export TARGET_ARCH = -mmcu=$(MCU)
export CFLAGS = -Wall -I. -DF_CPU=16000000 -Os -DDEBUG -DTEST_WRITE -DTEST_READ #-g export CFLAGS = -Wall -I. -DF_CPU=16000000 -Os -DDEBUG -DTEST_WRITE -DTEST_READ #-g
export LDFLAGS = -g $(TARGET_ARCH) -lm -Wl,--gc-sections # -Os export LDFLAGS = -g $(TARGET_ARCH) -lm -Wl,--gc-sections # -Os
TARGET = fileSystem TARGET = picofs
TERM = /dev/ttyUSB0 TERM = /dev/ttyUSB0
CPPFLAGS = -mmcu=$(MCU) CPPFLAGS = -mmcu=$(MCU)
PGMER = -c stk500v1 -b 57600 -P $(TERM) PGMER = -c stk500v1 -b 57600 -P $(TERM)
......
...@@ -294,7 +294,7 @@ info->partialBlockRead_ = value; ...@@ -294,7 +294,7 @@ info->partialBlockRead_ = value;
*/ */
uint8_t readData(SD_info *info, uint32_t block, uint16_t offset, uint16_t count, uint8_t* dst) { uint8_t readData(SD_info *info, uint32_t block, uint16_t offset, uint16_t count, uint8_t* dst) {
if(count==0) return true; if(count==0) return true;
if((count+offset)>512){ goto fail; } if((count+offset)>256){ goto fail; }
if(!info->inBlock_||block!=info->block_||offset<info->offset_){ if(!info->inBlock_||block!=info->block_||offset<info->offset_){
info->block_=block; info->block_=block;
// use address if not SDHC card // use address if not SDHC card
...@@ -315,7 +315,7 @@ uint16_t i; ...@@ -315,7 +315,7 @@ uint16_t i;
for(i=0;i<count;i++) dst[i]=spi_exch(0xff); for(i=0;i<count;i++) dst[i]=spi_exch(0xff);
info->offset_ += count; info->offset_ += count;
if(!info->partialBlockRead_||info->offset_>=512){ if(!info->partialBlockRead_||info->offset_>=256){
// read rest of data, checksum and set chip select high // read rest of data, checksum and set chip select high
readEnd(info); readEnd(info);
} }
...@@ -336,8 +336,8 @@ return false; ...@@ -336,8 +336,8 @@ return false;
* \return The value one, true, is returned for success and * \return The value one, true, is returned for success and
* the value zero, false, is returned for failure. * the value zero, false, is returned for failure.
*/ */
uint8_t readBlock(SD_info *info, uint32_t block, uint8_t* dst) { uint8_t readBlockSD(SD_info *info, uint32_t block, uint8_t* dst) {
return readData(info, block, 0, 512, dst); return readData(info, block, 0, 256, dst);
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
...@@ -345,7 +345,7 @@ return readData(info, block, 0, 512, dst); ...@@ -345,7 +345,7 @@ return readData(info, block, 0, 512, dst);
static uint8_t writeData_(SD_info *info, uint8_t token, const uint8_t* src) { static uint8_t writeData_(SD_info *info, uint8_t token, const uint8_t* src) {
spi_exch(token); spi_exch(token);
uint16_t i; uint16_t i;
for(i=0;i<512;i++) spi_exch(src[i]); for(i=0;i<256;i++) spi_exch(src[i]);
spi_exch(0xff); // dummy crc spi_exch(0xff); // dummy crc
spi_exch(0xff); // dummy crc spi_exch(0xff); // dummy crc
info->status_=spi_exch(0xff); info->status_=spi_exch(0xff);
...@@ -378,7 +378,7 @@ return writeData_(info, WRITE_MULTIPLE_TOKEN, src); ...@@ -378,7 +378,7 @@ return writeData_(info, WRITE_MULTIPLE_TOKEN, src);
* \return The value one, true, is returned for success and * \return The value one, true, is returned for success and
* the value zero, false, is returned for failure. * the value zero, false, is returned for failure.
*/ */
uint8_t writeBlock(SD_info *info, uint32_t blockNumber, const uint8_t* src) { uint8_t writeBlockSD(SD_info *info, uint32_t blockNumber, const uint8_t* src) {
// use address if not SDHC card // use address if not SDHC card
if(info->type_!=SD_CARD_TYPE_SDHC) blockNumber <<= 9; if(info->type_!=SD_CARD_TYPE_SDHC) blockNumber <<= 9;
if(cardCommand(info, CMD24, blockNumber)){ if(cardCommand(info, CMD24, blockNumber)){
......
...@@ -68,8 +68,8 @@ uint8_t erase(SD_info *info, uint32_t firstBlock, uint32_t lastBlock); ...@@ -68,8 +68,8 @@ uint8_t erase(SD_info *info, uint32_t firstBlock, uint32_t lastBlock);
uint8_t sd_init(SD_info *info); uint8_t sd_init(SD_info *info);
void partialBlockRead(SD_info *info, uint8_t value); void partialBlockRead(SD_info *info, uint8_t value);
uint8_t readData(SD_info *info, uint32_t block, uint16_t offset, uint16_t count, uint8_t* dst); uint8_t readData(SD_info *info, uint32_t block, uint16_t offset, uint16_t count, uint8_t* dst);
uint8_t readBlock(SD_info *info, uint32_t block, uint8_t* dst); uint8_t readBlockSD(SD_info *info, uint32_t block, uint8_t* dst);
uint8_t writeData(SD_info *info, const uint8_t* src); uint8_t writeData(SD_info *info, const uint8_t* src);
uint8_t writeBlock(SD_info *info, uint32_t blockNumber, const uint8_t* src); uint8_t writeBlockSD(SD_info *info, uint32_t blockNumber, const uint8_t* src);
uint8_t writeStart(SD_info *info, uint32_t blockNumber, uint32_t eraseCount); uint8_t writeStart(SD_info *info, uint32_t blockNumber, uint32_t eraseCount);
uint8_t writeStop(SD_info *info); uint8_t writeStop(SD_info *info);
This diff is collapsed.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment