From 41813460998b22f7ea3ac35ae6f8f9cda3886ac9 Mon Sep 17 00:00:00 2001 From: NĂ©lio Laranjeiro Date: Mon, 13 Jul 2009 15:54:03 +0200 Subject: *tools/trace, digital/avr/modules/flash, digital/avr/modules/trace: * Added the flash host file support for simulator tests. * Removed in the python tool the memory space in double when receiving from the proto object. --- digital/avr/modules/flash/flash.c | 25 ++++++++++++++++++------- digital/avr/modules/flash/flash.h | 3 +++ digital/avr/modules/flash/flash.host.c | 24 +++++++++++++----------- digital/avr/modules/flash/test/test-flash.c | 6 +++++- digital/avr/modules/trace/test/test-trace.c | 10 +++++++--- 5 files changed, 46 insertions(+), 22 deletions(-) (limited to 'digital') diff --git a/digital/avr/modules/flash/flash.c b/digital/avr/modules/flash/flash.c index b8f9143c..e75df80c 100644 --- a/digital/avr/modules/flash/flash.c +++ b/digital/avr/modules/flash/flash.c @@ -47,19 +47,30 @@ flash_log (uint8_t size, uint8_t *args) && (args[4] <= sizeof(buf))) { flash_read_array (addr, buf, args[4]); + proto_send4b ('a', 0, addr >> 16, addr >> 8, addr); proto_send ('r', args[4], buf); - error = 0; } - else if (size == 4) + case FLASH_CMD_READ_BYTE: + if (size == 4) { proto_send1b ('r', flash_read (addr)); - error = 0; } - else - error = 2; break; - default: - return 3; + case FLASH_CMD_WRITE_BYTE: + if (size == 5) + { + proto_send1b ('w', args[4]); + flash_write (addr, args[4]); + } + break; + case FLASH_CMD_WRITE: + if ((size == 5) + && (args[4] <= sizeof(buf))) + { + flash_write_array (addr, buf, args[4]); + proto_send ('w', args[4], buf); + } + break; } return error; diff --git a/digital/avr/modules/flash/flash.h b/digital/avr/modules/flash/flash.h index ff4713db..1a24d59e 100644 --- a/digital/avr/modules/flash/flash.h +++ b/digital/avr/modules/flash/flash.h @@ -57,6 +57,9 @@ enum { FLASH_CMD_INIT, FLASH_CMD_READ, + FLASH_CMD_WRITE, + FLASH_CMD_READ_BYTE, + FLASH_CMD_WRITE_BYTE, FLASH_CMD_NB }; diff --git a/digital/avr/modules/flash/flash.host.c b/digital/avr/modules/flash/flash.host.c index 1d984f32..9b0666bf 100644 --- a/digital/avr/modules/flash/flash.host.c +++ b/digital/avr/modules/flash/flash.host.c @@ -161,7 +161,7 @@ flash_read (uint32_t addr) res = read (flash_global.file, &data, sizeof (uint8_t)); if (res == 0) - flash_global.status = 0; + flash_deactivate (); return data; } @@ -174,20 +174,22 @@ flash_read_array (uint32_t addr, uint8_t *buffer, uint32_t length) { if (flash_global.status) { - uint32_t nb; - int8_t res; - /* Set the stream to the position required. */ + uint8_t res; + uint8_t deactivate = 1; + + /* Set the stream to the position of address. */ res = lseek (flash_global.file, addr, SEEK_SET); - if (res == -1) + if (res == addr) { - flash_deactivate(); - return; - } + res = read (flash_global.file, buffer, length); + printf ("read: %d\n", res); - nb = read (flash_global.file, buffer, length); + if (res == length) + deactivate = 0x0; + } - if (nb != length) - flash_deactivate(); + if (deactivate == 0x1) + flash_deactivate (); } } diff --git a/digital/avr/modules/flash/test/test-flash.c b/digital/avr/modules/flash/test/test-flash.c index bbfcfd6a..99b12df2 100644 --- a/digital/avr/modules/flash/test/test-flash.c +++ b/digital/avr/modules/flash/test/test-flash.c @@ -92,7 +92,11 @@ proto_callback (uint8_t cmd, uint8_t size, uint8_t *args) proto_send1b ('f', status); break; default: - if (cmd == 'w' && size > 4) + if (cmd == 'l') + { + flash_log (size, args); + } + else if (cmd == 'w' && size > 4) { /* Write several bytes: * - 3b: address. diff --git a/digital/avr/modules/trace/test/test-trace.c b/digital/avr/modules/trace/test/test-trace.c index 7938103b..a4d1b0d4 100644 --- a/digital/avr/modules/trace/test/test-trace.c +++ b/digital/avr/modules/trace/test/test-trace.c @@ -42,6 +42,7 @@ flood (void) uint32_t addr; uint32_t count; + uint16_t id; uint32_t speed; uint32_t position; uint16_t acc; @@ -67,9 +68,12 @@ flood (void) arg1 = 1; arg2 = 2; arg3 = 3; - TRACE (TRACE_ASSERV__RIGHT_MOTOR, speed, position, acc); - TRACE (TRACE_ASSERV__LEFT_MOTOR, speed, position, acc); - TRACE (TRACE_IA__IA_CMD, arg1, arg2, arg3); + id = TRACE_ASSERV__RIGHT_MOTOR; + TRACE (id, speed, position, acc); + id = TRACE_ASSERV__LEFT_MOTOR; + TRACE (id, speed, position, acc); + id = TRACE_IA__IA_CMD; + TRACE (id, arg1, arg2, arg3); } /* Print the end of the address. */ -- cgit v1.2.3