summaryrefslogtreecommitdiff
path: root/digital
diff options
context:
space:
mode:
authorNélio Laranjeiro2009-07-13 15:54:03 +0200
committerNélio Laranjeiro2009-07-13 15:54:03 +0200
commit41813460998b22f7ea3ac35ae6f8f9cda3886ac9 (patch)
treea8f4ace3b99cad1cab1f8ba121515c9a6327f431 /digital
parentccbfefb674166ac5cd95d737a019c88d5a20d3a8 (diff)
*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.
Diffstat (limited to 'digital')
-rw-r--r--digital/avr/modules/flash/flash.c25
-rw-r--r--digital/avr/modules/flash/flash.h3
-rw-r--r--digital/avr/modules/flash/flash.host.c24
-rw-r--r--digital/avr/modules/flash/test/test-flash.c6
-rw-r--r--digital/avr/modules/trace/test/test-trace.c10
5 files changed, 46 insertions, 22 deletions
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. */