git-svn-id: svn://svn.berlios.de/openocd/trunk@1324 b42882b7-edfa-0310-969c-e2dbd0fdcd60tags/v0.1.0
@@ -1,101 +1,101 @@ | |||
# The IMX31PDK eval board has a single IMX31 chip | |||
source [find target/imx31.cfg] | |||
$_TARGETNAME configure -event gdb-attach { reset init } | |||
$_TARGETNAME configure -event reset-init { imx31pdk_init } | |||
proc imx31pdk_init { } { | |||
# This setup puts RAM at 0x80000000 | |||
# reset the board correctly | |||
reset run | |||
reset halt | |||
# ======================================== | |||
# Init CCM | |||
# ======================================== | |||
mww 0x53FC0000 0x040 | |||
mww 0x53F80000 0x074B0B7D | |||
sleep 100 | |||
# ======================================== | |||
# 399MHz - 26MHz input, PD=1,MFI=7, MFN=27, MFD=40 | |||
# ======================================== | |||
mww 0x53F80004 0xFF871D50 | |||
mww 0x53F80010 0x00271C1B | |||
# ======================================== | |||
# Configure CPLD on CS5 | |||
# ======================================== | |||
mww 0xb8002050 0x0000DCF6 | |||
mww 0xb8002054 0x444A4541 | |||
mww 0xb8002058 0x44443302 | |||
# ======================================== | |||
# SDCLK | |||
# ======================================== | |||
mww 0x43FAC26C 0 | |||
# ======================================== | |||
# CAS | |||
# ======================================== | |||
mww 0x43FAC270 0 | |||
# ======================================== | |||
# RAS | |||
# ======================================== | |||
mww 0x43FAC274 0 | |||
# ======================================== | |||
# CS2 (CSD0) | |||
# ======================================== | |||
mww 0x43FAC27C 0x1000 | |||
# ======================================== | |||
# DQM3 | |||
# ======================================== | |||
mww 0x43FAC284 0 | |||
# ======================================== | |||
# DQM2, DQM1, DQM0, SD31-SD0, A25-A0, MA10 (0x288..0x2DC) | |||
# ======================================== | |||
mww 0x43FAC288 0 | |||
mww 0x43FAC28C 0 | |||
mww 0x43FAC290 0 | |||
mww 0x43FAC294 0 | |||
mww 0x43FAC298 0 | |||
mww 0x43FAC29C 0 | |||
mww 0x43FAC2A0 0 | |||
mww 0x43FAC2A4 0 | |||
mww 0x43FAC2A8 0 | |||
mww 0x43FAC2AC 0 | |||
mww 0x43FAC2B0 0 | |||
mww 0x43FAC2B4 0 | |||
mww 0x43FAC2B8 0 | |||
mww 0x43FAC2BC 0 | |||
mww 0x43FAC2C0 0 | |||
mww 0x43FAC2C4 0 | |||
mww 0x43FAC2C8 0 | |||
mww 0x43FAC2CC 0 | |||
mww 0x43FAC2D0 0 | |||
mww 0x43FAC2D4 0 | |||
mww 0x43FAC2D8 0 | |||
mww 0x43FAC2DC 0 | |||
# ======================================== | |||
# Initialization script for 32 bit DDR on MX31 PDK | |||
# ======================================== | |||
mww 0xB8001010 0x00000004 | |||
mww 0xB8001004 0x006ac73a | |||
mww 0xB8001000 0x92100000 | |||
mww 0x80000f00 0x12344321 | |||
mww 0xB8001000 0xa2100000 | |||
mww 0x80000000 0x12344321 | |||
mww 0x80000000 0x12344321 | |||
mww 0xB8001000 0xb2100000 | |||
mwb 0x80000033 0xda | |||
mwb 0x81000000 0xff | |||
mww 0xB8001000 0x82226080 | |||
mww 0x80000000 0xDEADBEEF | |||
mww 0xB8001010 0x0000000c | |||
} | |||
# The IMX31PDK eval board has a single IMX31 chip | |||
source [find target/imx31.cfg] | |||
$_TARGETNAME configure -event gdb-attach { reset init } | |||
$_TARGETNAME configure -event reset-init { imx31pdk_init } | |||
proc imx31pdk_init { } { | |||
# This setup puts RAM at 0x80000000 | |||
# reset the board correctly | |||
reset run | |||
reset halt | |||
# ======================================== | |||
# Init CCM | |||
# ======================================== | |||
mww 0x53FC0000 0x040 | |||
mww 0x53F80000 0x074B0B7D | |||
sleep 100 | |||
# ======================================== | |||
# 399MHz - 26MHz input, PD=1,MFI=7, MFN=27, MFD=40 | |||
# ======================================== | |||
mww 0x53F80004 0xFF871D50 | |||
mww 0x53F80010 0x00271C1B | |||
# ======================================== | |||
# Configure CPLD on CS5 | |||
# ======================================== | |||
mww 0xb8002050 0x0000DCF6 | |||
mww 0xb8002054 0x444A4541 | |||
mww 0xb8002058 0x44443302 | |||
# ======================================== | |||
# SDCLK | |||
# ======================================== | |||
mww 0x43FAC26C 0 | |||
# ======================================== | |||
# CAS | |||
# ======================================== | |||
mww 0x43FAC270 0 | |||
# ======================================== | |||
# RAS | |||
# ======================================== | |||
mww 0x43FAC274 0 | |||
# ======================================== | |||
# CS2 (CSD0) | |||
# ======================================== | |||
mww 0x43FAC27C 0x1000 | |||
# ======================================== | |||
# DQM3 | |||
# ======================================== | |||
mww 0x43FAC284 0 | |||
# ======================================== | |||
# DQM2, DQM1, DQM0, SD31-SD0, A25-A0, MA10 (0x288..0x2DC) | |||
# ======================================== | |||
mww 0x43FAC288 0 | |||
mww 0x43FAC28C 0 | |||
mww 0x43FAC290 0 | |||
mww 0x43FAC294 0 | |||
mww 0x43FAC298 0 | |||
mww 0x43FAC29C 0 | |||
mww 0x43FAC2A0 0 | |||
mww 0x43FAC2A4 0 | |||
mww 0x43FAC2A8 0 | |||
mww 0x43FAC2AC 0 | |||
mww 0x43FAC2B0 0 | |||
mww 0x43FAC2B4 0 | |||
mww 0x43FAC2B8 0 | |||
mww 0x43FAC2BC 0 | |||
mww 0x43FAC2C0 0 | |||
mww 0x43FAC2C4 0 | |||
mww 0x43FAC2C8 0 | |||
mww 0x43FAC2CC 0 | |||
mww 0x43FAC2D0 0 | |||
mww 0x43FAC2D4 0 | |||
mww 0x43FAC2D8 0 | |||
mww 0x43FAC2DC 0 | |||
# ======================================== | |||
# Initialization script for 32 bit DDR on MX31 PDK | |||
# ======================================== | |||
mww 0xB8001010 0x00000004 | |||
mww 0xB8001004 0x006ac73a | |||
mww 0xB8001000 0x92100000 | |||
mww 0x80000f00 0x12344321 | |||
mww 0xB8001000 0xa2100000 | |||
mww 0x80000000 0x12344321 | |||
mww 0x80000000 0x12344321 | |||
mww 0xB8001000 0xb2100000 | |||
mwb 0x80000033 0xda | |||
mwb 0x81000000 0xff | |||
mww 0xB8001000 0x82226080 | |||
mww 0x80000000 0xDEADBEEF | |||
mww 0xB8001010 0x0000000c | |||
} |
@@ -1,42 +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 | |||
# 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 | |||
@@ -1,47 +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__ | |||
/* 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__ | |||
@@ -1,36 +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 | |||
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 | |||
@@ -1,18 +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) } | |||
} | |||
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) } | |||
} |
@@ -1,60 +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 */ | |||
/*************************************************************************** | |||
* 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 */ | |||
@@ -1,5 +1,5 @@ | |||
/*************************************************************************** | |||
* Copyright (C) 2009 by Alan Carvalho de Assis * | |||
* Copyright (C) 2009 by Alan Carvalho de Assis * | |||
* acassis@gmail.com * | |||
* * | |||
* This program is free software; you can redistribute it and/or modify * | |||