m5475evb FireEngine eval board, first steps
Wolfgang Rostek
Wolfgang.Rostek at esg.de
Wed Jul 21 12:10:02 UTC 2010
Hi all,
I'm looking for a hint to see why my eval board doesn't come up.
A custom 5475 board (Cobra) and its toolchain is running already.
It has RAM in the upper address range.
To make some reference tests I found a m5475evb FireEngine board
lieing around. It has dBUG running and I want to bring it up. RTEMS
seems to support it out of the box.
The point I'm blocked is that the initialization seems to run through
but the application code does not get invoked. The hello world from
test.c runs on my custom board but not on the eval board. It is not
giving any output and not even changing a memory location (see below).
But printk from RTEMS functions are visible.
Attached the modified pieces. May be there is an obvious error
showing up.
Thanks in advance
Wolfgang R.
################################################################
## in top level makefile for toolchain build
...
# target settings
RTEMS_ARCH=m68k
RTEMS_BSP=m5484FireEngine
##RTEMS_BSP=COBRA5475
...
################################################################
##
## ./gcc/rtems-4.10/c/src/lib/libbsp/m68k/genmcf548x/configure.ac
...
RTEMS_BSPOPTS_SET([HAS_DBUG],[COBRA5475],[1])
RTEMS_BSPOPTS_SET([HAS_DBUG],[*],[1])
##RTEMS_BSPOPTS_SET([HAS_DBUG],[*],[0])
...
## the following two lines make no difference in behaviour
##RTEMS_BSPOPTS_SET([HAS_LOW_LEVEL_INIT],[m5484FireEngine],[1])
RTEMS_BSPOPTS_SET([HAS_LOW_LEVEL_INIT],[*],[0])
...
################################################################
## /opt/Ada-rtems-4.10/m68k-rtems4.10/m5484FireEngine/lib/linkcmds
...
/*
* Location and size of on-chip devices
*/
_SdramBase = DEFINED(_SdramBase) ? _SdramBase : 0x00000000;
_SdramSize = DEFINED(_SdramSize) ? _SdramSize : (64 *
1024*1024);
_SysSramBase = DEFINED(_SysSramBase) ? _SysSramBase : __MBAR +
0x00010000;
_SysSramSize = DEFINED(_SysSramSize) ? _SysSramSize : (32 * 1024);
_McdapiBase = DEFINED(_McdapiBase) ? _McdapiBase : _SysSramBase;
_McdapiSize = DEFINED(_McdapiSize) ? _McdapiSize : (12 * 1024);
_CoreSramBase0 = DEFINED(_CoreSramBase0) ? _CoreSramBase0 : 0x20000000;
_CoreSramBase1 = DEFINED(_CoreSramBase1) ? _CoreSramBase1 : 0x20001000;
_CoreSramSize0 = DEFINED(_CoreSramSize0) ? _CoreSramSize0 : (4 * 1024);
_CoreSramSize1 = DEFINED(_CoreSramSize1) ? _CoreSramSize1 : (4 * 1024);
_BootFlashBase = DEFINED(_BootFlashBase) ? _BootFlashBase : 0xFF800000;
_BootFlashSize = DEFINED(_BootFlashSize) ? _BootFlashSize : (2 *
1024*1024);
_CodeFlashBase = DEFINED(_CodeFlashBase) ? _CodeFlashBase : 0xE0000000;
_CodeFlashSize = DEFINED(_CodeFlashSize) ? _CodeFlashSize : (16 *
1024*1024);
_VectorRam = DEFINED(_VectorRam) ? _VectorRam : _SdramBase;
_DataRam = DEFINED(_DataRam) ? _DataRam :
_data_dest_start;
_DataRom = DEFINED(_DataRom) ? _DataRom : _data_src_start;
_DataEnd = DEFINED(_DataEnd) ? _DataEnd : _data_dest_end;
_BssStart = DEFINED(_BssStart) ? _BssStart : _clear_start;
_BssEnd = DEFINED(_BssEnd) ? _BssEnd : _clear_end;
_SpInit = DEFINED(_SpInit) ? _SpInit :
_EndInitStackSpace;
_InitStackSize = DEFINED(StackSize) ? StackSize : 0x800; /* 2 kB
*/
_TopRamReserved = DEFINED(_TopRamReserved) ? _TopRamReserved : 0;
RamBase = DEFINED(_SdramBase) ? _SdramBase : _SdramBase;
RamSize = DEFINED(_SdramSize) ? _SdramSize : _SdramSize;
HeapSize = DEFINED(HeapSize) ? HeapSize : 0x0;
_VBR = DEFINED(_VBR) ? _VBR : RamBase;
__MBAR = DEFINED(__MBAR) ? __MBAR : 0x10000000;
ENTRY(start)
MEMORY
{
/*sdram : ORIGIN = 0x400 , LENGTH = 64M - 0x400*/
sdram : ORIGIN = 0x01000000 , LENGTH = 64M - 0x01000000
code_flash : ORIGIN = 0xE0000000, LENGTH = 16M
boot_flash : ORIGIN = 0xFF800000, LENGTH = 2M
}
...
################################################################
## mmap
## mmap EVB
dBUG>
External Reset
ColdFire MCF547X on the M5475EVB
Firmware v4a.1a.1d (Built on Jan 21 2007 22:28:09)
Copyright 1995-2007 Freescale Semiconductor, Inc.
Enter 'help' for help.
dBUG> mmap
Type Start End Port Size
---------------------------------------------------
SDRAM 0x00000000 0x03FFFFFF 32-bit
MBAR 0x10000000 0x1003FFFF 32-bit
System SRAM 0x10010000 0x10017FFF 32-bit
Core SRAM0 0x20000000 0x20000FFF 32-bit
Core SRAM1 0x20001000 0x20001FFF 32-bit
Code Flash 0xE0000000 0xE0FFFFFF 16-bit
Boot Flash 0xFF800000 0xFF9FFFFF 16-bit
Protected Start End
----------------------------------------
dBUG Code 0xFF800000 0xFF82FFFF
dBUG Data 0x00000000 0x0001FFFF
MCD API 0x10010000 0x10012FFF
Chip Selects
----------------
CS0 Boot Flash
CS1 Code Flash
## mmap Cobra
Type Start End Port Size
---------------------------------------------------
SDRAM 0xF0000000 0xF7FFFFFF 32-bit
MBAR 0xFE000000 0xFE03FFFF 32-bit
System SRAM 0xFE010000 0xFE017FFF 32-bit
Core SRAM0 0xFF000000 0xFF000FFF 32-bit
Core SRAM1 0xFF001000 0xFF001FFF 32-bit
Boot Flash 0xFC000000 0xFDFFFFFF 16-bit
VME Config 0xFE800000 0xFE800226 16-bit
Timer 0xFE880000 0xFE88000C 8-bit
VME Bus 0x00000000 0xBFFFFFFF 32-bit
VME Bus Sh. IO 0xFFFF0000 0xFFFFFFFF 32-bit
Protected Start End
----------------------------------------
dBUG Code 0xFC000000 0xFC095FFF
dBUG Data 0xF0000000 0xF001FFFF
MCD API 0xFE010000 0xFE012FFF
Chip Selects
----------------
CS0 Boot Flash
dBUG>
################################################################
## I come to this point visible in the console
## (launch multi-tasking)
## ./cpukit/score/src/threadstartmultitasking.c
void _Thread_Start_multitasking( void )
{
...
printk("_Context_Switch()...\n");
_Context_Switch( &_Thread_BSP_context, &_Thread_Heir->Registers );
}
################################################################
## ./test.c (0xadef is not set on the EVB board but works on Cobra)
## not any output visible
#include <bsp.h>
#include <stdlib.h>
#include <stdio.h>
#include <rtems/bspIo.h>
rtems_task Init(
rtems_task_argument ignored
)
{
/* make a memory entry to check after board reset */
*((volatile unsigned int *)0x00f00000) = 0xadef;
printf( "\n\n*** HELLO WORLD TEST ***\n" );
printf( "Hello World\n" );
printf( "*** END OF HELLO WORLD TEST ***\n" );
exit( 0 );
}
/* configuration information */
/* NOTICE: the clock driver is explicitly disabled */
#define CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER
#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
#define CONFIGURE_MAXIMUM_TASKS 1
#define CONFIGURE_MAXIMUM_SEMAPHORES 5
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
#define CONFIGURE_USE_MINIIMFS_AS_BASE_FILESYSTEM
#define CONFIGURE_INIT
#include <rtems/confdefs.h>
/* end of include file */
#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
#define CONFIGURE_MAXIMUM_TASKS 1
#define CONFIGURE_INIT
#include <rtems/confdefs.h>
/* end of file */
################################################################
## I'm not able to link to 0x400 as seen in the default linkcmds
## No idea why, used 0x01000000 instead
dBUG> md.l 0 600
00000000: 0001F840 00000400 FF812B12 FF812B12 ... at ......+...+.
00000010: FF812B12 FF812B12 FF812B12 FF812B12 ..+...+...+...+.
00000020: FF812B12 FF812B12 FF812B12 FF812B12 ..+...+...+...+.
00000030: FF812B12 FF812B12 FF812B12 FF812B12 ..+...+...+...+.
00000040: FF812B12 FF812B12 FF812B12 FF812B12 ..+...+...+...+.
...
000003F0: FF812C3E FF812C3E FF812C3E FF812C3E ..,>..,>..,>..,>
00000400: 2D5C7C2F 4D756C74 692D6368 616E6E65 -\|/Multi-channe
00000410: 6C20444D 41204150 4920416C 70686120 l DMA API Alpha
00000420: 76302E33 20283230 30342D30 342D3236 v0.3 (2004-04-26
00000430: 29000000 00000005 00000005 00000001 )...............
00000440: 00000001 00000001 00000001 00000001 ................
...
################################################################
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/users/attachments/20100721/cb7a5580/attachment.html>
More information about the users
mailing list