Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: FreescaleIAP SimpleDMA eeprom mbed-rtos mbed
Fork of CDMS_QM_03MAR2017_Flash_with_obsrs by
Diff: cdms_sd.h
- Revision:
- 195:6a549c0e9287
- Parent:
- 194:ab528911780d
- Child:
- 197:1369ef45b49e
diff -r ab528911780d -r 6a549c0e9287 cdms_sd.h
--- a/cdms_sd.h Wed Jun 29 14:24:12 2016 +0000
+++ b/cdms_sd.h Wed Jun 29 15:23:12 2016 +0000
@@ -57,7 +57,7 @@
static uint32_t ext_bits(unsigned char *, int , int );
int SD_WRITE(uint8_t*,uint32_t,uint8_t);
int FCTN_CDMS_SD_INIT();
-int SD_READ(uint8_t*,uint32_t,uint8_t);
+uint8_t SD_READ(uint8_t*,uint32_t,uint8_t);
#define SDCARD_FAIL 0
#define SDCARD_V1 1
#define SDCARD_V2 2
@@ -88,48 +88,37 @@
-uint32_t FCTN_SD_MNGR(uint8_t sid)
+void FCTN_SD_MNGR(void)
{
uint32_t fsc;
uint32_t start_fsc;
uint8_t buffer[512];
int b=disk_read(buffer, SD_MNG_SECT);
- if(sid==0x01)
- {
- fsc=(uint32_t)(buffer[0]<<24)+(uint32_t)(buffer[1]<<16)+(uint32_t)(buffer[2]<<8)+(uint32_t)buffer[3];
- start_fsc=(uint32_t)(buffer[4]<<24)+(uint32_t)(buffer[5]<<16)+(uint32_t)(buffer[6]<<8)+(uint32_t)buffer[7];
- FSC_CURRENT[1] = fsc;
- FSC_LAST[1] = start_fsc;
- }
- if(sid==0x02)
- {
- fsc=(uint32_t)(buffer[8]<<24)+(uint32_t)(buffer[9]<<16)+(uint32_t)(buffer[10]<<8)+(uint32_t)buffer[11];
- start_fsc=(uint32_t)(buffer[12]<<24)+(uint32_t)(buffer[13]<<16)+(uint32_t)(buffer[14]<<8)+(uint32_t)buffer[15];
- FSC_CURRENT[2] = fsc;
- FSC_LAST[2] = start_fsc;
- }
- if(sid==0x03)
- {
- fsc=(uint32_t)(buffer[16]<<24)+(uint32_t)(buffer[17]<<16)+(uint32_t)(buffer[18]<<8)+(uint32_t)buffer[19];
- start_fsc=(uint32_t)(buffer[20]<<24)+(uint32_t)(buffer[21]<<16)+(uint32_t)(buffer[22]<<8)+(uint32_t)buffer[23];
- FSC_CURRENT[3] = fsc;
- FSC_LAST[3] = start_fsc;
- }
- if(sid==0x04)
- {
- fsc=(uint32_t)(buffer[24]<<24)+(uint32_t)(buffer[25]<<16)+(uint32_t)(buffer[26]<<8)+(uint32_t)buffer[27];
- start_fsc=(uint32_t)(buffer[28]<<24)+(uint32_t)(buffer[29]<<16)+(uint32_t)(buffer[30]<<8)+(uint32_t)buffer[31];
- FSC_CURRENT[4] = fsc;
- FSC_LAST[4] = start_fsc;
- }
- if(sid==0x05)
- {
- fsc=(uint32_t)(buffer[32]<<24)+(uint32_t)(buffer[33]<<16)+(uint32_t)(buffer[34]<<8)+(uint32_t)buffer[35];
- start_fsc=(uint32_t)(buffer[36]<<24)+(uint32_t)(buffer[37]<<16)+(uint32_t)(buffer[38]<<8)+(uint32_t)buffer[39];
- FSC_CURRENT[5] = fsc;
- FSC_LAST[5] = start_fsc;
- }
- return fsc;
+
+ fsc=(uint32_t)(buffer[0]<<24)+(uint32_t)(buffer[1]<<16)+(uint32_t)(buffer[2]<<8)+(uint32_t)buffer[3];
+ start_fsc=(uint32_t)(buffer[4]<<24)+(uint32_t)(buffer[5]<<16)+(uint32_t)(buffer[6]<<8)+(uint32_t)buffer[7];
+ FSC_CURRENT[1] = fsc;
+ FSC_LAST[1] = start_fsc;
+
+ fsc=(uint32_t)(buffer[8]<<24)+(uint32_t)(buffer[9]<<16)+(uint32_t)(buffer[10]<<8)+(uint32_t)buffer[11];
+ start_fsc=(uint32_t)(buffer[12]<<24)+(uint32_t)(buffer[13]<<16)+(uint32_t)(buffer[14]<<8)+(uint32_t)buffer[15];
+ FSC_CURRENT[2] = fsc;
+ FSC_LAST[2] = start_fsc;
+
+ fsc=(uint32_t)(buffer[16]<<24)+(uint32_t)(buffer[17]<<16)+(uint32_t)(buffer[18]<<8)+(uint32_t)buffer[19];
+ start_fsc=(uint32_t)(buffer[20]<<24)+(uint32_t)(buffer[21]<<16)+(uint32_t)(buffer[22]<<8)+(uint32_t)buffer[23];
+ FSC_CURRENT[3] = fsc;
+ FSC_LAST[3] = start_fsc;
+
+ fsc=(uint32_t)(buffer[24]<<24)+(uint32_t)(buffer[25]<<16)+(uint32_t)(buffer[26]<<8)+(uint32_t)buffer[27];
+ start_fsc=(uint32_t)(buffer[28]<<24)+(uint32_t)(buffer[29]<<16)+(uint32_t)(buffer[30]<<8)+(uint32_t)buffer[31];
+ FSC_CURRENT[4] = fsc;
+ FSC_LAST[4] = start_fsc;
+
+ fsc=(uint32_t)(buffer[32]<<24)+(uint32_t)(buffer[33]<<16)+(uint32_t)(buffer[34]<<8)+(uint32_t)buffer[35];
+ start_fsc=(uint32_t)(buffer[36]<<24)+(uint32_t)(buffer[37]<<16)+(uint32_t)(buffer[38]<<8)+(uint32_t)buffer[39];
+ FSC_CURRENT[5] = fsc;
+ FSC_LAST[5] = start_fsc;
}
int INCREMENT_SD_LIB(uint8_t sid)
@@ -284,40 +273,61 @@
return 1;
}
-int SD_READ(uint8_t* buffer,uint32_t fsc,uint8_t sid)
+uint8_t SD_READ(uint8_t* buffer,uint32_t fsc,uint8_t sid)
{
+ FCTN_SD_MNGR();
+ if(SD_SW_EN_DS == 1)
+ return 0x89;
uint32_t block_number;
int result;
if(sid==0x01)
{
+ if(!(FSC_LAST[1]<=fsc && fsc<=FSC_CURRENT[1])){
+ return 0x86;
+ }
block_number=SD_SCP_FIRST + fsc;
result= disk_read(buffer,block_number);
}
else if(sid==0x02)
{
+ if(!(FSC_LAST[2]<=fsc && fsc<=FSC_CURRENT[2])){
+ return 0x86;
+ }
block_number=SD_SFF_AT_FIRST + fsc;
result= disk_read(buffer,block_number);
}
else if(sid==0x03)
{
+ if(!(FSC_LAST[3]<=fsc && fsc<=FSC_CURRENT[3])){
+ return 0x86;
+ }
block_number=SD_SFF_BT_FIRST + fsc;
result= disk_read(buffer,block_number);
}
else if(sid==0x04)
{
+ if(!(FSC_LAST[4]<=fsc && fsc<=FSC_CURRENT[4])){
+ return 0x86;
+ }
block_number=SD_HK_ARCH_FIRST + fsc;
result= disk_read(buffer,block_number);
}
else if(sid==0x05)
{
+ if(!(FSC_LAST[5]<=fsc && fsc<=FSC_CURRENT[5])){
+ return 0x86;
+ }
block_number=LOG_FIRST +fsc;
result= disk_read(buffer,block_number);
}
else
{
- return 1;
+ return 0x02;
}
- return result;
+ if(result == 0)
+ return 0xA0;
+ else
+ return 0x88;
}
@@ -576,11 +586,6 @@
return bits;
}
-int disk_initialize()
-{
-
-}
-
int disk_write(const uint8_t *buffer, uint64_t block_number)
{
