# HG changeset patch # User Mychaela Falconia # Date 1493574026 0 # Node ID dbb54db721d1dfe7459f5f41c2c7bf1fb6f41461 # Parent 47d56330609da8946c102ad1b3a3bbae27e37203 target-utils/flash-boot-test written diff -r 47d56330609d -r dbb54db721d1 target-utils/flash-boot-test/Makefile --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/target-utils/flash-boot-test/Makefile Sun Apr 30 17:40:26 2017 +0000 @@ -0,0 +1,33 @@ +CC= arm-elf-gcc +CFLAGS= -Os -fno-builtin +CPPFLAGS=-I../include +LD= arm-elf-ld +OBJCOPY=arm-elf-objcopy + +OBJS= vectors.o crt0.o cmdtab.o main.o mygetchar.o uartbase.o +LIBS= ../libcommon/libcommon.a ../libprintf/libprintf.a ../libbase/libbase.a \ + ../libc/libc.a +LIBGCC= `${CC} -print-file-name=libgcc.a` +LDS= ld.script + +all: fbt-mode0.bin fbt-mode1.bin + +crt0.S: ../env/crt0.S + ln -s $< . + +fbt-mode0.elf: ${OBJS} magic0.o ${LIBS} ${LDS} + ${LD} -N -T ${LDS} -o $@ ${OBJS} magic0.o ${LIBS} ${LIBGCC} + +fbt-mode0.bin: fbt-mode0.elf + ${OBJCOPY} -O binary $< $@ + +fbt-mode1.elf: ${OBJS} magic1.o ${LIBS} ${LDS} + ${LD} -N -T ${LDS} -o $@ ${OBJS} magic1.o ${LIBS} ${LIBGCC} + +fbt-mode1.bin: fbt-mode1.elf + ${OBJCOPY} -O binary $< $@ + +clean: + rm -f *.o *errs *core *.elf *.bin *.srec crt0.S + +FRC: diff -r 47d56330609d -r dbb54db721d1 target-utils/flash-boot-test/cmdtab.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/target-utils/flash-boot-test/cmdtab.c Sun Apr 30 17:40:26 2017 +0000 @@ -0,0 +1,32 @@ +#include "cmdtab.h" + +extern void cmd_abbr(); +extern void cmd_abbw(); +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(); + +extern void cmd_memdump_human(); + +extern void abb_init(); +extern void abb_power_off(); + +const struct cmdtab cmdtab[] = { + {"abbinit", abb_init}, + {"abbr", cmd_abbr}, + {"abbw", cmd_abbw}, + {"dump", cmd_memdump_human}, + {"jump", cmd_jump}, + {"poweroff", abb_power_off}, + {"r8", cmd_r8}, + {"r16", cmd_r16}, + {"r32", cmd_r32}, + {"w8", cmd_w8}, + {"w16", cmd_w16}, + {"w32", cmd_w32}, + {0, 0} +}; diff -r 47d56330609d -r dbb54db721d1 target-utils/flash-boot-test/ld.script --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/target-utils/flash-boot-test/ld.script Sun Apr 30 17:40:26 2017 +0000 @@ -0,0 +1,46 @@ +ENTRY(_entry) +SECTIONS +{ + /* flash boot */ + .vectors 0 : { + *(.vectors) + } + + .magic 0x2000 : { + *(.magic) + } + + /* main code */ + .text 0x4000 : { + /* regular code */ + *(.text*) + /* gcc voodoo */ + *(.glue_7t) *(.glue_7) *(.vfp11_veneer) *(.v4_bx) + . = ALIGN(4); + } + + /* read-only data */ + . = ALIGN(4); + .rodata : { + *(.rodata*) + } + + /* cannot have any initialized data */ + /DISCARD/ : { + *(.data) + } + + /* uninitialized data */ + .bss 0x83C000 (NOLOAD) : { + . = ALIGN(4); + __bss_start = .; + *(.bss) + } + . = ALIGN(4); + __bss_end = .; + /* end of image */ + _end = .; + PROVIDE(end = .); +} + +stack_bottom = 0x83FFFC; diff -r 47d56330609d -r dbb54db721d1 target-utils/flash-boot-test/magic0.S --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/target-utils/flash-boot-test/magic0.S Sun Apr 30 17:40:26 2017 +0000 @@ -0,0 +1,7 @@ + .section .magic,"ax",%progbits + .code 32 + + .globl _Magic_words +_Magic_words: + .word 0 + .word _entry diff -r 47d56330609d -r dbb54db721d1 target-utils/flash-boot-test/magic1.S --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/target-utils/flash-boot-test/magic1.S Sun Apr 30 17:40:26 2017 +0000 @@ -0,0 +1,6 @@ + .section .magic,"ax",%progbits + .code 32 + + .globl _Magic_words +_Magic_words: + .word 1 diff -r 47d56330609d -r dbb54db721d1 target-utils/flash-boot-test/main.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/target-utils/flash-boot-test/main.c Sun Apr 30 17:40:26 2017 +0000 @@ -0,0 +1,9 @@ +main() +{ + printf("\nFlash boot test program running\n"); + for (;;) { + putchar('='); + if (command_entry()) + command_dispatch(); + } +} diff -r 47d56330609d -r dbb54db721d1 target-utils/flash-boot-test/mygetchar.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/target-utils/flash-boot-test/mygetchar.c Sun Apr 30 17:40:26 2017 +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; +} diff -r 47d56330609d -r dbb54db721d1 target-utils/flash-boot-test/uartbase.S --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/target-utils/flash-boot-test/uartbase.S Sun Apr 30 17:40:26 2017 +0000 @@ -0,0 +1,5 @@ + .section .rodata + .balign 4 + .globl uart_base +uart_base: + .word 0xFFFF5000 diff -r 47d56330609d -r dbb54db721d1 target-utils/flash-boot-test/vectors.S --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/target-utils/flash-boot-test/vectors.S Sun Apr 30 17:40:26 2017 +0000 @@ -0,0 +1,13 @@ + .section .vectors,"ax",%progbits + .code 32 + + .globl _Reset_vector +_Reset_vector: + b _entry + b . + b . + b . + b . + b . + b . + b .