make data buffers global to get a better overview of SRAM usage during

compile time.
when detecting an error during Reading Blocks from the "WDC", respond only
with an error message - not with error+data
This commit is contained in:
Oliver Lehmann 2012-06-05 20:30:09 +00:00
parent 47fcd4b9cd
commit 8c8505b107
3 changed files with 16 additions and 15 deletions

View File

@ -1,7 +1,7 @@
/* /*
* P8000 WDC Emulator * P8000 WDC Emulator
* *
* $Id: wdc_if_p8000.c,v 1.2 2012/05/31 20:22:42 olivleh1 Exp $ * $Id: wdc_if_p8000.c,v 1.3 2012/06/05 20:30:09 olivleh1 Exp $
* *
*/ */
@ -112,11 +112,11 @@ void wdc_send_data ( uint8_t *buffer, uint16_t count )
void wdc_send_error() void wdc_send_error()
{ {
uint8_t data_buffer[1]; uint8_t buffer[1];
data_buffer[0] = 0x01; buffer[0] = 0x01;
wdc_write_data_to_p8k ( data_buffer wdc_write_data_to_p8k ( buffer
, 1 , 1
, INFO_STAT_ERROR , INFO_STAT_ERROR
); );

View File

@ -1,7 +1,7 @@
/* /*
* P8000 WDC Emulator * P8000 WDC Emulator
* *
* $Id: wdc_main.c,v 1.11 2012/06/05 19:46:26 olivleh1 Exp $ * $Id: wdc_main.c,v 1.12 2012/06/05 20:30:09 olivleh1 Exp $
* *
* TODO: - Different Errorcodes in the MMC layer (use defines) * TODO: - Different Errorcodes in the MMC layer (use defines)
* - errorchecking in several places * - errorchecking in several places
@ -49,8 +49,6 @@ main ( void )
uint16_t data_counter; uint16_t data_counter;
uint32_t blockno; uint32_t blockno;
uint8_t errorcode; uint8_t errorcode;
uint8_t data_buffer[4096];
uint8_t cmd_buffer[9];
uint8_t i8; uint8_t i8;
uint16_t i16; uint16_t i16;
#endif #endif
@ -115,7 +113,6 @@ main ( void )
if ( data_counter / 512 == 1 ) { if ( data_counter / 512 == 1 ) {
errorcode = wdc_write_sector ( blockno, data_buffer ); errorcode = wdc_write_sector ( blockno, data_buffer );
} else { } else {
uart_putc ( '#' );
errorcode = wdc_write_multiblock ( blockno, data_buffer, data_counter / 512 ); errorcode = wdc_write_multiblock ( blockno, data_buffer, data_counter / 512 );
} }
/* check if this really works - this must be used if the card does not support multiblock-access (there are some) /* check if this really works - this must be used if the card does not support multiblock-access (there are some)
@ -138,7 +135,6 @@ main ( void )
if ( data_counter / 512 == 1 ) { if ( data_counter / 512 == 1 ) {
errorcode = wdc_read_sector ( blockno, data_buffer ); errorcode = wdc_read_sector ( blockno, data_buffer );
} else { } else {
uart_putc ( '#' );
errorcode = wdc_read_multiblock ( blockno, data_buffer, data_counter / 512 ); errorcode = wdc_read_multiblock ( blockno, data_buffer, data_counter / 512 );
} }
/* check if this really works - this must be used if the card does not support multiblock-access (there are some) /* check if this really works - this must be used if the card does not support multiblock-access (there are some)
@ -148,11 +144,13 @@ main ( void )
blockno++; blockno++;
} }
*/ */
if ( errorcode ) if ( errorcode ) {
wdc_send_error(); wdc_send_error();
} else {
wdc_send_data ( data_buffer wdc_send_data ( data_buffer
, data_counter , data_counter
); );
}
break; break;
case CMD_WR_WDC_RAM: case CMD_WR_WDC_RAM:
@ -354,7 +352,6 @@ void atmega_setup ( void )
void measure_performance() void measure_performance()
{ {
uint32_t starttime; uint32_t starttime;
uint8_t data_buffer[4096];
uint32_t blockno = 0; uint32_t blockno = 0;
uint8_t numblocks = 4; uint8_t numblocks = 4;
uint8_t i8, errorcode; uint8_t i8, errorcode;

View File

@ -1,7 +1,7 @@
/* /*
* P8000 WDC Emulator * P8000 WDC Emulator
* *
* $Id: wdc_ram.h,v 1.2 2012/06/02 00:51:55 olivleh1 Exp $ * $Id: wdc_ram.h,v 1.3 2012/06/05 20:30:09 olivleh1 Exp $
* *
*/ */
@ -35,4 +35,8 @@ uint8_t wdc_get_hdd_sectors();
#define SIZE_PAR_WDC_PAR 80 #define SIZE_PAR_WDC_PAR 80
#define SIZE_PAR_WDC_BTT 125 #define SIZE_PAR_WDC_BTT 125
/* switched from local to global for keeping an eye on memory usage */
uint8_t data_buffer[4096];
uint8_t cmd_buffer[9];
#endif /* WDC_RAM_H_ */ #endif /* WDC_RAM_H_ */