diff options
Diffstat (limited to 'testing/examples')
-rw-r--r-- | testing/examples/ledtest-imx27ads/Makefile | 42 | ||||
-rw-r--r-- | testing/examples/ledtest-imx27ads/crt0.S | 47 | ||||
-rw-r--r-- | testing/examples/ledtest-imx27ads/gdbinit-imx27ads | 36 | ||||
-rw-r--r-- | testing/examples/ledtest-imx27ads/ldscript | 18 | ||||
-rw-r--r-- | testing/examples/ledtest-imx27ads/test.c | 60 | ||||
-rw-r--r-- | testing/examples/ledtest-imx27ads/test.elf | bin | 0 -> 35762 bytes |
6 files changed, 203 insertions, 0 deletions
diff --git a/testing/examples/ledtest-imx27ads/Makefile b/testing/examples/ledtest-imx27ads/Makefile new file mode 100644 index 00000000..42516492 --- /dev/null +++ b/testing/examples/ledtest-imx27ads/Makefile @@ -0,0 +1,42 @@ +# This will make the test program for a Freescale iMX27 ADS Board with a
+# FreeScale iMX27 CPU
+
+PROC=arm
+TYPE=926ejs-linux
+LDSCRIPT=ldscript
+
+PATH:=/opt/freescale/usr/local/gcc-4.1.1-glibc-2.4-nptl-sf-1/arm-926ejs-linux/bin/:$(PATH)
+CC=$(PROC)-$(TYPE)-gcc
+AS=$(PROC)-$(TYPE)-as
+AR=$(PROC)-$(TYPE)-ar
+LD=$(PROC)-$(TYPE)-ld
+NM=$(PROC)-$(TYPE)-nm
+OBJDUMP=$(PROC)-$(TYPE)-objdump
+CFLAGS= -g -c -mcpu=arm920t
+
+all: test.elf
+
+# Make a little endian image:
+# In Eclipse, add the line :
+# source gdbinit
+# to : Run -> Debug... (menu) -> Commands (tab): Commands (listbox)
+# To start gdb from a window use : arm-elf-gdb --command=gdbinit
+test.elf: test.c Makefile ldscript crt0.S
+ $(CC) $(CFLAGS) -o crt0.o crt0.S
+ $(CC) $(CFLAGS) -o test.o test.c
+ $(LD) -g -v -T$(LDSCRIPT) -o test.elf crt0.o test.o
+ $(NM) test.elf
+
+
+dump:
+ $(OBJDUMP) --all-headers test.elf
+
+dump_test:
+ $(OBJDUMP) --disassemble test.elf
+
+dump_full:
+ $(OBJDUMP) --full-contents test.elf
+
+clean:
+ -/bin/rm -f *.o *~ test.elf
+
diff --git a/testing/examples/ledtest-imx27ads/crt0.S b/testing/examples/ledtest-imx27ads/crt0.S new file mode 100644 index 00000000..6c15be21 --- /dev/null +++ b/testing/examples/ledtest-imx27ads/crt0.S @@ -0,0 +1,47 @@ +/* Sample initialization file */
+
+ .extern main
+ .extern exit
+
+/* .text is used instead of .section .text so it works with arm-aout too. */
+ .text
+ .code 32
+ .align 0
+
+ .global _mainCRTStartup
+ .global _start
+ .global start
+start:
+_start:
+_mainCRTStartup:
+
+/* Start by setting up a stack */
+ /* Set up the stack pointer to end of bss */
+ ldr r3, .LC2
+ mov sp, r3
+
+ sub sl, sp, #512 /* Still assumes 512 bytes below sl */
+
+ mov a2, #0 /* Second arg: fill value */
+ mov fp, a2 /* Null frame pointer */
+ mov r7, a2 /* Null frame pointer for Thumb */
+
+ ldr a1, .LC1 /* First arg: start of memory block */
+ ldr a3, .LC2 /* Second arg: end of memory block */
+ sub a3, a3, a1 /* Third arg: length of block */
+
+ mov r0, #0 /* no arguments */
+ mov r1, #0 /* no argv either */
+
+ bl main
+ bl exit /* Should not return */
+
+ /* For Thumb, constants must be after the code since only
+ positive offsets are supported for PC relative addresses. */
+
+ .align 0
+.LC1:
+ .word __bss_start__
+.LC2:
+ .word __bss_end__
+
diff --git a/testing/examples/ledtest-imx27ads/gdbinit-imx27ads b/testing/examples/ledtest-imx27ads/gdbinit-imx27ads new file mode 100644 index 00000000..44758cf1 --- /dev/null +++ b/testing/examples/ledtest-imx27ads/gdbinit-imx27ads @@ -0,0 +1,36 @@ +echo Script to load ledtest on iMX27ADS.\n
+
+# Note: you need to startup openocd with "-f board/imx27ads.cfg"
+# in order to it initialize RAM memory.
+
+# SETUP GDB :
+#
+# Common gdb setup for ARM CPUs
+set complaints 1
+set output-radix 10
+set input-radix 10
+set prompt (arm-gdb)
+set endian little
+dir .
+
+# CONNECT TO TARGET :
+target remote 127.0.0.1:3333
+
+# LOAD IMAGE :
+#
+
+# Load the program executable called "u-boot"
+load test.elf
+
+# Load the symbols for the program.
+symbol-file test.elf
+
+# RUN TO MAIN :
+#
+# Set a breakpoint at main().
+#b reset
+b main
+
+# Run to the breakpoint.
+c
+
diff --git a/testing/examples/ledtest-imx27ads/ldscript b/testing/examples/ledtest-imx27ads/ldscript new file mode 100644 index 00000000..39cf7684 --- /dev/null +++ b/testing/examples/ledtest-imx27ads/ldscript @@ -0,0 +1,18 @@ +SECTIONS
+{
+ . = 0xA0000000;
+ .text : { *(.text) }
+ .data ALIGN(0x10): { *(.data) }
+ .bss ALIGN(0x10): {
+ __bss_start__ = ABSOLUTE(.);
+ *(.bss)
+ . += 0x100;
+ }
+ __bss_end__ = .;
+PROVIDE (__stack = .);
+ _end = .;
+ .debug_info 0 : { *(.debug_info) }
+ .debug_abbrev 0 : { *(.debug_abbrev) }
+ .debug_line 0 : { *(.debug_line) }
+ .debug_frame 0 : { *(.debug_frame) }
+}
diff --git a/testing/examples/ledtest-imx27ads/test.c b/testing/examples/ledtest-imx27ads/test.c new file mode 100644 index 00000000..945778df --- /dev/null +++ b/testing/examples/ledtest-imx27ads/test.c @@ -0,0 +1,60 @@ +/***************************************************************************
+ * Copyright (C) 2009 by Alan Carvalho de Assis *
+ * acassis@gmail.com *
+ * *
+ * 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. *
+ ***************************************************************************/
+
+void delay()
+{
+ int i;
+ for (i = 0; i < 500000; i++);
+}
+
+/* MAIN ARM FUNTION */
+int main (void)
+{
+ int i;
+ volatile unsigned char *ledoff = ((volatile unsigned char *)0xD4000008);
+ volatile unsigned char *ledon = ((volatile unsigned char *)0xD400000C);
+
+ for (i = 0; i < 10000; i++)
+ {
+ *ledon = 0x30;
+ delay();
+ *ledoff = 0x30;
+ delay();
+ } /* FOR */
+
+} /* MAIN */
+
+__gccmain()
+{
+} /* GCCMAIN */
+
+
+void exit(int exit_code)
+{
+ while(1);
+} /* EXIT */
+
+
+atexit()
+{
+ while(1);
+} /* ATEXIT */
+
+
diff --git a/testing/examples/ledtest-imx27ads/test.elf b/testing/examples/ledtest-imx27ads/test.elf Binary files differnew file mode 100644 index 00000000..f65dcd63 --- /dev/null +++ b/testing/examples/ledtest-imx27ads/test.elf |