From f05d72601f6f47318fd9a3cc3ca419f5266572ff Mon Sep 17 00:00:00 2001 From: NĂ©lio Laranjeiro Date: Fri, 28 Nov 2008 22:51:05 +0100 Subject: digital/avr/modules/trace: * Fix the trace_init since the modifications of the functions for the flash memory. * Update the unit tests. * Added the events enumerator generated from the example file in tools/trace/example and update the flood test to use real simulation of the TRACE module. --- .../avr/modules/trace/test/test_target/events.h | 36 ++++++++ digital/avr/modules/trace/test/test_target/flood.c | 99 ++++++++++++---------- .../modules/trace/test/test_target/test-trace.c | 60 ++++++++++++- 3 files changed, 147 insertions(+), 48 deletions(-) create mode 100644 digital/avr/modules/trace/test/test_target/events.h (limited to 'digital/avr/modules/trace/test/test_target') diff --git a/digital/avr/modules/trace/test/test_target/events.h b/digital/avr/modules/trace/test/test_target/events.h new file mode 100644 index 00000000..d5a972a1 --- /dev/null +++ b/digital/avr/modules/trace/test/test_target/events.h @@ -0,0 +1,36 @@ +#ifndef events_h +#define events_h +/* events_h */ +/* {{{ + * + * Copyright (C) 2008 APBTeam + * + * APBTeam: + * Web: http://apbteam.org/ + * Email: team AT apbteam DOT org + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * }}} */ + +enum events_t +{ + TRACE_ASSERV__RIGHT_MOTOR, + TRACE_ASSERV__LEFT_MOTOR, + TRACE_IA__IA_CMD, + TRACE_NB +}; + +#endif /* events_h */ diff --git a/digital/avr/modules/trace/test/test_target/flood.c b/digital/avr/modules/trace/test/test_target/flood.c index 2c601550..ba4bba8d 100644 --- a/digital/avr/modules/trace/test/test_target/flood.c +++ b/digital/avr/modules/trace/test/test_target/flood.c @@ -31,15 +31,20 @@ #include "modules/utils/byte.h" #include "modules/uart/uart.h" +#include "events.h" + void flood (void) { uint32_t addr; uint32_t count; - uint8_t val1; - uint16_t val2; - uint32_t val3; + uint32_t speed; + uint32_t position; + uint16_t acc; + uint16_t arg1; + uint16_t arg2; + uint32_t arg3; /* Initialise the trace module. */ trace_init (); @@ -52,10 +57,16 @@ flood (void) /* A little more than 3 memory sectors, a sector is 4 kbytes. */ for (count = 0; count < 2000; count ++) { - val1 = count; - val2 = count + 1; - val3 = count + 3; - TRACE (val1, val2, val3); + /* Right motor. */ + speed = count; + position = count + 1; + acc = count + 2; + arg1 = count; + arg2 = count + 1; + arg3 = count + 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); } /* Print the end of the address. */ @@ -73,47 +84,47 @@ proto_callback (uint8_t cmd, uint8_t size, uint8_t *args) switch (c (cmd, size)) { case c ('z', 0): - /* Reset */ - utils_reset (); - break; + /* Reset */ + utils_reset (); + break; case c ('e', 0): - /* Erase full */ - flash_erase (FLASH_ERASE_FULL, 0); - break; + /* Erase full */ + flash_erase (FLASH_ERASE_FULL, 0); + break; case c ('e', 3): - /* Erase 4k: - * - 3b: address. */ - flash_erase (FLASH_ERASE_4K, addr); - break; + /* Erase 4k: + * - 3b: address. */ + flash_erase (FLASH_ERASE_4K, addr); + break; case c ('r', 3): - /* Read one byte: - * - 3b: address. */ - proto_send1b ('r', flash_read (addr)); - break; + /* Read one byte: + * - 3b: address. */ + proto_send1b ('r', flash_read (addr)); + break; case c ('r', 4): - /* Read several bytes: - * - 3b: address. - * - 1b: number of bytes. */ - if (args[3] > sizeof (buf)) - { - proto_send0 ('?'); - return; - } - else - { - flash_read_array (addr, buf, args[3]); - proto_send ('r', args[3], buf); - } - break; + /* Read several bytes: + * - 3b: address. + * - 1b: number of bytes. */ + if (args[3] > sizeof (buf)) + { + proto_send0 ('?'); + return; + } + else + { + flash_read_array (addr, buf, args[3]); + proto_send ('r', args[3], buf); + } + break; case c ('f', 0): - /* Flood the memory with 3 sectors. - */ - flood (); - break; + /* Flood the memory with 3 sectors. + */ + flood (); + break; default: - /* Error */ - proto_send0 ('?'); - return; + /* Error */ + proto_send0 ('?'); + return; } /* Acknowledge what has been done */ proto_send (cmd, size, args); @@ -125,6 +136,6 @@ main (void) uart0_init (); proto_send0 ('z'); - while (1) - proto_accept (uart0_getc ()); + while (1) + proto_accept (uart0_getc ()); } diff --git a/digital/avr/modules/trace/test/test_target/test-trace.c b/digital/avr/modules/trace/test/test_target/test-trace.c index 4b6eda19..4dbbebf4 100644 --- a/digital/avr/modules/trace/test/test_target/test-trace.c +++ b/digital/avr/modules/trace/test/test_target/test-trace.c @@ -22,6 +22,8 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * }}} */ +#define BUFFER_SIZE 128 + #include "common.h" #include "io.h" #include "modules/flash/flash.h" @@ -31,6 +33,51 @@ #include "modules/utils/byte.h" #include "modules/uart/uart.h" +void +flash_dump_full (void) +{ + uint8_t buffer [BUFFER_SIZE]; + uint32_t i; + uint8_t state; + + /* Initialise the flash memory to read .*/ + state = flash_init (); + proto_send1b ('s', state); + + if (state) + { + for (i = 0; i < FLASH_ADDRESS_HIGH + 1; + i += sizeof (buffer)) + { + flash_read_array (i, buffer, sizeof (buffer)); + proto_send ('r', sizeof(buffer), buffer); + } + } +} + + +void +flash_dump_sector (uint32_t addr) +{ + uint8_t buffer [BUFFER_SIZE]; + uint32_t i; + uint8_t state; + + /* Initialise the flash memory to read .*/ + state = flash_init (); + proto_send1b ('s', state); + + if (state) + { + for (i = FLASH_PAGE (addr); i < FLASH_PAGE (addr) + FLASH_PAGE_SIZE; + i += sizeof (buffer)) + { + flash_read_array (i, buffer, sizeof (buffer)); + proto_send ('r', sizeof(buffer), buffer); + } + } +} + void proto_callback (uint8_t cmd, uint8_t size, uint8_t *args) { @@ -60,6 +107,14 @@ proto_callback (uint8_t cmd, uint8_t size, uint8_t *args) addr = trace_addr_current (); proto_send3b ('a', addr >> 16, addr >> 8, addr); break; + case c ('d', 0): + /* Dump full memory. */ + flash_dump_full (); + break; + case c ('d', 3): + /* Dump a full sector. */ + flash_dump_sector (addr); + break; case c ('t', 2): /* Trace data: * - 1b: id. @@ -100,11 +155,8 @@ main (void) { uart0_init (); proto_send0 ('z'); - proto_send0 ('c'); - - proto_send1b ('o', sizeof (uint8_t)); while (1) - proto_accept (uart0_getc ()); + proto_accept (uart0_getc ()); } -- cgit v1.2.3