diff --git a/tests/Makefile b/tests/Makefile index ba4f1b533..b5a2c2ea7 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -11,7 +11,7 @@ TARGETS := blink-red blink-green blink-blue blink-white blink-allio \ nvm-read nvm-write romimg flasher \ tmr tmr-ints \ sleep \ - rftest-rx \ + rftest-rx rftest-tx \ include $(MC1322X)/Makefile.include diff --git a/tests/rftest-tx.c b/tests/rftest-tx.c index f36adbe37..117c6ff5e 100644 --- a/tests/rftest-tx.c +++ b/tests/rftest-tx.c @@ -1,54 +1,12 @@ -#define GPIO_FUNC_SEL0 0x80000018 /* GPIO 15 - 0; 2 bit blocks */ -#define GPIO_FUNC_SEL2 0x80000020 /* GPIO 47 - 32; 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 "maca.h" -#include "embedded_types.h" -#include "isr.h" - -#define reg(x) (*(volatile uint32_t *)(x)) +#include "tests.h" +#include "config.h" #define DELAY 100000 #define DATA 0x00401000; -#define NL "\033[K\r\n" - -void putc(uint8_t c); -void puts(uint8_t *s); -void put_hex(uint8_t x); -void put_hex16(uint16_t x); -void put_hex32(uint32_t x); - -const uint8_t hex[16]={'0','1','2','3','4','5','6','7', - '8','9','a','b','c','d','e','f'}; - -void magic(void) { -#define X 0x80009a000 -#define Y 0x80009a008 -#define VAL 0x0000f7df - volatile uint32_t x,y; - x = reg(X); /* get X */ - x &= 0xfffeffff; /* clear bit 16 */ - reg(X) = x; /* put it back */ - y = reg(Y); /* get Y */ - y |= VAL; /* or with the VAL */ - x = reg(X); /* get X again */ - x |= 16; /* or with 16 */ - reg(X) = x; /* put X back */ - reg(Y) = y; /* put Y back */ -} - uint32_t ackBox[10]; #define command_xcvr_rx() \ @@ -58,44 +16,25 @@ uint32_t ackBox[10]; maca_dmarx = DATA; \ maca_tmren = (maca_cpl_clk | maca_soft_clk); \ maca_control = (control_prm | control_asap | control_seq_rx); \ - }while(FALSE) + }while(0) #define PAYLOAD_LEN 16 /* not including the extra 4 bytes for len+fcs+somethingelse */ /* maca dmatx needs extra 4 bytes for checksum */ /* needs + 4 bytes for len(1 byte) + fcs(2 bytes) + somethingelse */ #define command_xcvr_tx() \ do { \ - maca_txlen = (uint32_t)(PAYLOAD_LEN+4); \ + maca_txlen = (uint32_t)(PAYLOAD_LEN+4); \ maca_dmatx = (uint32_t)DATA; \ maca_dmarx = (uint32_t)&ackBox; \ maca_control = (control_prm | control_mode_no_cca | \ control_asap | control_seq_tx); \ - }while(FALSE) + }while(0) - -void dump_regs(uint32_t base, uint32_t len) { - volatile uint32_t i; - - puts("base +0 +4 +8 +c +10 +14 +18 +1c \n\r"); - for (i = 0; i < len; i ++) { - if ((i & 7) == 0) { - put_hex16(4 * i); - } - puts(" "); - put_hex32(reg(base+(4*i))); - if ((i & 7) == 7) - puts(NL); - } - puts(NL); -} - volatile uint8_t led; - -#include "led.h" #define LED LED_RED -#define led_on() do { led = 1; reg(GPIO_DATA0) = LED; } while(0); -#define led_off() do { led = 0; reg(GPIO_DATA0) = 0x00000000; } while(0); +#define led_on() do { led = 1; *GPIO_DATA0 = LED; } while(0); +#define led_off() do { led = 0; *GPIO_DATA0 = 0x00000000; } while(0); void toggle_led(void) { if(0 == led) { @@ -116,33 +55,14 @@ void fill_data(void) { } } -__attribute__ ((section ("startup"))) void main(void) { - uint8_t c; volatile uint32_t i; - uint32_t tmp; uint16_t status; - *(volatile uint32_t *)GPIO_PAD_DIR0 = LED; + *GPIO_PAD_DIR0 = LED; led_on(); - /* 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); reset_maca(); radio_init(); @@ -153,37 +73,26 @@ void main(void) { set_power(0x0f); /* 0dbm */ set_channel(0); /* channel 11 */ - reg(MACA_CONTROL) = SMAC_MACA_CNTL_INIT_STATE; + *MACA_CONTROL = SMAC_MACA_CNTL_INIT_STATE; 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); -}