diff --git a/tests/Makefile b/tests/Makefile index 24415e1c1..0df0403e1 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -6,7 +6,7 @@ MC1322X := .. COBJS := tests.o put.o # all of the target programs to build -TARGETS := blink-red blink-green blink-blue blink-white blink-allio uart1-loopback nvm-read nvm-write romimg +TARGETS := blink-red blink-green blink-blue blink-white blink-allio uart1-loopback nvm-read nvm-write romimg flasher include $(MC1322X)/Makefile.include diff --git a/tests/config.h b/tests/config.h index 1dafb0344..9ac55604a 100644 --- a/tests/config.h +++ b/tests/config.h @@ -23,4 +23,10 @@ #define DUMP_BASE 0x00000000 #define DUMP_LEN 0x00014000 +/* flasher */ +/* if both BOOT_OK and BOOT_SECURE are 0 then flash image will not be bootable */ +/* if both are 1 then flash image will be secure */ +#define BOOT_OK 1 +#define BOOT_SECURE 0 + #endif diff --git a/tests/flasher.c b/tests/flasher.c index cd7e9e393..5cbb75e02 100644 --- a/tests/flasher.c +++ b/tests/flasher.c @@ -1,29 +1,8 @@ -#define GPIO_FUNC_SEL0 0x80000018 /* GPIO 15 - 0; 2 bit blocks */ +#include +#include -#define BASE_UART1 0x80005000 -#define UART1_CON 0x80005000 -#define UART1_STAT 0x80005004 -#define UART1_DATA 0x80005008 -#define UR1CON 0x8000500c -#define UT1CON 0x80005010 -#define UART1_CTS 0x80005014 -#define UART1_BR 0x80005018 - -#define GPIO_PAD_DIR0 0x80000000 -#define GPIO_DATA0 0x80000008 - -#include "embedded_types.h" -#include "nvm.h" -#include "maca.h" - -#define reg(x) (*(volatile uint32_t *)(x)) - -#define DELAY 400000 - -/* if both BOOT_OK and BOOT_SECURE are 0 then flash image will not be bootable */ -/* if both are 1 then flash image will be secure */ -#define BOOT_OK 1 -#define BOOT_SECURE 0 +#include "tests.h" +#include "config.h" #define DEBUG 1 #if DEBUG @@ -40,16 +19,9 @@ #define dbg_put_hex32(...) #endif -const uint8_t hex[16]={'0','1','2','3','4','5','6','7', - '8','9','a','b','c','d','e','f'}; - uint8_t getc(void); void flushrx(void); -uint32_t to_u32(char *c); - -#include "isr.h" - -#define NBYTES 16 +uint32_t to_u32(volatile uint32_t *c); enum parse_states { SCAN_X, @@ -58,35 +30,18 @@ enum parse_states { MAX_STATE, }; -__attribute__ ((section ("startup"))) void main(void) { nvmType_t type=0; nvmErr_t err; volatile uint8_t c; - volatile uint32_t buf[NBYTES/4]; volatile uint32_t i; + volatile uint32_t buf[4]; volatile uint32_t len=0; volatile uint32_t state = SCAN_X; volatile uint32_t addr,data; - *(volatile uint32_t *)GPIO_PAD_DIR0 = 0x00000100; - - /* Restore UART regs. to default */ - /* in case there is still bootloader state leftover */ - reg(UART1_CON) = 0x0000c800; /* mask interrupts, 16 bit sample --- helps explain the baud rate */ - - /* INC = 767; MOD = 9999 works: 115200 @ 24 MHz 16 bit sample */ - #define INC 767 - #define MOD 9999 - reg(UART1_BR) = INC<<16 | MOD; - - /* see Section 11.5.1.2 Alternate Modes */ - /* you must enable the peripheral first BEFORE setting the function in GPIO_FUNC_SEL */ - /* From the datasheet: "The peripheral function will control operation of the pad IF */ - /* THE PERIPHERAL IS ENABLED. */ - reg(UART1_CON) = 0x00000003; /* enable receive and transmit */ - reg(GPIO_FUNC_SEL0) = ( (0x01 << (14*2)) | (0x01 << (15*2)) ); /* set GPIO15-14 to UART (UART1 TX and RX)*/ + uart_init(INC, MOD); vreg_init(); @@ -155,7 +110,7 @@ void main(void) { /* for OTAP */ for(i=0; i> 4]); - putc(hex[x & 15]); -} - -void put_hex16(uint16_t x) -{ - put_hex((x >> 8) & 0xFF); - put_hex((x) & 0xFF); -} - -void put_hex32(uint32_t x) -{ - put_hex((x >> 24) & 0xFF); - put_hex((x >> 16) & 0xFF); - put_hex((x >> 8) & 0xFF); - put_hex((x) & 0xFF); -} -