# HG changeset patch # User Michael Spacefalcon # Date 1374814623 0 # Node ID b8f335553000eca56ffaee1d817d225084ef31ea # Parent 98f855e58c9fcfed3473a96d367b884bdc65ec06 pirexplore utility started diff -r 98f855e58c9f -r b8f335553000 target-utils/pirexplore/Makefile --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/target-utils/pirexplore/Makefile Fri Jul 26 04:57:03 2013 +0000 @@ -0,0 +1,31 @@ +CC= arm-elf-gcc +CFLAGS= -Os -fno-builtin +CPPFLAGS=-I../include +LD= arm-elf-ld +OBJCOPY=arm-elf-objcopy + +PROG= pirexplore +OBJS= crt0.o cmdtab.o main.o mygetchar.o +LIBS= ../libcommon/libcommon.a ../libprintf/libprintf.a +LDS= ../env/iram.lds + +TC_LIBS=`${CC} -print-file-name=libc.a` \ + `${CC} -print-file-name=libgcc.a` + +all: ${PROG}.srec + +crt0.S: ../env/crt0.S + ln -s $< . + +${PROG}.elf: ${OBJS} ${LIBS} ${LDS} + ${LD} -N --defsym stack_bottom=0x87FFFC -T ${LDS} -o $@ ${OBJS} \ + --start-group ${LIBS} --end-group \ + --start-group ${TC_LIBS} --end-group + +${PROG}.srec: ${PROG}.elf + ${OBJCOPY} -O srec --srec-forceS3 --srec-len=30 $< $@ + +clean: + rm -f *.o *errs *core *.elf *.bin *.srec crt0.S + +FRC: diff -r 98f855e58c9f -r b8f335553000 target-utils/pirexplore/cmdtab.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/target-utils/pirexplore/cmdtab.c Fri Jul 26 04:57:03 2013 +0000 @@ -0,0 +1,22 @@ +#include "cmdtab.h" + +extern void cmd_baud_switch(); +extern void cmd_jump(); +extern void cmd_r8(); +extern void cmd_r16(); +extern void cmd_r32(); +extern void cmd_w8(); +extern void cmd_w16(); +extern void cmd_w32(); + +const struct cmdtab cmdtab[] = { + {"baud", cmd_baud_switch}, + {"jump", cmd_jump}, + {"r8", cmd_r8}, + {"r16", cmd_r16}, + {"r32", cmd_r32}, + {"w8", cmd_w8}, + {"w16", cmd_w16}, + {"w32", cmd_w32}, + {0, 0} +}; diff -r 98f855e58c9f -r b8f335553000 target-utils/pirexplore/main.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/target-utils/pirexplore/main.c Fri Jul 26 04:57:03 2013 +0000 @@ -0,0 +1,21 @@ +#include "types.h" +#include "romvars.h" + +extern struct boot_rom_vars rom_vars; + +extern char *uart_name; + +main() +{ + uart_select_init(); + printf("Pirelli hardware exploration utility running\n"); + printf("Loaded via UART %d (%s) at baud rate #%d\n", rom_vars.uart_id, + uart_name, rom_vars.baud_rate_code); + printf("TCXO clock input autodetected to be %d MHz\n", + rom_vars.clktcxo_13mhz ? 13 : 26); + for (;;) { + putchar('='); + if (command_entry()) + command_dispatch(); + } +} diff -r 98f855e58c9f -r b8f335553000 target-utils/pirexplore/mygetchar.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/target-utils/pirexplore/mygetchar.c Fri Jul 26 04:57:03 2013 +0000 @@ -0,0 +1,21 @@ +/* + * The interactive command entry (editing) function in libcommon + * will call mygetchar() for its character input. It is supposed + * to be a blocking wait for input, but in some programs other + * processing can be done while waiting - for example, check for + * keypad presses as well. This is the basic version which waits + * for serial input and nothing else. + */ + +extern int serial_in_poll(); + +int +mygetchar() +{ + register int c; + + do + c = serial_in_poll(); + while (c < 0); + return c; +}