Browse Source

Alan Carvalho de Assis <acassis@gmail.com> test app for imx27

git-svn-id: svn://svn.berlios.de/openocd/trunk@1323 b42882b7-edfa-0310-969c-e2dbd0fdcd60
tags/v0.1.0
oharboe 12 years ago
parent
commit
2e0f28149d
6 changed files with 203 additions and 0 deletions
  1. +42
    -0
      testing/examples/ledtest-imx27ads/Makefile
  2. +47
    -0
      testing/examples/ledtest-imx27ads/crt0.S
  3. +36
    -0
      testing/examples/ledtest-imx27ads/gdbinit-imx27ads
  4. +18
    -0
      testing/examples/ledtest-imx27ads/ldscript
  5. +60
    -0
      testing/examples/ledtest-imx27ads/test.c
  6. BIN
      testing/examples/ledtest-imx27ads/test.elf

+ 42
- 0
testing/examples/ledtest-imx27ads/Makefile View File

@@ -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

+ 47
- 0
testing/examples/ledtest-imx27ads/crt0.S View File

@@ -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__

+ 36
- 0
testing/examples/ledtest-imx27ads/gdbinit-imx27ads View File

@@ -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

+ 18
- 0
testing/examples/ledtest-imx27ads/ldscript View File

@@ -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) }
}

+ 60
- 0
testing/examples/ledtest-imx27ads/test.c View File

@@ -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 */

BIN
testing/examples/ledtest-imx27ads/test.elf View File


Loading…
Cancel
Save