Add wasm tacle-bench targets

This commit is contained in:
2026-06-12 20:06:22 +02:00
parent 30daa8a00c
commit 08c2e9c13d
1122 changed files with 520422 additions and 0 deletions

View File

@ -0,0 +1,56 @@
echo off
Rem Batch file to compile debie1 using the GCC ARM
Rem compiler that came with the iF-DEV-LPC kit from iSYSTEM.
Rem setlocal
Rem Set tpd to the Test Program Directory:
set tpd=..\..
Rem Set hnd to the "harness" directory:
set hnd=%tpd%\harness
Rem Set ccd to the compiler config directory:
set ccd=%tpd%\..\arm7-lpc2138-mam\gcc-if07
call %ccd%\setup.bat
Rem Compile the test program modules:
%CC% %CCOPT% -I%ccd% -I. -I%hnd% %tpd%\class.c -o class.o
%CC% %CCOPT% -I%ccd% -I. -I%hnd% %tpd%\classtab.c -o classtab.o
%CC% %CCOPT% -I%ccd% -I. -I%hnd% %tpd%\debie.c -o debie.o
%CC% %CCOPT% -I%ccd% -I. -I%hnd% -I%tpd% %hnd%\harness.c -o harness.o
%CC% %CCOPT% -I%ccd% -I. -I%hnd% %tpd%\health.c -o health.o
%CC% %CCOPT% -I%ccd% -I. -I%hnd% %tpd%\hw_if.c -o hw_if.o
%CC% %CCOPT% -I%ccd% -I. -I%hnd% %tpd%\measure.c -o measure.o
%CC% %CCOPT% -I%ccd% -I. -I%hnd% -I%tpd% target.c -o target.o
%CC% %CCOPT% -I%ccd% -I. -I%hnd% %tpd%\tc_hand.c -o tc_hand.o
%CC% %CCOPT% -I%ccd% -I. -I%hnd% %tpd%\telem.c -o telem.o
Rem Compile the run-time support:
%CC% %ASOPT% %ccd%\crt0.s -o crt0.o
%CC% %ASOPT% %ccd%\intvec.s -o intvec.o
%CC% %CCOPT% %ccd%\crt_asyst.c -o crt_asyst.o
%CC% %CCOPT% -I%ccd% %ccd%\cpulib.c -o cpulib.o
Rem Link the program:
%LD% %LDOPT% ^
-Xlinker --output=debie1.elf ^
-Xlinker --script=%ccd%\link.txt ^
intvec.o crt0.o crt_asyst.o cpulib.o ^
class.o ^
classtab.o ^
debie.o ^
harness.o ^
health.o ^
hw_if.o ^
measure.o ^
target.o ^
tc_hand.o ^
telem.o
endlocal

View File

@ -0,0 +1,77 @@
/*
cpulib: Routines for CPU initialization and configuration.
Target : iSYSTEM LPC2138-M minitarget board (ARM7TDMI)
Source : iSYSTEM iF-DEV-LPC kit
Changes : Tidorum Ltd (N. Holsti)
$Id: cpulib.c,v 1.1 2008/04/08 09:44:55 niklas Exp $
*/
#include "cpulib.h"
void cpulib_init_cpu ( void )
{
// The MAM is assumed to be initialized in crt0.s.
// Turn off the LED:
IO0DIR |= IO_LED; // Set pin direction to output.
IO0SET |= IO_LED; // Set pin value to 1 = turn off LED.
}
void cpulib_go_fast ( unsigned int mode )
{
// Turn on PLL from 12 MHz to 60 MHz cclk:
PLLCFG = 0x24;
PLLCON = 0x1;
PLLFEED = 0xAA;
PLLFEED = 0x55;
while ( !( PLLSTAT & 0x400 ) ) {};
PLLCON = 0x3;
PLLFEED = 0xAA;
PLLFEED = 0x55;
}
void cpulib_set_led ( int state )
{
if ( state )
IO0CLR = IO_LED; // LED on.
else
IO0SET = IO_LED; // LED off.
}
static volatile int flash_timer;
/* Loop counter for timing flash_led. */
void cpulib_flash_led ( void )
{
cpulib_set_led ( 1 );
flash_timer = 10000;
while ( flash_timer > 0 ) flash_timer--;
cpulib_set_led ( 0 );
}
void cpulib_blink_led ( void )
{
cpulib_set_led ( 0 );
flash_timer = 30000;
while ( flash_timer > 0 ) flash_timer--;
cpulib_set_led ( 1 );
flash_timer = 10000;
while ( flash_timer > 0 ) flash_timer--;
cpulib_set_led ( 0 );
}

View File

@ -0,0 +1,51 @@
/*
cpulib: Routines for CPU initialization and configuration.
Target : iSYSTEM LPC2138-M minitarget board (ARM7TDMI)
Source : iSYSTEM iF-DEV-LPC kit
Changes : Tidorum Ltd (N. Holsti)
$Id: cpulib.h,v 1.1 2008/04/08 09:44:55 niklas Exp $
*/
#ifndef CPULIB_H
#define CPULIB_H
#define REG(x) (*((volatile unsigned int *)(x)))
#define IO0DIR REG(0xE0028008) // I/O direction control
#define IO0CLR REG(0xE002800C) // output clear
#define IO0SET REG(0xE0028004) // output set
#define PLLCFG REG(0xE01FC084) // PLL Config Reg.
#define PLLCON REG(0xE01FC080) // PLL Control Reg.
#define PLLFEED REG(0xE01FC08C) // PLL-Feed 0xAA, 0x55
#define PLLSTAT REG(0xE01FC088) // PLL-Status register
#define MAMCR REG(0xE01FC000) // MAM Control register
#define MAMTIM REG(0xE01FC004) // MAM Timing register
#define IO_LED 0x00000001
// The LED is connected to pin P0.0.
void cpulib_init_cpu ( void );
// Initializes the processor (in addition to crt0 actions).
// Defines the LED control pin (P0.0) as output and emits a "1"
// to turn off the LED.
void cpulib_go_fast ( unsigned int mode );
// Sets the PLL to run the processor at 60 MHz.
// Does not alter the MAM mode (because of the LPC2138 errata).
void cpulib_set_led ( int state );
// Turns the LED on if state != 0, off if state = 0.
void cpulib_flash_led ( void );
// Turns the LED on for a brief time, then off.
// Useful only if the LED is initially off.
void cpulib_blink_led ( void );
// Turns the LED off for short time, then on
// for a shorter time, then off again.
#endif

View File

@ -0,0 +1,53 @@
/* vector table section
* __ASYST_STACK_TOP is defined in lcf file
*/
.code 32
.extern __ASYST_STACK_TOP
/* startup
* initialize mode
* initialize stack pointer
* jump to __asyst_main in crt_asyst.c
*/
.section .text, "ax"
.global __asyst_start
__asyst_start:
mrs r0, cpsr
bic r0, r0, #0x1F /* clear mode flags */
orr r0, r0, #0x10 /* set user mode */
msr cpsr, r0
/* Initialize MAM to Mode 2, 7 cycles flash: */
ldr r0,_MAMCR
ldr r1,_MAMTIM
ldr r2,=0
str r2,[r0]
ldr r2,=7
str r2,[r1]
ldr r2,=2
str r2,[r0]
ldr sp,_Lstack_top
bl __asyst_main
/* constants */
_MAMCR:
.long 0xe01fc000 /* Address of MAM Control Register. */
_MAMTIM:
.long 0xe01fc004 /* Address of MAM Timing register. */
_Lstack_top:
.long __ASYST_STACK_TOP
.end

View File

@ -0,0 +1,99 @@
typedef unsigned char byte;
typedef unsigned int uint;
typedef void ( *pfunc )( void );
int main( int argc, char *argv[ ] );
extern byte __ASYST_DATA_LOAD[ ];
extern byte __ASYST_DATA_START[ ];
extern byte __ASYST_DATA_END[ ];
extern byte __ASYST_BSS_START[ ];
extern byte __ASYST_BSS_END[ ];
extern pfunc __ASYST_CTOR_START[ ];
extern pfunc __ASYST_CTOR_END[ ];
extern pfunc __ASYST_DTOR_START[ ];
extern pfunc __ASYST_DTOR_END[ ];
extern byte __ASYST_HEAP_START[ ];
#define __ASYST_IS_ALIGNED(P) ((((uint)(P)) & (~(sizeof(uint) -1))) == ((uint)(P)))
void __asyst_memset_byte( byte *pbyDest, byte byValue, uint uiSize )
{
byte *pbyDestLast = pbyDest + uiSize;
for ( ; pbyDest != pbyDestLast; pbyDest++ )
pbyDest[ 0 ] = byValue;
}
void __asyst_memset_uint( uint *puiDest, uint uiValue, uint uiSize )
{
uint *puiDestLast = puiDest + uiSize;
for ( ; puiDest != puiDestLast; puiDest++ )
puiDest[ 0 ] = uiValue;
}
void __asyst_memset( byte *pbyDest, byte byValue, uint uiSize )
{
if ( __ASYST_IS_ALIGNED( pbyDest ) &&
__ASYST_IS_ALIGNED( uiSize ) ) {
uint uiValue = 0;
__asyst_memset_byte( ( byte * )&uiValue, byValue, sizeof( uint ) );
return __asyst_memset_uint( ( uint * )pbyDest, uiValue,
uiSize / sizeof( uint ) );
} else
return __asyst_memset_byte( pbyDest, byValue, uiSize );
}
void *__asyst_memcpy_uint( uint *puiDest, const uint *puiSrc, uint uiSize )
{
uint *puiDestLast = puiDest + uiSize;
for ( ; puiDest != puiDestLast; puiSrc++, puiDest++ )
puiDest[ 0 ] = puiSrc[ 0 ];
return puiDestLast;
}
void *__asyst_memcpy_byte( byte *pbyDest, const byte *pbySrc, uint uiSize )
{
byte *pbyDestLast = pbyDest + uiSize;
for ( ; pbyDest != pbyDestLast; pbySrc++, pbyDest++ )
pbyDest[ 0 ] = pbySrc[ 0 ];
return pbyDestLast;
}
void *__asyst_memcpy( byte *pbyDest, const byte *pbySrc, uint uiSize )
{
if ( __ASYST_IS_ALIGNED( pbyDest ) &&
__ASYST_IS_ALIGNED( pbySrc ) &&
__ASYST_IS_ALIGNED( uiSize ) )
return __asyst_memcpy_uint( ( uint * )pbyDest, ( uint * )pbySrc,
uiSize / sizeof( uint ) );
else
return __asyst_memcpy_byte( pbyDest, pbySrc, uiSize );
}
void __asyst_main()
{
pfunc *pfTable;
// copy data
if ( __ASYST_DATA_START != __ASYST_DATA_LOAD )
__asyst_memcpy( __ASYST_DATA_START, __ASYST_DATA_LOAD,
__ASYST_DATA_END - __ASYST_DATA_START );
// zero bss
__asyst_memset( __ASYST_BSS_START, 0, __ASYST_BSS_END - __ASYST_BSS_START );
/* Not used in C project
// call constructors
for(pfTable=__ASYST_CTOR_END-1; pfTable!=__ASYST_CTOR_START; pfTable--)
pfTable[ 0 ]();
*/
// main
main( 0, 0 );
/* Not used in C project
// call destructors
//for(pfTable=__ASYST_DTOR_START; pfTable!=__ASYST_DTOR_END; pfTable++)
//pfTable[ 0 ]();
*/
while ( 1 );
}

View File

@ -0,0 +1,19 @@
.code 32
.section .vectors, "ax"
B __asyst_start /* RESET INTERRUPT */
B __DefaultHandler /* UNDEFINED INSTRUCTION INTERRUPT */
B __DefaultHandler /* SOFTWARE INTERRUPT */
B __DefaultHandler /* ABORT (PREFETCH) INTERRUPT */
B __DefaultHandler /* ABORT (DATA) INTERRUPT */
B __DefaultHandler /* RESERVED */
B __DefaultHandler /* IRQ INTERRUPT */
B __DefaultHandler /* FIQ INTERRUPT */
.text
__DefaultHandler:
b __DefaultHandler
.end

View File

@ -0,0 +1,173 @@
/*------------------------------------------------------------------------------
Copyright (C) 1998 : Space Systems Finland Ltd.
Space Systems Finland Ltd (SSF) allows you to use this version of
the DEBIE-I DPU software for the specific purpose and under the
specific conditions set forth in the Terms Of Use document enclosed
with or attached to this software. In particular, the software
remains the property of SSF and you must not distribute the software
to third parties without written and signed authorization from SSF.
System Name: DEBIE DPU SW
Subsystem : DNI (DEBIE Null Interface)
Module : keyword.h
Macro definitions for Keil specific keywords to be used
in portable parts of the DEBIE DPU software.
This version adapted to the GNU ARM compiler for the ARM7 as
delivered with the IF-DEV-LPC, no kernel.
Based on the SSF DHI file keyword.h, revision 1.9, Tue Mar 09 12:37:20 1999.
- * --------------------------------------------------------------------------
*/
#ifndef KEYWORD_H
#define KEYWORD_H
#include <string.h>
/* For memcpy (). */
/* Integer type definitions for native types that can hold integer
values of at least a given number of bits. These types are used
as loop counters to give the most natural and speedy code for
the current target. This is Not the C99 stdint.h, but the types
have similar names.
There is a particular form of this file for each (kind of) target
processor. The present form is for ARM7/GCC, where the widths of
the integer types are the following (as observed from the code of
the function Check_Type_Size in harness.c):
Type Octets Bits
char 1 8
short 2 16
int 4 32
long 4 32
This processor/compiler also has alignment concerns, so here we
define all telemetry data as octets and access it using memcpy()
instead of direct assignment.
*/
/* General types */
typedef int int_least8_t;
/* A signed integer covering at least -128 .. +127. */
typedef unsigned int uint_least8_t;
/* An unsigned integer covering at least 0 .. 255. */
typedef unsigned short uint16_t;
/* An unsigned 16-bit integer. */
typedef int int_least16_t;
/* A signed integer covering at least -2**15 .. +2**15 - 1. */
typedef unsigned int uint_least16_t;
/* An unsigned integer covering at least 0 .. 2**16 - 1. */
typedef uint16_t uskew16_t;
/* A 16-bit type, perhaps not an integer, perhaps not 16-bit aligned. */
/* If it is an integer type, it is unsigned. */
typedef unsigned int uint32_t;
/* An unsigned 32-bit integer. */
typedef uint32_t uskew32_t;
/* A 32-bit type, perhaps not an integer, perhaps not 32-bit aligned. */
/* If it is an integer type, it is unsigned. */
/* DEBIE-specific types */
typedef uint16_t data_address_t;
/* An address into external data memory. */
typedef uint16_t code_address_t;
/* An address into code memory. */
/* Macros for accessing the DPU data memory by numeric address. */
extern unsigned char *Data_Pointer ( uint16_t address );
#define DATA_POINTER(ADDR) Data_Pointer (ADDR)
/* Macros for accessing and copying multi-octet data. */
/* These may need target-specific adjustment if there are */
/* alignment restrictions on multi-octet integer values, */
/* because the operands in these macros may not be aligned */
/* in the required way. */
#define COPY(DEST,SOURCE) memcpy (&(DEST), &(SOURCE), sizeof(DEST))
/* Copies the value of SOURCE to the location DEST. */
extern unsigned short Short_Value ( uskew16_t *x );
#define VALUE_OF(SOURCE) Short_Value (&(SOURCE))
/* Returns the (integer) value of SOURCE, type uskew16_t. */
/* Macros for struct (aggregate) assignment. Some compilers */
/* may not support assignment statements for such types. */
#define STRUCT_ASSIGN(DEST,SOURCE,TYPE) DEST = SOURCE
/* Macros for calling "patch" functions */
typedef code_address_t fptr_t;
/* A function that is to be called after patching code memory. */
/* The function may or may not be part of the patched code. */
/* In the real SW this is "typedef void (*fptr_t)(void);" */
extern void Call_Patch ( fptr_t func );
/* "Call" the patch func. */
#define CALL_PATCH(FUNCTION) Call_Patch (FUNCTION)
/* Jump to the patched memory. */
/* Some macros for task and interrupt management */
#define TASK(TASK_NUMBER)
#define PRIORITY(LEVEL)
#define INTERRUPT(SOURCE)
#define USED_REG_BANK(BANK)
/* Macro for declaring re-entrant function */
#define REENTRANT_FUNC
/* Memory model handling macros */
#define COMPACT_DATA
#define COMPACT
#define PROGRAM
#define EXTERNAL
#define DIRECT_INTERNAL
#define INDIRECT_INTERNAL
#define LOCATION(ADDRESS)
/* Dealing with the benchmark target system */
#include "cpulib.h"
#define TARGET_INIT { \
cpulib_init_cpu (); \
cpulib_blink_led (); \
cpulib_go_fast (1); \
cpulib_blink_led (); }
#define TARGET_MARK { cpulib_flash_led (); }
#define TARGET_REBOOT { cpulib_blink_led (); }
#define TARGET_START_TEST { cpulib_blink_led (); cpulib_blink_led (); }
#define TARGET_REPEAT_TEST 1
#endif

View File

@ -0,0 +1,816 @@
Archive member included because of file (symbol)
c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a(_addsubdf3.o)
class.o (__adddf3)
c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a(_muldivdf3.o)
class.o (__muldf3)
c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a(_fixunsdfsi.o)
class.o (__fixunsdfsi)
c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a(_truncdfsf2.o)
class.o (__truncdfsf2)
c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a(_addsubsf3.o)
class.o (__addsf3)
c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a(_muldivsf3.o)
class.o (__mulsf3)
c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a(_cmpsf2.o)
class.o (__gtsf2)
c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2/../../../../arm-elf/lib\libc.a(lib_a-memcpy.o)
health.o (memcpy)
Allocating common symbols
Common symbol size file
event_queue 0x118 telem.o
science_data 0x63b4 telem.o
s_w_reset 0x4 hw_if.o
ADC_result 0xa measure.o
write_checksum 0x1 tc_hand.o
failed_data_address
0x2 hw_if.o
telemetry_data 0x84 telem.o
reference_checksum 0x1 hw_if.o
memory_mode 0x4 hw_if.o
telemetry_end_pointer
0x4 telem.o
free_slot_index 0x4 telem.o
TC_state 0x4 tc_hand.o
address_MSB 0x1 tc_hand.o
read_memory_checksum
0x1 telem.o
confirm_hit_result 0x1 measure.o
address_LSB 0x1 tc_hand.o
code_checksum 0x1 health.o
failed_code_address
0x2 hw_if.o
telemetry_pointer 0x4 telem.o
event_queue_length 0x4 telem.o
test_level 0x4 measure.o
memory_transfer_buffer
0x20 tc_hand.o
previous_TC 0x4 tc_hand.o
internal_time 0x4 health.o
TC_look_up 0x80 tc_hand.o
EA 0x1 harness.o
max_events 0x4 telem.o
test_channel 0x1 measure.o
forbidden_area 0x100 hw_if.o
memory_type 0x4 tc_hand.o
code_not_patched 0x1 hw_if.o
Memory Configuration
Name Origin Length Attributes
MEM_ROM_VECTORS 0x00000000 0x00000040
MEM_ROM 0x00000040 0x0007ffc0
MEM_RAM 0x40000000 0x00008000
*default* 0x00000000 0xffffffff
Linker script and memory map
LOAD c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2/../../../../arm-elf/lib\libc.a
LOAD c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2/../../../../arm-elf/lib\libnosys.a
0x40007ffc __ASYST_STACK_TOP = 0x40007ffc
0x00000000 __ASYST_HEAP_SIZE = 0x0
.vectors 0x00000000 0x20
*(.vectors)
.vectors 0x00000000 0x20 intvec.o
.text 0x00000040 0x8778
0x00000040 __ASYST_TEXT_START = .
*(.text)
.text 0x00000040 0x4 intvec.o
.text 0x00000044 0x44 crt0.o
0x00000044 __asyst_start
.text 0x00000088 0x198 crt_asyst.o
0x0000015c __asyst_memcpy_byte
0x00000088 __asyst_memset_byte
0x000000a8 __asyst_memset_uint
0x00000180 __asyst_memcpy
0x000001cc __asyst_main
0x00000134 __asyst_memcpy_uint
0x000000c8 __asyst_memset
.text 0x00000220 0x17c cpulib.o
0x00000244 cpulib_go_fast
0x00000314 cpulib_blink_led
0x000002c4 cpulib_flash_led
0x00000220 cpulib_init_cpu
0x0000029c cpulib_set_led
.text 0x0000039c 0x368 class.o
0x000004a0 CalculateQualityNumber
0x00000414 Init_SU_Settings
0x0000039c RoughLogarithm
0x00000458 InitClassification
0x000003c0 GetQualityTerm
0x00000584 ClassifyEvent
.text 0x00000704 0x0 classtab.o
.text 0x00000704 0x40 debie.o
0x00000704 main
.text 0x00000744 0x3518 harness.o
0x00000ab0 Set_AD_Delay
0x00000ec4 Enable_Hit_Trigger
0x0000076c DisableInterrupt
0x000008f8 Read_TC_MSB
0x00002b84 StartSystem
0x00000c8c End_Of_ADC
0x00000780 WaitInterrupt
0x00000eec Hit_Trigger_Flag
0x00000770 SetInterruptMask
0x00000784 SendTaskMail
0x00000ad4 Random_AD_Delay
0x00001b34 Monitor_Health
0x000011b4 Clear_Errors
0x00000a6c Next
0x00000d98 Set_DAC_Output
0x00000b7c Start_Conversion
0x00000b78 Update_ADC_Channel_Reg
0x00000f70 Set_Test_Pulse_Level
0x00000d68 Report_End_Of_ADC_Count
0x00000744 WaitInterval
0x00000928 Write_TM_MSB
0x00000918 Write_TM_LSB
0x000008f0 TestMemSeq
0x00000a90 Next_Rand
0x000008e0 TestMemBits
0x00000948 Clear_TC_Timer_Overflow_Flag
0x00000764 AttachInterrupt
0x00000750 ShortDelay
0x000007f4 WaitMail
0x00001088 Reboot
0x00000f3c Rise_Time_Counter
0x000008e8 TestMemData
0x00000efc Event_Flag
0x00000e0c Random_Event
0x00000f80 V_Down
0x000009b8 Set_AD_Nominal
0x00000d7c Get_Result
0x00000768 EnableInterrupt
0x00003c34 CreateTask
0x00000f1c Get_LSB1_Counter
0x00000fa8 Call_Patch
0x0000087c Check_Current
0x000007d4 isr_send_message
0x00000d9c Sim_Self_Test_Trigger
0x000013b0 TM_Tests
0x00000c78 Report_Start_Conversion_Count
0x0000095c Set_TC_Timer_Overflow_Flag
0x00003c1c Short_Value
0x00000908 Read_TC_LSB
0x00000fa4 SignalPeakDetectorReset
0x00000fac Check_Type_Size
0x00000970 Set_AD_Unlimited
0x00000f0c Get_MSB_Counter
0x00000f6c Set_SU_Self_Test_Ch
0x00001084 Report_Event_Histo
0x00001b70 SU_Self_Test_Tests
0x00000f2c Get_LSB2_Counter
0x00000ed8 Disable_Hit_Trigger
0x00000f4c Trigger_Source_0
0x00000938 TC_Timer_Overflow_Flag
0x00002748 Monitoring_Task_Tests
0x00000778 ResetInterruptMask
0x00000748 WaitTimeout
0x0000074c SetTimeSlice
0x00000f5c Trigger_Source_1
.text 0x00003c5c 0x1444 health.o
0x00003da4 UpdateTime
0x00004bb8 HighVoltageCurrent
0x00004040 Set_SU_TriggerLevels
0x00004b38 InitHealthMonitoring
0x00003d60 Set_SU_Error
0x000040a4 RestoreSettings
0x00004900 MeasureTemperature
0x00004640 Read_AD_Channel
0x000048fc DPU_SelfTest
0x00004e38 HandleHealthMonitoring
0x00003c5c Clear_RTX_Errors
0x00003dd4 VoltageFailure
0x00003c88 SetSoftwareError
0x00003dbc UpdatePeriodCounter
0x000043ac SelfTestChannel
0x00003d44 SetErrorStatus
0x00004854 Monitor_DPU_Voltage
0x00004e9c Boot
0x00004c34 SelfTest_SU
0x00003cd0 ClearModeStatusError
0x0000473c MeasureVoltage
0x00004c7c Monitor
0x00003ce8 SetMode
0x00004138 DelayAwhile
0x00003ca0 ClearSoftwareError
0x0000456c TemperatureFailure
0x00003ef8 ExceedsLimit
0x00003cb4 SetModeStatusError
0x00004e88 HealthMonitoringTask
0x000046fc DAC_SelfTest
0x000045a4 Convert_AD
0x00003d08 GetMode
0x00004ab0 InitSystem
0x00003d1c Clear_SU_Error
0x00003f20 Monitor_SU_Voltage
0x000049cc CalculateChecksum
0x000041b8 ExecuteChannelTest
0x00003d90 ClearErrorStatus
0x00004b50 LowVoltageCurrent
.text 0x000050a0 0x844 hw_if.o
0x000051f8 EnableAnalogSwitch
0x000052ac GetVoltageStatus
0x00005288 ResetPeakDetector
0x000053c8 Switch_SU_Off
0x000051cc DisableAnalogSwitch
0x000056ac CopyProgramCode
0x00005864 Init_DPU
0x00005260 SelectStartSwitchLevel
0x000050b8 SignalMemoryErrors
0x00005814 InitCode_RAM
0x000050a0 GetResetClass
0x000055bc PatchCode
0x00005148 SetMemoryConfiguration
0x000056f8 Check_RAM
0x000052d0 SetTestPulseLevel
0x000057b8 InitData_RAM
0x0000516c SelectSelfTestChannel
0x00005220 SelectTriggerSwitchLevel
0x0000557c ReadDelayCounters
0x000052d8 SetTriggerLevel
0x0000556c ReadRiseTimeCounter
0x00005498 Switch_SU_On
0x00005168 ResetDelayCounters
0x00005158 GetMemoryConfiguration
.text 0x000058e4 0x594 measure.o
0x00005c6c HandleHitTrigger
0x00005aac HandleAcquisition
0x00005c58 AcquisitionTask
0x000059f8 SetSensorUnitOff
0x000058e4 InitAcquisitionTask
0x00005e64 HitTriggerTask
0x00005a5c Start_SU_SwitchingOn
0x000059a4 Update_SU_State
0x00005e50 InitHitTriggerTask
0x0000590c Switch_SU_State
0x00005988 ReadSensorUnit
.text 0x00005e78 0x34 target.o
0x00005ea4 Get_Code_Byte
0x00005e8c Get_Data_Byte
0x00005e78 Data_Pointer
0x00005e88 Set_Data_Byte
.text 0x00005eac 0x13f8 tc_hand.o
0x00006068 Set_TC_Error
0x0000681c ExecuteCommand
0x00006184 UpdateTarget
0x00006ee8 TelecommandExecutionTask
0x00006c14 MemoryPatch
0x00006080 WriteMemory
0x00006da8 HandleTelecommand
0x00006028 PatchExecCommandOk
0x00005eac InitTC_LookUp
0x00006efc TC_InterruptService
0x0000612c InitTelecommandTask
.text 0x000072a4 0x46c telem.o
0x000075f4 TM_InterruptService
0x00007404 RecordEvent
0x000072f0 FindMinQualityRecord
0x000072a4 GetFreeRecord
0x000072d4 GetElapsedTime
0x0000738c IncrementCounters
0x000075e0 ResetEventQueueLength
0x000074fc ClearEvents
.text 0x00007710 0x400 c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a(_addsubdf3.o)
0x00007aa4 __floatdidf
0x00007a24 __floatsidf
0x000079fc __aeabi_ui2d
0x00007710 __aeabi_drsub
0x00007a50 __extendsfdf2
0x0000771c __adddf3
0x000079fc __floatunsidf
0x0000771c __aeabi_dadd
0x00007a90 __aeabi_ul2d
0x00007718 __aeabi_dsub
0x00007a90 __floatundidf
0x00007a24 __aeabi_i2d
0x00007aa4 __aeabi_l2d
0x00007a50 __aeabi_f2d
0x00007718 __subdf3
.text 0x00007b10 0x470 c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a(_muldivdf3.o)
0x00007d7c __aeabi_ddiv
0x00007b10 __aeabi_dmul
0x00007d7c __divdf3
0x00007b10 __muldf3
.text 0x00007f80 0x54 c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a(_fixunsdfsi.o)
0x00007f80 __fixunsdfsi
0x00007f80 __aeabi_d2uiz
.text 0x00007fd4 0xa0 c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a(_truncdfsf2.o)
0x00007fd4 __aeabi_d2f
0x00007fd4 __truncdfsf2
.text 0x00008074 0x2ac c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a(_addsubsf3.o)
0x00008080 __aeabi_fadd
0x0000807c __subsf3
0x00008244 __aeabi_i2f
0x0000807c __aeabi_fsub
0x00008274 __floatdisf
0x00008244 __floatsisf
0x00008264 __floatundisf
0x0000823c __aeabi_ui2f
0x00008274 __aeabi_l2f
0x00008264 __aeabi_ul2f
0x00008074 __aeabi_frsub
0x0000823c __floatunsisf
0x00008080 __addsf3
.text 0x00008320 0x2f8 c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a(_muldivsf3.o)
0x000084b8 __divsf3
0x000084b8 __aeabi_fdiv
0x00008320 __mulsf3
0x00008320 __aeabi_fmul
.text 0x00008618 0xf8 c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a(_cmpsf2.o)
0x000086fc __aeabi_fcmpgt
0x00008620 __lesf2
0x00008628 __nesf2
0x000086e8 __aeabi_fcmpge
0x00008618 __gtsf2
0x000086d4 __aeabi_fcmple
0x00008628 __eqsf2
0x00008628 __cmpsf2
0x00008620 __ltsf2
0x00008698 __aeabi_cfcmple
0x00008618 __gesf2
0x000086ac __aeabi_fcmpeq
0x00008688 __aeabi_cfrcmple
0x000086c0 __aeabi_fcmplt
0x00008698 __aeabi_cfcmpeq
.text 0x00008710 0xa8 c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2/../../../../arm-elf/lib\libc.a(lib_a-memcpy.o)
0x00008710 memcpy
*(.text.*)
*(.glue_7t)
.glue_7t 0x000087b8 0x0 intvec.o
.glue_7t 0x000087b8 0x0 crt0.o
.glue_7t 0x000087b8 0x0 crt_asyst.o
.glue_7t 0x000087b8 0x0 cpulib.o
.glue_7t 0x000087b8 0x0 class.o
.glue_7t 0x000087b8 0x0 classtab.o
.glue_7t 0x000087b8 0x0 debie.o
.glue_7t 0x000087b8 0x0 harness.o
.glue_7t 0x000087b8 0x0 health.o
.glue_7t 0x000087b8 0x0 hw_if.o
.glue_7t 0x000087b8 0x0 measure.o
.glue_7t 0x000087b8 0x0 target.o
.glue_7t 0x000087b8 0x0 tc_hand.o
.glue_7t 0x000087b8 0x0 telem.o
.glue_7t 0x000087b8 0x0 c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a(_addsubdf3.o)
.glue_7t 0x000087b8 0x0 c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a(_muldivdf3.o)
.glue_7t 0x000087b8 0x0 c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a(_fixunsdfsi.o)
.glue_7t 0x000087b8 0x0 c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a(_truncdfsf2.o)
.glue_7t 0x000087b8 0x0 c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a(_addsubsf3.o)
.glue_7t 0x000087b8 0x0 c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a(_muldivsf3.o)
.glue_7t 0x000087b8 0x0 c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a(_cmpsf2.o)
.glue_7t 0x000087b8 0x0 c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2/../../../../arm-elf/lib\libc.a(lib_a-memcpy.o)
*(.glue_7)
.glue_7 0x000087b8 0x0 intvec.o
.glue_7 0x000087b8 0x0 crt0.o
.glue_7 0x000087b8 0x0 crt_asyst.o
.glue_7 0x000087b8 0x0 cpulib.o
.glue_7 0x000087b8 0x0 class.o
.glue_7 0x000087b8 0x0 classtab.o
.glue_7 0x000087b8 0x0 debie.o
.glue_7 0x000087b8 0x0 harness.o
.glue_7 0x000087b8 0x0 health.o
.glue_7 0x000087b8 0x0 hw_if.o
.glue_7 0x000087b8 0x0 measure.o
.glue_7 0x000087b8 0x0 target.o
.glue_7 0x000087b8 0x0 tc_hand.o
.glue_7 0x000087b8 0x0 telem.o
.glue_7 0x000087b8 0x0 c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a(_addsubdf3.o)
.glue_7 0x000087b8 0x0 c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a(_muldivdf3.o)
.glue_7 0x000087b8 0x0 c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a(_fixunsdfsi.o)
.glue_7 0x000087b8 0x0 c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a(_truncdfsf2.o)
.glue_7 0x000087b8 0x0 c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a(_addsubsf3.o)
.glue_7 0x000087b8 0x0 c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a(_muldivsf3.o)
.glue_7 0x000087b8 0x0 c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a(_cmpsf2.o)
.glue_7 0x000087b8 0x0 c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2/../../../../arm-elf/lib\libc.a(lib_a-memcpy.o)
*(.init)
*(.fini)
*(.gnu.linkonce.t*)
0x000087b8 __ASYST_TEXT_END = .
0x000087b8 . = ALIGN (0x4)
0x000087b8 __ASYST_CTOR_START = .
*(.ctors)
0x000087b8 __ASYST_CTOR_END = .
0x000087b8 . = ALIGN (0x4)
0x000087b8 __ASYST_DTOR_START = .
*(.dtors)
0x000087b8 __ASYST_DTOR_END = .
.vfp11_veneer 0x00000000 0x0
.vfp11_veneer 0x00000000 0x0 intvec.o
.vfp11_veneer 0x00000000 0x0 crt0.o
.vfp11_veneer 0x00000000 0x0 crt_asyst.o
.vfp11_veneer 0x00000000 0x0 cpulib.o
.vfp11_veneer 0x00000000 0x0 class.o
.vfp11_veneer 0x00000000 0x0 classtab.o
.vfp11_veneer 0x00000000 0x0 debie.o
.vfp11_veneer 0x00000000 0x0 harness.o
.vfp11_veneer 0x00000000 0x0 health.o
.vfp11_veneer 0x00000000 0x0 hw_if.o
.vfp11_veneer 0x00000000 0x0 measure.o
.vfp11_veneer 0x00000000 0x0 target.o
.vfp11_veneer 0x00000000 0x0 tc_hand.o
.vfp11_veneer 0x00000000 0x0 telem.o
.vfp11_veneer 0x00000000 0x0 c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a(_addsubdf3.o)
.vfp11_veneer 0x00000000 0x0 c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a(_muldivdf3.o)
.vfp11_veneer 0x00000000 0x0 c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a(_fixunsdfsi.o)
.vfp11_veneer 0x00000000 0x0 c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a(_truncdfsf2.o)
.vfp11_veneer 0x00000000 0x0 c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a(_addsubsf3.o)
.vfp11_veneer 0x00000000 0x0 c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a(_muldivsf3.o)
.vfp11_veneer 0x00000000 0x0 c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a(_cmpsf2.o)
.vfp11_veneer 0x00000000 0x0 c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2/../../../../arm-elf/lib\libc.a(lib_a-memcpy.o)
.rodata 0x000087b8 0x184
0x000087b8 . = ALIGN (0x4)
*(.rodata)
.rodata 0x000087b8 0x13f harness.o
*fill* 0x000088f7 0x1 00
.rodata 0x000088f8 0x24 health.o
.rodata 0x0000891c 0x1 hw_if.o
0x0000891c checksum_nullifier
*(.rodata.*)
*fill* 0x0000891d 0x3 00
.rodata.str1.4
0x00008920 0x1c harness.o
*(.rdata)
*(.rdata.*)
*(.sdata2)
*(.sdata2.*)
*(.gnu.linkonce.r*)
.data 0x40000000 0x1e8 load address 0x0000893c
0x40000000 . = ALIGN (0x4)
0x40000000 __ASYST_DATA_START = .
0x0000893c __ASYST_DATA_LOAD = LOADADDR (.data)
*(.data)
.data 0x40000000 0x0 intvec.o
.data 0x40000000 0x0 crt0.o
.data 0x40000000 0x0 crt_asyst.o
.data 0x40000000 0x0 cpulib.o
.data 0x40000000 0x0 class.o
.data 0x40000000 0x100 classtab.o
0x40000000 event_class
.data 0x40000100 0x0 debie.o
.data 0x40000100 0xac harness.o
0x40000100 switch_su_cmd
.data 0x400001ac 0x14 health.o
0x400001ac temp_meas_count
0x400001bc health_mon_round
0x400001b4 checksum_count
0x400001b0 voltage_meas_count
0x400001b8 ADC_channel_register
.data 0x400001c0 0x4 hw_if.o
0x400001c0 analog_switch_bit
.data 0x400001c4 0x10 measure.o
0x400001cc hit_task
0x400001c4 hit_budget
0x400001c8 hit_budget_left
0x400001d0 acq_task
.data 0x400001d4 0x0 target.o
.data 0x400001d4 0x14 tc_hand.o
0x400001d4 SU_config
0x400001e4 TC_task
.data 0x400001e8 0x0 telem.o
.data 0x400001e8 0x0 c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a(_addsubdf3.o)
.data 0x400001e8 0x0 c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a(_muldivdf3.o)
.data 0x400001e8 0x0 c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a(_fixunsdfsi.o)
.data 0x400001e8 0x0 c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a(_truncdfsf2.o)
.data 0x400001e8 0x0 c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a(_addsubsf3.o)
.data 0x400001e8 0x0 c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a(_muldivsf3.o)
.data 0x400001e8 0x0 c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a(_cmpsf2.o)
.data 0x400001e8 0x0 c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2/../../../../arm-elf/lib\libc.a(lib_a-memcpy.o)
*(.data.*)
*(.sdata)
*(.sdata.*)
*(.gnu.linkonce.d*)
0x400001e8 __ASYST_DATA_END = .
.bss 0x400001e8 0x6854
0x400001e8 . = ALIGN (0x4)
0x400001e8 __ASYST_BSS_START = .
*(.bss)
.bss 0x400001e8 0x0 intvec.o
.bss 0x400001e8 0x0 crt0.o
.bss 0x400001e8 0x0 crt_asyst.o
.bss 0x400001e8 0x4 cpulib.o
.bss 0x400001ec 0x0 class.o
.bss 0x400001ec 0x0 classtab.o
.bss 0x400001ec 0x0 debie.o
.bss 0x400001ec 0xb4 harness.o
.bss 0x400002a0 0x1 health.o
0x400002a0 self_test_flag
.bss 0x400002a1 0x2 hw_if.o
0x400002a2 SU_self_test_channel
0x400002a1 SU_ctrl_register
*fill* 0x400002a3 0x1 00
.bss 0x400002a4 0x34 measure.o
0x400002a8 SU_state
0x400002a4 self_test_SU_number
.bss 0x400002d8 0x0 target.o
.bss 0x400002d8 0x18 tc_hand.o
0x400002dc memory_buffer_index
0x400002d8 TC_timeout
.bss 0x400002f0 0x0 telem.o
.bss 0x400002f0 0x0 c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a(_addsubdf3.o)
.bss 0x400002f0 0x0 c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a(_muldivdf3.o)
.bss 0x400002f0 0x0 c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a(_fixunsdfsi.o)
.bss 0x400002f0 0x0 c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a(_truncdfsf2.o)
.bss 0x400002f0 0x0 c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a(_addsubsf3.o)
.bss 0x400002f0 0x0 c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a(_muldivsf3.o)
.bss 0x400002f0 0x0 c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a(_cmpsf2.o)
.bss 0x400002f0 0x0 c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2/../../../../arm-elf/lib\libc.a(lib_a-memcpy.o)
*(.bss.*)
*(.sbss)
*(.sbss.*)
*(COMMON)
COMMON 0x400002f0 0x1 harness.o
0x400002f0 EA
*fill* 0x400002f1 0x3 00
COMMON 0x400002f4 0x8 health.o
0x400002f4 code_checksum
0x400002f8 internal_time
COMMON 0x400002fc 0x10f hw_if.o
0x400002fc s_w_reset
0x40000300 failed_data_address
0x40000302 reference_checksum
0x40000304 memory_mode
0x40000308 failed_code_address
0x4000030a forbidden_area
0x4000040a code_not_patched
*fill* 0x4000040b 0x1 00
COMMON 0x4000040c 0x11 measure.o
0x4000040c ADC_result
0x40000416 confirm_hit_result
0x40000418 test_level
0x4000041c test_channel
*fill* 0x4000041d 0x3 00
COMMON 0x40000420 0xb4 tc_hand.o
0x40000420 write_checksum
0x40000424 TC_state
0x40000428 address_MSB
0x40000429 address_LSB
0x4000042a memory_transfer_buffer
0x4000044c previous_TC
0x40000450 TC_look_up
0x400004d0 memory_type
COMMON 0x400004d4 0x6568 telem.o
0x400004d4 event_queue
0x400005ec science_data
0x400069a0 telemetry_data
0x40006a24 telemetry_end_pointer
0x40006a28 free_slot_index
0x40006a2c read_memory_checksum
0x40006a30 telemetry_pointer
0x40006a34 event_queue_length
0x40006a38 max_events
*(.gnu.linkonce.b*)
0x40006a3c __ASYST_BSS_END = .
0x40006a3c end = ALIGN (0x4)
.heap 0x40006a3c 0x0
0x40006a3c . = ALIGN (0x4)
0x40006a3c __ASYST_HEAP_START = .
0x40006a3c . = (. + __ASYST_HEAP_SIZE)
LOAD intvec.o
LOAD crt0.o
LOAD crt_asyst.o
LOAD cpulib.o
LOAD class.o
LOAD classtab.o
LOAD debie.o
LOAD harness.o
LOAD health.o
LOAD hw_if.o
LOAD measure.o
LOAD target.o
LOAD tc_hand.o
LOAD telem.o
START GROUP
LOAD c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a
LOAD c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2/../../../../arm-elf/lib\libc.a
END GROUP
OUTPUT(debie1.exe elf32-littlearm)
.ARM.attributes
0x00000000 0x10
.ARM.attributes
0x00000000 0x10 intvec.o
.ARM.attributes
0x00000010 0x10 crt0.o
.ARM.attributes
0x00000020 0x10 crt_asyst.o
.ARM.attributes
0x00000030 0x10 cpulib.o
.ARM.attributes
0x00000040 0x10 class.o
.ARM.attributes
0x00000050 0x10 classtab.o
.ARM.attributes
0x00000060 0x10 debie.o
.ARM.attributes
0x00000070 0x10 harness.o
.ARM.attributes
0x00000080 0x10 health.o
.ARM.attributes
0x00000090 0x10 hw_if.o
.ARM.attributes
0x000000a0 0x10 measure.o
.ARM.attributes
0x000000b0 0x10 target.o
.ARM.attributes
0x000000c0 0x10 tc_hand.o
.ARM.attributes
0x000000d0 0x10 telem.o
.ARM.attributes
0x000000e0 0x10 c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a(_addsubdf3.o)
.ARM.attributes
0x000000f0 0x10 c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a(_muldivdf3.o)
.ARM.attributes
0x00000100 0x10 c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a(_fixunsdfsi.o)
.ARM.attributes
0x00000110 0x10 c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a(_truncdfsf2.o)
.ARM.attributes
0x00000120 0x10 c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a(_addsubsf3.o)
.ARM.attributes
0x00000130 0x10 c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a(_muldivsf3.o)
.ARM.attributes
0x00000140 0x10 c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2\libgcc.a(_cmpsf2.o)
.ARM.attributes
0x00000150 0x10 c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2/../../../../arm-elf/lib\libc.a(lib_a-memcpy.o)
.debug_line 0x00000000 0x1b8f
.debug_line 0x00000000 0x6f intvec.o
.debug_line 0x0000006f 0x66 crt0.o
.debug_line 0x000000d5 0x97 crt_asyst.o
.debug_line 0x0000016c 0x8a cpulib.o
.debug_line 0x000001f6 0x110 class.o
.debug_line 0x00000306 0x31 classtab.o
.debug_line 0x00000337 0x67 debie.o
.debug_line 0x0000039e 0x8dc harness.o
.debug_line 0x00000c7a 0x4fd health.o
.debug_line 0x00001177 0x24c hw_if.o
.debug_line 0x000013c3 0x1dc measure.o
.debug_line 0x0000159f 0x4d target.o
.debug_line 0x000015ec 0x460 tc_hand.o
.debug_line 0x00001a4c 0x143 telem.o
.debug_info 0x00000000 0x6005
.debug_info 0x00000000 0x9b intvec.o
.debug_info 0x0000009b 0x9d crt0.o
.debug_info 0x00000138 0x2e4 crt_asyst.o
.debug_info 0x0000041c 0xd1 cpulib.o
.debug_info 0x000004ed 0x6d2 class.o
.debug_info 0x00000bbf 0x91 classtab.o
.debug_info 0x00000c50 0x94 debie.o
.debug_info 0x00000ce4 0x1886 harness.o
.debug_info 0x0000256a 0xfdd health.o
.debug_info 0x00003547 0xb5c hw_if.o
.debug_info 0x000040a3 0x9d5 measure.o
.debug_info 0x00004a78 0x147 target.o
.debug_info 0x00004bbf 0xc19 tc_hand.o
.debug_info 0x000057d8 0x82d telem.o
.debug_abbrev 0x00000000 0x11b9
.debug_abbrev 0x00000000 0x12 intvec.o
.debug_abbrev 0x00000012 0x14 crt0.o
.debug_abbrev 0x00000026 0x130 crt_asyst.o
.debug_abbrev 0x00000156 0x90 cpulib.o
.debug_abbrev 0x000001e6 0x16d class.o
.debug_abbrev 0x00000353 0x56 classtab.o
.debug_abbrev 0x000003a9 0x5b debie.o
.debug_abbrev 0x00000404 0x361 harness.o
.debug_abbrev 0x00000765 0x1ee health.o
.debug_abbrev 0x00000953 0x222 hw_if.o
.debug_abbrev 0x00000b75 0x1ea measure.o
.debug_abbrev 0x00000d5f 0xc7 target.o
.debug_abbrev 0x00000e26 0x1bd tc_hand.o
.debug_abbrev 0x00000fe3 0x1d6 telem.o
.debug_aranges 0x00000000 0x1a8
.debug_aranges
0x00000000 0x28 intvec.o
.debug_aranges
0x00000028 0x20 crt0.o
.debug_aranges
0x00000048 0x20 crt_asyst.o
.debug_aranges
0x00000068 0x20 cpulib.o
.debug_aranges
0x00000088 0x20 class.o
.debug_aranges
0x000000a8 0x20 debie.o
.debug_aranges
0x000000c8 0x20 harness.o
.debug_aranges
0x000000e8 0x20 health.o
.debug_aranges
0x00000108 0x20 hw_if.o
.debug_aranges
0x00000128 0x20 measure.o
.debug_aranges
0x00000148 0x20 target.o
.debug_aranges
0x00000168 0x20 tc_hand.o
.debug_aranges
0x00000188 0x20 telem.o
.debug_ranges 0x00000000 0x58
.debug_ranges 0x00000000 0x20 intvec.o
.debug_ranges 0x00000020 0x38 harness.o
.debug_frame 0x00000000 0x1198
.debug_frame 0x00000000 0x9c crt_asyst.o
.debug_frame 0x0000009c 0x70 cpulib.o
.debug_frame 0x0000010c 0x9c class.o
.debug_frame 0x000001a8 0x2c debie.o
.debug_frame 0x000001d4 0x680 harness.o
.debug_frame 0x00000854 0x3b8 health.o
.debug_frame 0x00000c0c 0x210 hw_if.o
.debug_frame 0x00000e1c 0x12c measure.o
.debug_frame 0x00000f48 0x58 target.o
.debug_frame 0x00000fa0 0x11c tc_hand.o
.debug_frame 0x000010bc 0xdc telem.o
.debug_loc 0x00000000 0x2359
.debug_loc 0x00000000 0x1de crt_asyst.o
.debug_loc 0x000001de 0x3e cpulib.o
.debug_loc 0x0000021c 0x1be class.o
.debug_loc 0x000003da 0x1f debie.o
.debug_loc 0x000003f9 0xa0e harness.o
.debug_loc 0x00000e07 0x7ad health.o
.debug_loc 0x000015b4 0x510 hw_if.o
.debug_loc 0x00001ac4 0x278 measure.o
.debug_loc 0x00001d3c 0x6e target.o
.debug_loc 0x00001daa 0x3bc tc_hand.o
.debug_loc 0x00002166 0x1f3 telem.o
.debug_pubnames
0x00000000 0x12e8
.debug_pubnames
0x00000000 0xa9 crt_asyst.o
.debug_pubnames
0x000000a9 0x76 cpulib.o
.debug_pubnames
0x0000011f 0x91 class.o
.debug_pubnames
0x000001b0 0x22 classtab.o
.debug_pubnames
0x000001d2 0x1b debie.o
.debug_pubnames
0x000001ed 0x525 harness.o
.debug_pubnames
0x00000712 0x3b6 health.o
.debug_pubnames
0x00000ac8 0x2f6 hw_if.o
.debug_pubnames
0x00000dbe 0x1a4 measure.o
.debug_pubnames
0x00000f62 0x59 target.o
.debug_pubnames
0x00000fbb 0x1be tc_hand.o
.debug_pubnames
0x00001179 0x16f telem.o
.debug_str 0x00000000 0x21b1
.debug_str 0x00000000 0x1c4 crt_asyst.o
0x1db (size before relaxing)
.debug_str 0x000001c4 0x88 cpulib.o
0xf9 (size before relaxing)
.debug_str 0x0000024c 0x611 class.o
0x710 (size before relaxing)
.debug_str 0x0000085d 0x11 classtab.o
0xf3 (size before relaxing)
.debug_str 0x0000086e 0xe debie.o
0xe9 (size before relaxing)
.debug_str 0x0000087c 0xb1c harness.o
0x1134 (size before relaxing)
.debug_str 0x00001398 0x59b health.o
0xd8d (size before relaxing)
.debug_str 0x00001933 0x39f hw_if.o
0x9f0 (size before relaxing)
.debug_str 0x00001cd2 0x15d measure.o
0x948 (size before relaxing)
.debug_str 0x00001e2f 0x45 target.o
0x150 (size before relaxing)
.debug_str 0x00001e74 0x253 tc_hand.o
0xaff (size before relaxing)
.debug_str 0x000020c7 0xea telem.o
0x825 (size before relaxing)
.comment 0x00000000 0xea
.comment 0x00000000 0x12 crt_asyst.o
.comment 0x00000012 0x12 cpulib.o
.comment 0x00000024 0x12 class.o
.comment 0x00000036 0x12 classtab.o
.comment 0x00000048 0x12 debie.o
.comment 0x0000005a 0x12 harness.o
.comment 0x0000006c 0x12 health.o
.comment 0x0000007e 0x12 hw_if.o
.comment 0x00000090 0x12 measure.o
.comment 0x000000a2 0x12 target.o
.comment 0x000000b4 0x12 tc_hand.o
.comment 0x000000c6 0x12 telem.o
.comment 0x000000d8 0x12 c:/ifdev/2007/gcc/arm/bin/../lib/gcc/arm-elf/4.2.2/../../../../arm-elf/lib\libc.a(lib_a-memcpy.o)

View File

@ -0,0 +1,98 @@
OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm")
OUTPUT_ARCH(arm)
ENTRY(__asyst_start)
/*
Memory layout for NXP LPC2138:
- 512 KiB FLASH from 0x00000000 to 0x0007ffff
- 32 KiB SRAM from 0x40000000 to 0x40007fff
*/
MEMORY
{
MEM_ROM_VECTORS :
ORIGIN = 0x00000000, LENGTH = 0x00000040
MEM_ROM :
ORIGIN = ORIGIN(MEM_ROM_VECTORS) + LENGTH(MEM_ROM_VECTORS), LENGTH = 512k - LENGTH(MEM_ROM_VECTORS)
MEM_RAM :
ORIGIN = 0x40000000, LENGTH = 32k
}
__ASYST_STACK_TOP = ORIGIN(MEM_RAM) + LENGTH(MEM_RAM) - 4;
__ASYST_HEAP_SIZE = 0x0;
SECTIONS
{
.vectors : /* vector table */
{
*(.vectors)
} > MEM_ROM_VECTORS
.text :
{
__ASYST_TEXT_START = .; /* executable code */
*(.text)
*(.text.*)
*(.glue_7t) *(.glue_7)
*(.init)
*(.fini)
*(.gnu.linkonce.t*)
__ASYST_TEXT_END = .;
. = ALIGN(4);
__ASYST_CTOR_START = .; /* constructors */
*(.ctors)
__ASYST_CTOR_END = .;
. = ALIGN(4);
__ASYST_DTOR_START = .; /* destructors */
*(.dtors)
__ASYST_DTOR_END = .;
} > MEM_ROM
.rodata :
{
. = ALIGN(4);
*(.rodata) /* read-only data */
*(.rodata.*)
*(.rdata)
*(.rdata.*)
*(.sdata2) /* small constant data */
*(.sdata2.*)
*(.gnu.linkonce.r*)
} > MEM_ROM
.data :
{
. = ALIGN(4);
__ASYST_DATA_START = .; /* start of the data */
__ASYST_DATA_LOAD = LOADADDR(.data);
*(.data) /* data */
*(.data.*)
*(.sdata) /* small data */
*(.sdata.*)
*(.gnu.linkonce.d*)
__ASYST_DATA_END = .; /* end of the data */
} >MEM_RAM AT>MEM_ROM
.bss (NOLOAD) :
{
. = ALIGN(4);
__ASYST_BSS_START = .; /* start of the bss */
*(.bss)
*(.bss.*)
*(.sbss)
*(.sbss.*)
*(COMMON)
*(.gnu.linkonce.b*)
__ASYST_BSS_END = .; /* end of the bss */
end = ALIGN(4) ;
} > MEM_RAM
.heap (NOLOAD) :
{
. = ALIGN(4);
__ASYST_HEAP_START = .; /* start of the heap */
. += __ASYST_HEAP_SIZE;
} > MEM_RAM
}

View File

@ -0,0 +1,23 @@
/*
problems.h for arm7/gcc-if07
Part of the DEBIE-1 benchmark.
$Id: problems.h,v 1.1 2008/04/09 11:26:38 niklas Exp $
*/
#ifndef PROBLEMS_H
#define PROBLEMS_H
#define FOR_PROBLEM(P)
/* A marker to indicate that the program is about to execute */
/* a test case that is to be included in the analysis problem */
/* identified by P. */
#define END_PROBLEM
/* A marker to indicate the end of a test case that is to be */
/* included in the analysis problem identified by the last */
/* executed FOR_PROBLEM. */
#endif

View File

@ -0,0 +1,46 @@
echo off
Rem Batch file to set up environment for GCC ARM7 C compiler from iSYSTEMS
Rem for the iF-DEV-LPC kit, for all test programs.
Rem
Rem Copyright (c) 2008 Tidorum Ltd.
Rem
Rem $Revision: 1.2 $
Rem GCC installation paths:
set IFDEVD=C:\iFDEV\2007
set GCCD=%IFDEVD%\gcc\arm
set GCCbin=%GCCD%\bin
set GCClib=%GCCD%\lib
set PATH=%GCCbin%;%PATH%
Rem C compiler and options:
set CC=arm-elf-gcc.exe
set CCOPT=-c -mcpu=arm7tdmi -g -O2
set ASOPT=-c -mcpu=arm7tdmi -g
Rem Linker and options:
set LD=arm-elf-gcc.exe
set LDOPT=-nostartfiles ^
-mlittle-endian ^
-mcpu=arm7tdmi ^
-Xlinker -lc ^
-lnosys ^
-Xlinker -Map=link.map ^
-Xlinker -n
Rem Common runtime files to be included in the link:
Rem crt0.s (use ASOPT)
Rem intvec.s (use ASOPT)
Rem crt_asyst.c (use CCOPT)
Rem cpulib.c (use CCOPT)
Rem
Rem Use the linker script file link.txt, with the LD option
Rem -Xlinker --script=%dir%\link.txt.

View File

@ -0,0 +1,67 @@
/*------------------------------------------------------------------------------
Copyright (C) 1998 : Space Systems Finland Ltd.
Space Systems Finland Ltd (SSF) allows you to use this version of
the DEBIE-I DPU software for the specific purpose and under the
specific conditions set forth in the Terms Of Use document enclosed
with or attached to this software. In particular, the software
remains the property of SSF and you must not distribute the software
to third parties without written and signed authorization from SSF.
System Name: DEBIE DPU SW, test harness for WCET analysis
Subsystem : DNI (DEBIE Null Interface)
Module : target.c
Target-specific implementations of the DNI operations, specifically
for the iF-DEV-LPC kit and the LPC2138 processor.
Based, with extensive changes, on parts of the SSF file rtx_if.c,
rev 1.13, Fri May 21 00:14:00 1999.
- * --------------------------------------------------------------------------
*/
/* This file contains one set of operations, as follows:
> memory operations: dpu_ctrl.h
*/
#include "keyword.h"
/* Memory operations : dpu_ctrl.h */
#include "dpu_ctrl.h"
#define DATA_MEM_BASE 0x40000000L
/* The SRAM starts at this address. */
unsigned char *Data_Pointer ( uint16_t address )
{
return ( unsigned char * )( DATA_MEM_BASE + ( uint32_t )address );
}
void Set_Data_Byte ( data_address_t addr, unsigned char value )
{
/* *(Data_Pointer (addr)) = value; */
/* Safer to do nothing. */
}
unsigned char Get_Data_Byte ( data_address_t addr )
{
return *( Data_Pointer ( addr ) );
}
unsigned char Get_Code_Byte ( code_address_t addr )
{
return 0;
}

View File

@ -0,0 +1,29 @@
/*------------------------------------------------------------------------------
Copyright (C) 1998 : Space Systems Finland Ltd.
Space Systems Finland Ltd (SSF) allows you to use this version of
the DEBIE-I DPU software for the specific purpose and under the
specific conditions set forth in the Terms Of Use document enclosed
with or attached to this software. In particular, the software
remains the property of SSF and you must not distribute the software
to third parties without written and signed authorization from SSF.
System Name: DEBIE DPU SW
Module : target_tm_data.h
The target-specific aspects of the Telemetry Data Structure.
This version for the target arm7/gcc-if07.
Based on the SSF file tm_data.h, rev 1.22, Mon May 31 10:10:12 1999.
- * --------------------------------------------------------------------------
*/
#ifndef TARGET_TM_DATA_H
#define TARGET_TM_DATA_H
#define MAX_EVENTS 910
/* Set to make the entire program fit in 32 KiB of data memory. */
#endif

View File

@ -0,0 +1,165 @@
/*------------------------------------------------------------------------------
Copyright (C) 1998 : Space Systems Finland Ltd.
Space Systems Finland Ltd (SSF) allows you to use this version of
the DEBIE-I DPU software for the specific purpose and under the
specific conditions set forth in the Terms Of Use document enclosed
with or attached to this software. In particular, the software
remains the property of SSF and you must not distribute the software
to third parties without written and signed authorization from SSF.
System Name: DEBIE DPU SW
Subsystem : DNI (DEBIE Null Interface)
Module : keyword.h
Macro definitions for Keil specific keywords to be used
in portable parts of the DEBIE DPU software.
This version adapted to the GNU ARM compiler for the ARM7 as
delivered with the IF-DEV-LPC, no kernel.
Based on the SSF DHI file keyword.h, revision 1.9, Tue Mar 09 12:37:20 1999.
- * --------------------------------------------------------------------------
*/
#ifndef KEYWORD_H
#define KEYWORD_H
/* Integer type definitions for native types that can hold integer
values of at least a given number of bits. These types are used
as loop counters to give the most natural and speedy code for
the current target. This is Not the C99 stdint.h, but the types
have similar names.
There is a particular form of this file for each (kind of) target
processor. The present form is for ARM7/GCC, where the widths of
the integer types are the following (as observed from the code of
the function Check_Type_Size in harness.c):
Type Octets Bits
char 1 8
short 2 16
int 4 32
long 4 32
This processor/compiler also has alignment concerns, so here we
define all telemetry data as octets and access it using memcpy()
instead of direct assignment.
*/
/* General types */
typedef int int_least8_t;
/* A signed integer covering at least -128 .. +127. */
typedef unsigned int uint_least8_t;
/* An unsigned integer covering at least 0 .. 255. */
typedef unsigned short uint16_t;
/* An unsigned 16-bit integer. */
typedef int int_least16_t;
/* A signed integer covering at least -2**15 .. +2**15 - 1. */
typedef unsigned int uint_least16_t;
/* An unsigned integer covering at least 0 .. 2**16 - 1. */
typedef uint16_t uskew16_t;
/* A 16-bit type, perhaps not an integer, perhaps not 16-bit aligned. */
/* If it is an integer type, it is unsigned. */
typedef unsigned int uint32_t;
/* An unsigned 32-bit integer. */
typedef uint32_t uskew32_t;
/* A 32-bit type, perhaps not an integer, perhaps not 32-bit aligned. */
/* If it is an integer type, it is unsigned. */
/* DEBIE-specific types */
typedef uint16_t data_address_t;
/* An address into external data memory. */
typedef uint16_t code_address_t;
/* An address into code memory. */
/* Macros for accessing the DPU data memory by numeric address. */
extern unsigned char *Data_Pointer ( uint16_t address );
#define DATA_POINTER(ADDR) Data_Pointer (ADDR)
/* Macros for accessing and copying multi-octet data. */
/* These may need target-specific adjustment if there are */
/* alignment restrictions on multi-octet integer values, */
/* because the operands in these macros may not be aligned */
/* in the required way. */
extern void wcc_memcpy( void *, void *, int );
#define COPY(DEST,SOURCE) wcc_memcpy (&(DEST), &(SOURCE), sizeof(DEST))
/* Copies the value of SOURCE to the location DEST. */
extern unsigned short Short_Value ( uskew16_t *x );
#define VALUE_OF(SOURCE) Short_Value (&(SOURCE))
/* Returns the (integer) value of SOURCE, type uskew16_t. */
/* Macros for struct (aggregate) assignment. Some compilers */
/* may not support assignment statements for such types. */
#define STRUCT_ASSIGN(DEST,SOURCE,TYPE) DEST = SOURCE
/* Macros for calling "patch" functions */
typedef code_address_t fptr_t;
/* A function that is to be called after patching code memory. */
/* The function may or may not be part of the patched code. */
/* In the real SW this is "typedef void (*fptr_t)(void);" */
extern void Call_Patch ( fptr_t func );
/* "Call" the patch func. */
#define CALL_PATCH(FUNCTION) Call_Patch (FUNCTION)
/* Jump to the patched memory. */
/* Some macros for task and interrupt management */
#define TASK(TASK_NUMBER)
#define PRIORITY(LEVEL)
#define INTERRUPT(SOURCE)
#define USED_REG_BANK(BANK)
/* Macro for declaring re-entrant function */
#define REENTRANT_FUNC
/* Memory model handling macros */
#define COMPACT_DATA
#define COMPACT
#define PROGRAM
#define EXTERNAL
#define DIRECT_INTERNAL
#define INDIRECT_INTERNAL
#define LOCATION(ADDRESS)
/* Dealing with the benchmark target system */
#define TARGET_INIT
#define TARGET_MARK
#define TARGET_REBOOT
#define TARGET_START_TEST
#define TARGET_REPEAT_TEST 0
#endif

View File

@ -0,0 +1,23 @@
/*
problems.h for arm7/gcc-if07
Part of the DEBIE-1 benchmark.
$Id: problems.h,v 1.1 2008/04/09 11:26:38 niklas Exp $
*/
#ifndef PROBLEMS_H
#define PROBLEMS_H
#define FOR_PROBLEM(P)
/* A marker to indicate that the program is about to execute */
/* a test case that is to be included in the analysis problem */
/* identified by P. */
#define END_PROBLEM
/* A marker to indicate the end of a test case that is to be */
/* included in the analysis problem identified by the last */
/* executed FOR_PROBLEM. */
#endif

View File

@ -0,0 +1,67 @@
/*------------------------------------------------------------------------------
Copyright (C) 1998 : Space Systems Finland Ltd.
Space Systems Finland Ltd (SSF) allows you to use this version of
the DEBIE-I DPU software for the specific purpose and under the
specific conditions set forth in the Terms Of Use document enclosed
with or attached to this software. In particular, the software
remains the property of SSF and you must not distribute the software
to third parties without written and signed authorization from SSF.
System Name: DEBIE DPU SW, test harness for WCET analysis
Subsystem : DNI (DEBIE Null Interface)
Module : target.c
Target-specific implementations of the DNI operations, specifically
for the iF-DEV-LPC kit and the LPC2138 processor.
Based, with extensive changes, on parts of the SSF file rtx_if.c,
rev 1.13, Fri May 21 00:14:00 1999.
- * --------------------------------------------------------------------------
*/
/* This file contains one set of operations, as follows:
> memory operations: dpu_ctrl.h
*/
#include "keyword.h"
/* Memory operations : dpu_ctrl.h */
#include "dpu_ctrl.h"
#define DATA_MEM_BASE 0x38000000L
/* The SRAM starts at this address. */
unsigned char *Data_Pointer ( uint16_t address )
{
return ( unsigned char * )( DATA_MEM_BASE + ( uint32_t )address );
}
void Set_Data_Byte ( data_address_t addr, unsigned char value )
{
/* *(Data_Pointer (addr)) = value; */
/* Safer to do nothing. */
}
unsigned char Get_Data_Byte ( data_address_t addr )
{
return *( Data_Pointer ( addr ) );
}
unsigned char Get_Code_Byte ( code_address_t addr )
{
return 0;
}

View File

@ -0,0 +1,30 @@
/*------------------------------------------------------------------------------
Copyright (C) 1998 : Space Systems Finland Ltd.
Space Systems Finland Ltd (SSF) allows you to use this version of
the DEBIE-I DPU software for the specific purpose and under the
specific conditions set forth in the Terms Of Use document enclosed
with or attached to this software. In particular, the software
remains the property of SSF and you must not distribute the software
to third parties without written and signed authorization from SSF.
System Name: DEBIE DPU SW
Module : target_tm_data.h
The target-specific aspects of the Telemetry Data Structure.
Based on the SSF file tm_data.h, rev 1.22, Mon May 31 10:10:12 1999.
- * --------------------------------------------------------------------------
*/
#ifndef TARGET_TM_DATA_H
#define TARGET_TM_DATA_H
#define MAX_EVENTS 1261
/* Same as in the original DEBIE-1 SW, although there limited
by the size of the data memory.
*/
#endif

View File

@ -0,0 +1,10 @@
#include "keyword.h"
void wcc_memcpy( void *dest, void *src, int size )
{
int i;
_Pragma( "loopbound min 1 max 4" )
for ( i = 0; i < size; i++ )
( ( unsigned char * )dest )[ i ] = ( ( unsigned char * )src )[ i ];
return;
}

View File

@ -0,0 +1,165 @@
/*------------------------------------------------------------------------------
Copyright (C) 1998 : Space Systems Finland Ltd.
Space Systems Finland Ltd (SSF) allows you to use this version of
the DEBIE-I DPU software for the specific purpose and under the
specific conditions set forth in the Terms Of Use document enclosed
with or attached to this software. In particular, the software
remains the property of SSF and you must not distribute the software
to third parties without written and signed authorization from SSF.
System Name: DEBIE DPU SW
Subsystem : DNI (DEBIE Null Interface)
Module : keyword.h
Macro definitions for Keil specific keywords to be used
in portable parts of the DEBIE DPU software.
This version adapted to the GNU ARM compiler for the ARM7 as
delivered with the IF-DEV-LPC, no kernel.
Based on the SSF DHI file keyword.h, revision 1.9, Tue Mar 09 12:37:20 1999.
- * --------------------------------------------------------------------------
*/
#ifndef KEYWORD_H
#define KEYWORD_H
/* Integer type definitions for native types that can hold integer
values of at least a given number of bits. These types are used
as loop counters to give the most natural and speedy code for
the current target. This is Not the C99 stdint.h, but the types
have similar names.
There is a particular form of this file for each (kind of) target
processor. The present form is for ARM7/GCC, where the widths of
the integer types are the following (as observed from the code of
the function Check_Type_Size in harness.c):
Type Octets Bits
char 1 8
short 2 16
int 4 32
long 4 32
This processor/compiler also has alignment concerns, so here we
define all telemetry data as octets and access it using memcpy()
instead of direct assignment.
*/
/* General types */
typedef int int_least8_t;
/* A signed integer covering at least -128 .. +127. */
typedef unsigned int uint_least8_t;
/* An unsigned integer covering at least 0 .. 255. */
typedef unsigned short uint16_t;
/* An unsigned 16-bit integer. */
typedef int int_least16_t;
/* A signed integer covering at least -2**15 .. +2**15 - 1. */
typedef unsigned int uint_least16_t;
/* An unsigned integer covering at least 0 .. 2**16 - 1. */
typedef uint16_t uskew16_t;
/* A 16-bit type, perhaps not an integer, perhaps not 16-bit aligned. */
/* If it is an integer type, it is unsigned. */
typedef unsigned int uint32_t;
/* An unsigned 32-bit integer. */
typedef uint32_t uskew32_t;
/* A 32-bit type, perhaps not an integer, perhaps not 32-bit aligned. */
/* If it is an integer type, it is unsigned. */
/* DEBIE-specific types */
typedef uint16_t data_address_t;
/* An address into external data memory. */
typedef uint16_t code_address_t;
/* An address into code memory. */
/* Macros for accessing the DPU data memory by numeric address. */
extern unsigned char *Data_Pointer ( uint16_t address );
#define DATA_POINTER(ADDR) Data_Pointer (ADDR)
/* Macros for accessing and copying multi-octet data. */
/* These may need target-specific adjustment if there are */
/* alignment restrictions on multi-octet integer values, */
/* because the operands in these macros may not be aligned */
/* in the required way. */
extern void wcc_memcpy( void *, void *, int );
#define COPY(DEST,SOURCE) wcc_memcpy (&(DEST), &(SOURCE), sizeof(DEST))
/* Copies the value of SOURCE to the location DEST. */
extern unsigned short Short_Value ( uskew16_t *x );
#define VALUE_OF(SOURCE) Short_Value (&(SOURCE))
/* Returns the (integer) value of SOURCE, type uskew16_t. */
/* Macros for struct (aggregate) assignment. Some compilers */
/* may not support assignment statements for such types. */
#define STRUCT_ASSIGN(DEST,SOURCE,TYPE) DEST = SOURCE
/* Macros for calling "patch" functions */
typedef code_address_t fptr_t;
/* A function that is to be called after patching code memory. */
/* The function may or may not be part of the patched code. */
/* In the real SW this is "typedef void (*fptr_t)(void);" */
extern void Call_Patch ( fptr_t func );
/* "Call" the patch func. */
#define CALL_PATCH(FUNCTION) Call_Patch (FUNCTION)
/* Jump to the patched memory. */
/* Some macros for task and interrupt management */
#define TASK(TASK_NUMBER)
#define PRIORITY(LEVEL)
#define INTERRUPT(SOURCE)
#define USED_REG_BANK(BANK)
/* Macro for declaring re-entrant function */
#define REENTRANT_FUNC
/* Memory model handling macros */
#define COMPACT_DATA
#define COMPACT
#define PROGRAM
#define EXTERNAL
#define DIRECT_INTERNAL
#define INDIRECT_INTERNAL
#define LOCATION(ADDRESS)
/* Dealing with the benchmark target system */
#define TARGET_INIT
#define TARGET_MARK
#define TARGET_REBOOT
#define TARGET_START_TEST
#define TARGET_REPEAT_TEST 0
#endif

View File

@ -0,0 +1,23 @@
/*
problems.h for arm7/gcc-if07
Part of the DEBIE-1 benchmark.
$Id: problems.h,v 1.1 2008/04/09 11:26:38 niklas Exp $
*/
#ifndef PROBLEMS_H
#define PROBLEMS_H
#define FOR_PROBLEM(P)
/* A marker to indicate that the program is about to execute */
/* a test case that is to be included in the analysis problem */
/* identified by P. */
#define END_PROBLEM
/* A marker to indicate the end of a test case that is to be */
/* included in the analysis problem identified by the last */
/* executed FOR_PROBLEM. */
#endif

View File

@ -0,0 +1,67 @@
/*------------------------------------------------------------------------------
Copyright (C) 1998 : Space Systems Finland Ltd.
Space Systems Finland Ltd (SSF) allows you to use this version of
the DEBIE-I DPU software for the specific purpose and under the
specific conditions set forth in the Terms Of Use document enclosed
with or attached to this software. In particular, the software
remains the property of SSF and you must not distribute the software
to third parties without written and signed authorization from SSF.
System Name: DEBIE DPU SW, test harness for WCET analysis
Subsystem : DNI (DEBIE Null Interface)
Module : target.c
Target-specific implementations of the DNI operations, specifically
for the iF-DEV-LPC kit and the LPC2138 processor.
Based, with extensive changes, on parts of the SSF file rtx_if.c,
rev 1.13, Fri May 21 00:14:00 1999.
- * --------------------------------------------------------------------------
*/
/* This file contains one set of operations, as follows:
> memory operations: dpu_ctrl.h
*/
#include "keyword.h"
/* Memory operations : dpu_ctrl.h */
#include "dpu_ctrl.h"
#define DATA_MEM_BASE 0x38000000L
/* The SRAM starts at this address. */
unsigned char *Data_Pointer ( uint16_t address )
{
return ( unsigned char * )( DATA_MEM_BASE + ( uint32_t )address );
}
void Set_Data_Byte ( data_address_t addr, unsigned char value )
{
/* *(Data_Pointer (addr)) = value; */
/* Safer to do nothing. */
}
unsigned char Get_Data_Byte ( data_address_t addr )
{
return *( Data_Pointer ( addr ) );
}
unsigned char Get_Code_Byte ( code_address_t addr )
{
return 0;
}

View File

@ -0,0 +1,30 @@
/*------------------------------------------------------------------------------
Copyright (C) 1998 : Space Systems Finland Ltd.
Space Systems Finland Ltd (SSF) allows you to use this version of
the DEBIE-I DPU software for the specific purpose and under the
specific conditions set forth in the Terms Of Use document enclosed
with or attached to this software. In particular, the software
remains the property of SSF and you must not distribute the software
to third parties without written and signed authorization from SSF.
System Name: DEBIE DPU SW
Module : target_tm_data.h
The target-specific aspects of the Telemetry Data Structure.
Based on the SSF file tm_data.h, rev 1.22, Mon May 31 10:10:12 1999.
- * --------------------------------------------------------------------------
*/
#ifndef TARGET_TM_DATA_H
#define TARGET_TM_DATA_H
#define MAX_EVENTS 1261
/* Same as in the original DEBIE-1 SW, although there limited
by the size of the data memory.
*/
#endif

View File

@ -0,0 +1,10 @@
#include "keyword.h"
void wcc_memcpy( void *dest, void *src, int size )
{
int i;
_Pragma( "loopbound min 1 max 4" )
for ( i = 0; i < size; i++ )
( ( unsigned char * )dest )[ i ] = ( ( unsigned char * )src )[ i ];
return;
}

View File

@ -0,0 +1,165 @@
/*------------------------------------------------------------------------------
Copyright (C) 1998 : Space Systems Finland Ltd.
Space Systems Finland Ltd (SSF) allows you to use this version of
the DEBIE-I DPU software for the specific purpose and under the
specific conditions set forth in the Terms Of Use document enclosed
with or attached to this software. In particular, the software
remains the property of SSF and you must not distribute the software
to third parties without written and signed authorization from SSF.
System Name: DEBIE DPU SW
Subsystem : DNI (DEBIE Null Interface)
Module : keyword.h
Macro definitions for Keil specific keywords to be used
in portable parts of the DEBIE DPU software.
This version adapted to the GNU ARM compiler for the ARM7 as
delivered with the IF-DEV-LPC, no kernel.
Based on the SSF DHI file keyword.h, revision 1.9, Tue Mar 09 12:37:20 1999.
- * --------------------------------------------------------------------------
*/
#ifndef KEYWORD_H
#define KEYWORD_H
/* Integer type definitions for native types that can hold integer
values of at least a given number of bits. These types are used
as loop counters to give the most natural and speedy code for
the current target. This is Not the C99 stdint.h, but the types
have similar names.
There is a particular form of this file for each (kind of) target
processor. The present form is for ARM7/GCC, where the widths of
the integer types are the following (as observed from the code of
the function Check_Type_Size in harness.c):
Type Octets Bits
char 1 8
short 2 16
int 4 32
long 4 32
This processor/compiler also has alignment concerns, so here we
define all telemetry data as octets and access it using memcpy()
instead of direct assignment.
*/
/* General types */
typedef int int_least8_t;
/* A signed integer covering at least -128 .. +127. */
typedef unsigned int uint_least8_t;
/* An unsigned integer covering at least 0 .. 255. */
typedef unsigned short uint16_t;
/* An unsigned 16-bit integer. */
typedef int int_least16_t;
/* A signed integer covering at least -2**15 .. +2**15 - 1. */
typedef unsigned int uint_least16_t;
/* An unsigned integer covering at least 0 .. 2**16 - 1. */
typedef uint16_t uskew16_t;
/* A 16-bit type, perhaps not an integer, perhaps not 16-bit aligned. */
/* If it is an integer type, it is unsigned. */
typedef unsigned int uint32_t;
/* An unsigned 32-bit integer. */
typedef uint32_t uskew32_t;
/* A 32-bit type, perhaps not an integer, perhaps not 32-bit aligned. */
/* If it is an integer type, it is unsigned. */
/* DEBIE-specific types */
typedef uint16_t data_address_t;
/* An address into external data memory. */
typedef uint16_t code_address_t;
/* An address into code memory. */
/* Macros for accessing the DPU data memory by numeric address. */
extern unsigned char *Data_Pointer ( uint16_t address );
#define DATA_POINTER(ADDR) Data_Pointer (ADDR)
/* Macros for accessing and copying multi-octet data. */
/* These may need target-specific adjustment if there are */
/* alignment restrictions on multi-octet integer values, */
/* because the operands in these macros may not be aligned */
/* in the required way. */
extern void wcc_memcpy( void *, void *, int );
#define COPY(DEST,SOURCE) wcc_memcpy (&(DEST), &(SOURCE), sizeof(DEST))
/* Copies the value of SOURCE to the location DEST. */
extern unsigned short Short_Value ( uskew16_t *x );
#define VALUE_OF(SOURCE) Short_Value (&(SOURCE))
/* Returns the (integer) value of SOURCE, type uskew16_t. */
/* Macros for struct (aggregate) assignment. Some compilers */
/* may not support assignment statements for such types. */
#define STRUCT_ASSIGN(DEST,SOURCE,TYPE) DEST = SOURCE
/* Macros for calling "patch" functions */
typedef code_address_t fptr_t;
/* A function that is to be called after patching code memory. */
/* The function may or may not be part of the patched code. */
/* In the real SW this is "typedef void (*fptr_t)(void);" */
extern void Call_Patch ( fptr_t func );
/* "Call" the patch func. */
#define CALL_PATCH(FUNCTION) Call_Patch (FUNCTION)
/* Jump to the patched memory. */
/* Some macros for task and interrupt management */
#define TASK(TASK_NUMBER)
#define PRIORITY(LEVEL)
#define INTERRUPT(SOURCE)
#define USED_REG_BANK(BANK)
/* Macro for declaring re-entrant function */
#define REENTRANT_FUNC
/* Memory model handling macros */
#define COMPACT_DATA
#define COMPACT
#define PROGRAM
#define EXTERNAL
#define DIRECT_INTERNAL
#define INDIRECT_INTERNAL
#define LOCATION(ADDRESS)
/* Dealing with the benchmark target system */
#define TARGET_INIT
#define TARGET_MARK
#define TARGET_REBOOT
#define TARGET_START_TEST
#define TARGET_REPEAT_TEST 0
#endif

View File

@ -0,0 +1,23 @@
/*
problems.h for arm7/gcc-if07
Part of the DEBIE-1 benchmark.
$Id: problems.h,v 1.1 2008/04/09 11:26:38 niklas Exp $
*/
#ifndef PROBLEMS_H
#define PROBLEMS_H
#define FOR_PROBLEM(P)
/* A marker to indicate that the program is about to execute */
/* a test case that is to be included in the analysis problem */
/* identified by P. */
#define END_PROBLEM
/* A marker to indicate the end of a test case that is to be */
/* included in the analysis problem identified by the last */
/* executed FOR_PROBLEM. */
#endif

View File

@ -0,0 +1,67 @@
/*------------------------------------------------------------------------------
Copyright (C) 1998 : Space Systems Finland Ltd.
Space Systems Finland Ltd (SSF) allows you to use this version of
the DEBIE-I DPU software for the specific purpose and under the
specific conditions set forth in the Terms Of Use document enclosed
with or attached to this software. In particular, the software
remains the property of SSF and you must not distribute the software
to third parties without written and signed authorization from SSF.
System Name: DEBIE DPU SW, test harness for WCET analysis
Subsystem : DNI (DEBIE Null Interface)
Module : target.c
Target-specific implementations of the DNI operations, specifically
for the iF-DEV-LPC kit and the LPC2138 processor.
Based, with extensive changes, on parts of the SSF file rtx_if.c,
rev 1.13, Fri May 21 00:14:00 1999.
- * --------------------------------------------------------------------------
*/
/* This file contains one set of operations, as follows:
> memory operations: dpu_ctrl.h
*/
#include "keyword.h"
/* Memory operations : dpu_ctrl.h */
#include "dpu_ctrl.h"
#define DATA_MEM_BASE 0x38000000L
/* The SRAM starts at this address. */
unsigned char *Data_Pointer ( uint16_t address )
{
return ( unsigned char * )( DATA_MEM_BASE + ( uint32_t )address );
}
void Set_Data_Byte ( data_address_t addr, unsigned char value )
{
/* *(Data_Pointer (addr)) = value; */
/* Safer to do nothing. */
}
unsigned char Get_Data_Byte ( data_address_t addr )
{
return *( Data_Pointer ( addr ) );
}
unsigned char Get_Code_Byte ( code_address_t addr )
{
return 0;
}

View File

@ -0,0 +1,30 @@
/*------------------------------------------------------------------------------
Copyright (C) 1998 : Space Systems Finland Ltd.
Space Systems Finland Ltd (SSF) allows you to use this version of
the DEBIE-I DPU software for the specific purpose and under the
specific conditions set forth in the Terms Of Use document enclosed
with or attached to this software. In particular, the software
remains the property of SSF and you must not distribute the software
to third parties without written and signed authorization from SSF.
System Name: DEBIE DPU SW
Module : target_tm_data.h
The target-specific aspects of the Telemetry Data Structure.
Based on the SSF file tm_data.h, rev 1.22, Mon May 31 10:10:12 1999.
- * --------------------------------------------------------------------------
*/
#ifndef TARGET_TM_DATA_H
#define TARGET_TM_DATA_H
#define MAX_EVENTS 1261
/* Same as in the original DEBIE-1 SW, although there limited
by the size of the data memory.
*/
#endif

View File

@ -0,0 +1,10 @@
#include "keyword.h"
void wcc_memcpy( void *dest, void *src, int size )
{
int i;
_Pragma( "loopbound min 1 max 4" )
for ( i = 0; i < size; i++ )
( ( unsigned char * )dest )[ i ] = ( ( unsigned char * )src )[ i ];
return;
}

View File

@ -0,0 +1,165 @@
/*------------------------------------------------------------------------------
Copyright (C) 1998 : Space Systems Finland Ltd.
Space Systems Finland Ltd (SSF) allows you to use this version of
the DEBIE-I DPU software for the specific purpose and under the
specific conditions set forth in the Terms Of Use document enclosed
with or attached to this software. In particular, the software
remains the property of SSF and you must not distribute the software
to third parties without written and signed authorization from SSF.
System Name: DEBIE DPU SW
Subsystem : DNI (DEBIE Null Interface)
Module : keyword.h
Macro definitions for Keil specific keywords to be used
in portable parts of the DEBIE DPU software.
This version adapted to the GNU ARM compiler for the ARM7 as
delivered with the IF-DEV-LPC, no kernel.
Based on the SSF DHI file keyword.h, revision 1.9, Tue Mar 09 12:37:20 1999.
- * --------------------------------------------------------------------------
*/
#ifndef KEYWORD_H
#define KEYWORD_H
/* Integer type definitions for native types that can hold integer
values of at least a given number of bits. These types are used
as loop counters to give the most natural and speedy code for
the current target. This is Not the C99 stdint.h, but the types
have similar names.
There is a particular form of this file for each (kind of) target
processor. The present form is for ARM7/GCC, where the widths of
the integer types are the following (as observed from the code of
the function Check_Type_Size in harness.c):
Type Octets Bits
char 1 8
short 2 16
int 4 32
long 4 32
This processor/compiler also has alignment concerns, so here we
define all telemetry data as octets and access it using memcpy()
instead of direct assignment.
*/
/* General types */
typedef int int_least8_t;
/* A signed integer covering at least -128 .. +127. */
typedef unsigned int uint_least8_t;
/* An unsigned integer covering at least 0 .. 255. */
typedef unsigned short uint16_t;
/* An unsigned 16-bit integer. */
typedef int int_least16_t;
/* A signed integer covering at least -2**15 .. +2**15 - 1. */
typedef unsigned int uint_least16_t;
/* An unsigned integer covering at least 0 .. 2**16 - 1. */
typedef uint16_t uskew16_t;
/* A 16-bit type, perhaps not an integer, perhaps not 16-bit aligned. */
/* If it is an integer type, it is unsigned. */
typedef unsigned int uint32_t;
/* An unsigned 32-bit integer. */
typedef uint32_t uskew32_t;
/* A 32-bit type, perhaps not an integer, perhaps not 32-bit aligned. */
/* If it is an integer type, it is unsigned. */
/* DEBIE-specific types */
typedef uint16_t data_address_t;
/* An address into external data memory. */
typedef uint16_t code_address_t;
/* An address into code memory. */
/* Macros for accessing the DPU data memory by numeric address. */
extern unsigned char *Data_Pointer ( uint16_t address );
#define DATA_POINTER(ADDR) Data_Pointer (ADDR)
/* Macros for accessing and copying multi-octet data. */
/* These may need target-specific adjustment if there are */
/* alignment restrictions on multi-octet integer values, */
/* because the operands in these macros may not be aligned */
/* in the required way. */
extern void wcc_memcpy( void *, void *, int );
#define COPY(DEST,SOURCE) wcc_memcpy (&(DEST), &(SOURCE), sizeof(DEST))
/* Copies the value of SOURCE to the location DEST. */
extern unsigned short Short_Value ( uskew16_t *x );
#define VALUE_OF(SOURCE) Short_Value (&(SOURCE))
/* Returns the (integer) value of SOURCE, type uskew16_t. */
/* Macros for struct (aggregate) assignment. Some compilers */
/* may not support assignment statements for such types. */
#define STRUCT_ASSIGN(DEST,SOURCE,TYPE) DEST = SOURCE
/* Macros for calling "patch" functions */
typedef code_address_t fptr_t;
/* A function that is to be called after patching code memory. */
/* The function may or may not be part of the patched code. */
/* In the real SW this is "typedef void (*fptr_t)(void);" */
extern void Call_Patch ( fptr_t func );
/* "Call" the patch func. */
#define CALL_PATCH(FUNCTION) Call_Patch (FUNCTION)
/* Jump to the patched memory. */
/* Some macros for task and interrupt management */
#define TASK(TASK_NUMBER)
#define PRIORITY(LEVEL)
#define INTERRUPT(SOURCE)
#define USED_REG_BANK(BANK)
/* Macro for declaring re-entrant function */
#define REENTRANT_FUNC
/* Memory model handling macros */
#define COMPACT_DATA
#define COMPACT
#define PROGRAM
#define EXTERNAL
#define DIRECT_INTERNAL
#define INDIRECT_INTERNAL
#define LOCATION(ADDRESS)
/* Dealing with the benchmark target system */
#define TARGET_INIT
#define TARGET_MARK
#define TARGET_REBOOT
#define TARGET_START_TEST
#define TARGET_REPEAT_TEST 0
#endif

View File

@ -0,0 +1,23 @@
/*
problems.h for arm7/gcc-if07
Part of the DEBIE-1 benchmark.
$Id: problems.h,v 1.1 2008/04/09 11:26:38 niklas Exp $
*/
#ifndef PROBLEMS_H
#define PROBLEMS_H
#define FOR_PROBLEM(P)
/* A marker to indicate that the program is about to execute */
/* a test case that is to be included in the analysis problem */
/* identified by P. */
#define END_PROBLEM
/* A marker to indicate the end of a test case that is to be */
/* included in the analysis problem identified by the last */
/* executed FOR_PROBLEM. */
#endif

View File

@ -0,0 +1,67 @@
/*------------------------------------------------------------------------------
Copyright (C) 1998 : Space Systems Finland Ltd.
Space Systems Finland Ltd (SSF) allows you to use this version of
the DEBIE-I DPU software for the specific purpose and under the
specific conditions set forth in the Terms Of Use document enclosed
with or attached to this software. In particular, the software
remains the property of SSF and you must not distribute the software
to third parties without written and signed authorization from SSF.
System Name: DEBIE DPU SW, test harness for WCET analysis
Subsystem : DNI (DEBIE Null Interface)
Module : target.c
Target-specific implementations of the DNI operations, specifically
for the iF-DEV-LPC kit and the LPC2138 processor.
Based, with extensive changes, on parts of the SSF file rtx_if.c,
rev 1.13, Fri May 21 00:14:00 1999.
- * --------------------------------------------------------------------------
*/
/* This file contains one set of operations, as follows:
> memory operations: dpu_ctrl.h
*/
#include "keyword.h"
/* Memory operations : dpu_ctrl.h */
#include "dpu_ctrl.h"
#define DATA_MEM_BASE 0x38000000L
/* The SRAM starts at this address. */
unsigned char *Data_Pointer ( uint16_t address )
{
return ( unsigned char * )( DATA_MEM_BASE + ( uint32_t )address );
}
void Set_Data_Byte ( data_address_t addr, unsigned char value )
{
/* *(Data_Pointer (addr)) = value; */
/* Safer to do nothing. */
}
unsigned char Get_Data_Byte ( data_address_t addr )
{
return *( Data_Pointer ( addr ) );
}
unsigned char Get_Code_Byte ( code_address_t addr )
{
return 0;
}

View File

@ -0,0 +1,30 @@
/*------------------------------------------------------------------------------
Copyright (C) 1998 : Space Systems Finland Ltd.
Space Systems Finland Ltd (SSF) allows you to use this version of
the DEBIE-I DPU software for the specific purpose and under the
specific conditions set forth in the Terms Of Use document enclosed
with or attached to this software. In particular, the software
remains the property of SSF and you must not distribute the software
to third parties without written and signed authorization from SSF.
System Name: DEBIE DPU SW
Module : target_tm_data.h
The target-specific aspects of the Telemetry Data Structure.
Based on the SSF file tm_data.h, rev 1.22, Mon May 31 10:10:12 1999.
- * --------------------------------------------------------------------------
*/
#ifndef TARGET_TM_DATA_H
#define TARGET_TM_DATA_H
#define MAX_EVENTS 1261
/* Same as in the original DEBIE-1 SW, although there limited
by the size of the data memory.
*/
#endif

View File

@ -0,0 +1,10 @@
#include "keyword.h"
void wcc_memcpy( void *dest, void *src, int size )
{
int i;
_Pragma( "loopbound min 1 max 4" )
for ( i = 0; i < size; i++ )
( ( unsigned char * )dest )[ i ] = ( ( unsigned char * )src )[ i ];
return;
}

View File

@ -0,0 +1,165 @@
/*------------------------------------------------------------------------------
Copyright (C) 1998 : Space Systems Finland Ltd.
Space Systems Finland Ltd (SSF) allows you to use this version of
the DEBIE-I DPU software for the specific purpose and under the
specific conditions set forth in the Terms Of Use document enclosed
with or attached to this software. In particular, the software
remains the property of SSF and you must not distribute the software
to third parties without written and signed authorization from SSF.
System Name: DEBIE DPU SW
Subsystem : DNI (DEBIE Null Interface)
Module : keyword.h
Macro definitions for Keil specific keywords to be used
in portable parts of the DEBIE DPU software.
This version adapted to the GNU ARM compiler for the ARM7 as
delivered with the IF-DEV-LPC, no kernel.
Based on the SSF DHI file keyword.h, revision 1.9, Tue Mar 09 12:37:20 1999.
- * --------------------------------------------------------------------------
*/
#ifndef KEYWORD_H
#define KEYWORD_H
/* Integer type definitions for native types that can hold integer
values of at least a given number of bits. These types are used
as loop counters to give the most natural and speedy code for
the current target. This is Not the C99 stdint.h, but the types
have similar names.
There is a particular form of this file for each (kind of) target
processor. The present form is for ARM7/GCC, where the widths of
the integer types are the following (as observed from the code of
the function Check_Type_Size in harness.c):
Type Octets Bits
char 1 8
short 2 16
int 4 32
long 4 32
This processor/compiler also has alignment concerns, so here we
define all telemetry data as octets and access it using memcpy()
instead of direct assignment.
*/
/* General types */
typedef int int_least8_t;
/* A signed integer covering at least -128 .. +127. */
typedef unsigned int uint_least8_t;
/* An unsigned integer covering at least 0 .. 255. */
typedef unsigned short uint16_t;
/* An unsigned 16-bit integer. */
typedef int int_least16_t;
/* A signed integer covering at least -2**15 .. +2**15 - 1. */
typedef unsigned int uint_least16_t;
/* An unsigned integer covering at least 0 .. 2**16 - 1. */
typedef uint16_t uskew16_t;
/* A 16-bit type, perhaps not an integer, perhaps not 16-bit aligned. */
/* If it is an integer type, it is unsigned. */
typedef unsigned int uint32_t;
/* An unsigned 32-bit integer. */
typedef uint32_t uskew32_t;
/* A 32-bit type, perhaps not an integer, perhaps not 32-bit aligned. */
/* If it is an integer type, it is unsigned. */
/* DEBIE-specific types */
typedef uint16_t data_address_t;
/* An address into external data memory. */
typedef uint16_t code_address_t;
/* An address into code memory. */
/* Macros for accessing the DPU data memory by numeric address. */
extern unsigned char *Data_Pointer ( uint16_t address );
#define DATA_POINTER(ADDR) Data_Pointer (ADDR)
/* Macros for accessing and copying multi-octet data. */
/* These may need target-specific adjustment if there are */
/* alignment restrictions on multi-octet integer values, */
/* because the operands in these macros may not be aligned */
/* in the required way. */
extern void wcc_memcpy( void *, void *, int );
#define COPY(DEST,SOURCE) wcc_memcpy (&(DEST), &(SOURCE), sizeof(DEST))
/* Copies the value of SOURCE to the location DEST. */
extern unsigned short Short_Value ( uskew16_t *x );
#define VALUE_OF(SOURCE) Short_Value (&(SOURCE))
/* Returns the (integer) value of SOURCE, type uskew16_t. */
/* Macros for struct (aggregate) assignment. Some compilers */
/* may not support assignment statements for such types. */
#define STRUCT_ASSIGN(DEST,SOURCE,TYPE) DEST = SOURCE
/* Macros for calling "patch" functions */
typedef code_address_t fptr_t;
/* A function that is to be called after patching code memory. */
/* The function may or may not be part of the patched code. */
/* In the real SW this is "typedef void (*fptr_t)(void);" */
extern void Call_Patch ( fptr_t func );
/* "Call" the patch func. */
#define CALL_PATCH(FUNCTION) Call_Patch (FUNCTION)
/* Jump to the patched memory. */
/* Some macros for task and interrupt management */
#define TASK(TASK_NUMBER)
#define PRIORITY(LEVEL)
#define INTERRUPT(SOURCE)
#define USED_REG_BANK(BANK)
/* Macro for declaring re-entrant function */
#define REENTRANT_FUNC
/* Memory model handling macros */
#define COMPACT_DATA
#define COMPACT
#define PROGRAM
#define EXTERNAL
#define DIRECT_INTERNAL
#define INDIRECT_INTERNAL
#define LOCATION(ADDRESS)
/* Dealing with the benchmark target system */
#define TARGET_INIT
#define TARGET_MARK
#define TARGET_REBOOT
#define TARGET_START_TEST
#define TARGET_REPEAT_TEST 0
#endif

View File

@ -0,0 +1,23 @@
/*
problems.h for arm7/gcc-if07
Part of the DEBIE-1 benchmark.
$Id: problems.h,v 1.1 2008/04/09 11:26:38 niklas Exp $
*/
#ifndef PROBLEMS_H
#define PROBLEMS_H
#define FOR_PROBLEM(P)
/* A marker to indicate that the program is about to execute */
/* a test case that is to be included in the analysis problem */
/* identified by P. */
#define END_PROBLEM
/* A marker to indicate the end of a test case that is to be */
/* included in the analysis problem identified by the last */
/* executed FOR_PROBLEM. */
#endif

View File

@ -0,0 +1,67 @@
/*------------------------------------------------------------------------------
Copyright (C) 1998 : Space Systems Finland Ltd.
Space Systems Finland Ltd (SSF) allows you to use this version of
the DEBIE-I DPU software for the specific purpose and under the
specific conditions set forth in the Terms Of Use document enclosed
with or attached to this software. In particular, the software
remains the property of SSF and you must not distribute the software
to third parties without written and signed authorization from SSF.
System Name: DEBIE DPU SW, test harness for WCET analysis
Subsystem : DNI (DEBIE Null Interface)
Module : target.c
Target-specific implementations of the DNI operations, specifically
for the iF-DEV-LPC kit and the LPC2138 processor.
Based, with extensive changes, on parts of the SSF file rtx_if.c,
rev 1.13, Fri May 21 00:14:00 1999.
- * --------------------------------------------------------------------------
*/
/* This file contains one set of operations, as follows:
> memory operations: dpu_ctrl.h
*/
#include "keyword.h"
/* Memory operations : dpu_ctrl.h */
#include "dpu_ctrl.h"
#define DATA_MEM_BASE 0x40000000L
/* The SRAM starts at this address. */
unsigned char *Data_Pointer ( uint16_t address )
{
return ( unsigned char * )( DATA_MEM_BASE + ( uint32_t )address );
}
void Set_Data_Byte ( data_address_t addr, unsigned char value )
{
/* *(Data_Pointer (addr)) = value; */
/* Safer to do nothing. */
}
unsigned char Get_Data_Byte ( data_address_t addr )
{
return *( Data_Pointer ( addr ) );
}
unsigned char Get_Code_Byte ( code_address_t addr )
{
return 0;
}

View File

@ -0,0 +1,30 @@
/*------------------------------------------------------------------------------
Copyright (C) 1998 : Space Systems Finland Ltd.
Space Systems Finland Ltd (SSF) allows you to use this version of
the DEBIE-I DPU software for the specific purpose and under the
specific conditions set forth in the Terms Of Use document enclosed
with or attached to this software. In particular, the software
remains the property of SSF and you must not distribute the software
to third parties without written and signed authorization from SSF.
System Name: DEBIE DPU SW
Module : target_tm_data.h
The target-specific aspects of the Telemetry Data Structure.
Based on the SSF file tm_data.h, rev 1.22, Mon May 31 10:10:12 1999.
- * --------------------------------------------------------------------------
*/
#ifndef TARGET_TM_DATA_H
#define TARGET_TM_DATA_H
#define MAX_EVENTS 1261
/* Same as in the original DEBIE-1 SW, although there limited
by the size of the data memory.
*/
#endif

View File

@ -0,0 +1,10 @@
#include "keyword.h"
void wcc_memcpy( void *dest, void *src, int size )
{
int i;
_Pragma( "loopbound min 1 max 4" )
for ( i = 0; i < size; i++ )
( ( unsigned char * )dest )[ i ] = ( ( unsigned char * )src )[ i ];
return;
}

View File

@ -0,0 +1,52 @@
#!/bin/sh
#
# Script to compile "debie1" on the host Intel/Linux system
# using the target-specific code for mpc5554/gcc. This is
# meant to check that the MPC5554 port has no target-specific
# behaviour and (by default) no output; it does not generate
# an executable for the MPC5554.
#
# Any command-line arguments go into the CCOPT (eg. -Wpadded).
# As default, the trace output from the harness and target
# modules are disabled.
# Set tpd to the Test Program Directory:
tpd=../..
# Set hnd to the "harness" directory:
hnd=${tpd}/harness
# Native gcc and options:
export CC="gcc"
export CCOPT="-g -O2 -I. -I${hnd} -Wall $*"
export LD="gcc"
export LDOPT=
${CC} ${CCOPT} -c ${tpd}/class.c
${CC} ${CCOPT} -c ${tpd}/classtab.c
${CC} ${CCOPT} -c ${tpd}/debie.c
${CC} ${CCOPT} -c -I${tpd} ${hnd}/harness.c
${CC} ${CCOPT} -c ${tpd}/health.c
${CC} ${CCOPT} -c ${tpd}/hw_if.c
${CC} ${CCOPT} -c ${tpd}/measure.c
${CC} ${CCOPT} -c -I${tpd} target.c
${CC} ${CCOPT} -c ${tpd}/tc_hand.c
${CC} ${CCOPT} -c ${tpd}/telem.c
${CC} ${LDOPT} \
-o debie1 \
class.o \
classtab.o \
debie.o \
harness.o \
health.o \
hw_if.o \
measure.o \
target.o \
tc_hand.o \
telem.o

View File

@ -0,0 +1,166 @@
/*------------------------------------------------------------------------------
Copyright (C) 1998 : Space Systems Finland Ltd.
Space Systems Finland Ltd (SSF) allows you to use this version of
the DEBIE-I DPU software for the specific purpose and under the
specific conditions set forth in the Terms Of Use document enclosed
with or attached to this software. In particular, the software
remains the property of SSF and you must not distribute the software
to third parties without written and signed authorization from SSF.
System Name: DEBIE DPU SW
Subsystem : DNI (DEBIE Null Interface)
Module : keyword.h
Macro definitions for Keil specific keywords to be used
in portable parts of the DEBIE DPU software.
This version adapted to the GNU C compiler for the MPC5554.
Based on the SSF DHI file keyword.h, revision 1.9, Tue Mar 09 12:37:20 1999.
- * --------------------------------------------------------------------------
*/
#ifndef KEYWORD_H
#define KEYWORD_H
#include <string.h>
/* For memcpy (). */
/* Integer type definitions for native types that can hold integer
values of at least a given number of bits. These types are used
as loop counters to give the most natural and speedy code for
the current target. This is Not the C99 stdint.h, but the types
have similar names.
There is a particular form of this file for each (kind of) target
processor. The present form is for MPC5554/gcc, where the
widths the integer types are the following (as observed from the
code of the function Check_Type_Size in harness.c):
Type Octets Bits
char 1 8
short 2 16
int 4 32
long 4 32
This processor/compiler also has alignment concerns, so here we
define all telemetry data as octets and access it using memcpy()
instead of direct assignment.
*/
/* General types */
typedef int int_least8_t;
/* A signed integer covering at least -128 .. +127. */
typedef unsigned int uint_least8_t;
/* An unsigned integer covering at least 0 .. 255. */
typedef unsigned short uint16_t;
/* An unsigned 16-bit integer. */
typedef int int_least16_t;
/* A signed integer covering at least -2**15 .. +2**15 - 1. */
typedef unsigned int uint_least16_t;
/* An unsigned integer covering at least 0 .. 2**16 - 1. */
typedef uint16_t uskew16_t;
/* A 16-bit type, perhaps not an integer, perhaps not 16-bit aligned. */
/* If it is an integer type, it is unsigned. */
typedef unsigned int uint32_t;
/* An unsigned 32-bit integer. */
typedef uint32_t uskew32_t;
/* A 32-bit type, perhaps not an integer, perhaps not 32-bit aligned. */
/* If it is an integer type, it is unsigned. */
/* DEBIE-specific types */
typedef uint16_t data_address_t;
/* An address into external data memory. */
typedef uint16_t code_address_t;
/* An address into code memory. */
/* Macros for accessing the DPU data memory by numeric address. */
extern unsigned char *Data_Pointer ( uint16_t address );
#define DATA_POINTER(ADDR) Data_Pointer (ADDR)
/* Macros for accessing and copying multi-octet data. */
/* These may need target-specific adjustment if there are */
/* alignment restrictions on multi-octet integer values, */
/* because the operands in these macros may not be aligned */
/* in the required way. */
#define COPY(DEST,SOURCE) memcpy (&(DEST), &(SOURCE), sizeof(DEST))
/* Copies the value of SOURCE to the location DEST. */
extern unsigned short Short_Value ( uskew16_t *x );
#define VALUE_OF(SOURCE) Short_Value (&(SOURCE))
/* Returns the (integer) value of SOURCE, type uskew16_t. */
/* Macros for struct (aggregate) assignment. Some compilers */
/* may not support assignment statements for such types. */
#define STRUCT_ASSIGN(DEST,SOURCE,TYPE) DEST = SOURCE
/* Macros for calling "patch" functions */
typedef code_address_t fptr_t;
/* A function that is to be called after patching code memory. */
/* The function may or may not be part of the patched code. */
/* In the real SW this is "typedef void (*fptr_t)(void);" */
extern void Call_Patch ( fptr_t func );
/* "Call" the patch func. */
#define CALL_PATCH(FUNCTION) Call_Patch (FUNCTION)
/* Jump to the patched memory. */
/* Some macros for task and interrupt management */
#define TASK(TASK_NUMBER)
#define PRIORITY(LEVEL)
#define INTERRUPT(SOURCE)
#define USED_REG_BANK(BANK)
/* Macro for declaring re-entrant function */
#define REENTRANT_FUNC
/* Memory model handling macros */
#define COMPACT_DATA
#define COMPACT
#define PROGRAM
#define EXTERNAL
#define DIRECT_INTERNAL
#define INDIRECT_INTERNAL
#define LOCATION(ADDRESS)
/* Dealing with the benchmark target system */
#define TARGET_INIT {}
#define TARGET_MARK {}
#define TARGET_REBOOT {}
#define TARGET_START_TEST {}
#define TARGET_REPEAT_TEST 0
#endif

View File

@ -0,0 +1,254 @@
/* Default linker script, for normal executables */
OUTPUT_FORMAT("elf32-powerpc", "elf32-powerpc", "elf32-powerpc")
OUTPUT_ARCH(powerpc:common)
ENTRY(_start)
/* where to search for stuff */
SEARCH_DIR("=/usr/local/lib");
SEARCH_DIR("=/lib");
SEARCH_DIR("=/usr/lib");
/* end of stack */
__stack = 0x4000fff8;
___stack = 0x4000fff8;
/* sections */
SECTIONS
{
/* read-only sections, merged into text segment: */
PROVIDE (__executable_start = 0x000002000);
. = 0x00002000 + SIZEOF_HEADERS;
.interp : { *(.interp) }
.hash : { *(.hash) }
.dynsym : { *(.dynsym) }
.dynstr : { *(.dynstr) }
.gnu.version : { *(.gnu.version) }
.gnu.version_d : { *(.gnu.version_d) }
.gnu.version_r : { *(.gnu.version_r) }
.rel.init : { *(.rel.init) }
.rela.init : { *(.rela.init) }
.rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }
.rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) }
.rel.fini : { *(.rel.fini) }
.rela.fini : { *(.rela.fini) }
.rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }
.rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
.rel.data.rel.ro : { *(.rel.data.rel.ro*) }
.rela.data.rel.ro : { *(.rel.data.rel.ro*) }
.rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }
.rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
.rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }
.rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) }
.rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }
.rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) }
.rel.ctors : { *(.rel.ctors) }
.rela.ctors : { *(.rela.ctors) }
.rel.dtors : { *(.rel.dtors) }
.rela.dtors : { *(.rela.dtors) }
.rel.got : { *(.rel.got) }
.rela.got : { *(.rela.got) }
.rela.got1 : { *(.rela.got1) }
.rela.got2 : { *(.rela.got2) }
.rel.sdata : { *(.rel.sdata .rel.sdata.* .rel.gnu.linkonce.s.*) }
.rela.sdata : { *(.rela.sdata .rela.sdata.* .rela.gnu.linkonce.s.*) }
.rel.sbss : { *(.rel.sbss .rel.sbss.* .rel.gnu.linkonce.sb.*) }
.rela.sbss : { *(.rela.sbss .rela.sbss.* .rela.gnu.linkonce.sb.*) }
.rel.sdata2 : { *(.rel.sdata2 .rel.sdata2.* .rel.gnu.linkonce.s2.*) }
.rela.sdata2 : { *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*) }
.rel.sbss2 : { *(.rel.sbss2 .rel.sbss2.* .rel.gnu.linkonce.sb2.*) }
.rela.sbss2 : { *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*) }
.rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }
.rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) }
.rel.plt : { *(.rel.plt) }
.rela.plt : { *(.rela.plt) }
.init :
{
KEEP (*(.init))
} =0
.text :
{
*(.text .stub .text.* .gnu.linkonce.t.*)
KEEP (*(.text.*personality*))
/* .gnu.warning sections are handled specially by elf32.em. */
*(.gnu.warning)
} =0
.fini :
{
KEEP (*(.fini))
} =0
PROVIDE (__etext = .);
PROVIDE (_etext = .);
PROVIDE (etext = .);
.rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) }
.rodata1 : { *(.rodata1) }
.sdata2 : { *(.sdata2 .sdata2.* .gnu.linkonce.s2.*) }
.sbss2 : { *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*) }
.eh_frame_hdr : { *(.eh_frame_hdr) }
.eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) }
.gcc_except_table : ONLY_IF_RO { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) }
/* Exception handling */
.eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) }
.gcc_except_table : ONLY_IF_RW { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) }
/* Ensure the __preinit_array_start label is properly aligned. We
could instead move the label definition inside the section, but
the linker would then create the section even if it turns out to
be empty, which isn't pretty. */
. = ALIGN(32 / 8);
PROVIDE (__preinit_array_start = .);
.preinit_array : { KEEP (*(.preinit_array)) }
PROVIDE (__preinit_array_end = .);
PROVIDE (__init_array_start = .);
.init_array : { KEEP (*(.init_array)) }
PROVIDE (__init_array_end = .);
PROVIDE (__fini_array_start = .);
.fini_array : { KEEP (*(.fini_array)) }
PROVIDE (__fini_array_end = .);
.ctors :
{
/* gcc uses crtbegin.o to find the start of
the constructors, so we make sure it is
first. Because this is a wildcard, it
doesn't matter if the user does not
actually link against crtbegin.o; the
linker won't look for a file to match a
wildcard. The wildcard also means that it
doesn't matter which directory crtbegin.o
is in. */
KEEP (*crtbegin*.o(.ctors))
/* We don't want to include the .ctor section from
from the crtend.o file until after the sorted ctors.
The .ctor section from the crtend file contains the
end of ctors marker and it must be last */
KEEP (*(EXCLUDE_FILE (*crtend*.o ) .ctors))
KEEP (*(SORT(.ctors.*)))
KEEP (*(.ctors))
}
.dtors :
{
KEEP (*crtbegin*.o(.dtors))
KEEP (*(EXCLUDE_FILE (*crtend*.o ) .dtors))
KEEP (*(SORT(.dtors.*)))
KEEP (*(.dtors))
}
.jcr : { KEEP (*(.jcr)) }
.data.rel.ro : { *(.data.rel.ro.local) *(.data.rel.ro*) }
.fixup : { *(.fixup) }
.got1 : { *(.got1) }
.got2 : { *(.got2) }
.dynamic : { *(.dynamic) }
.got : { *(.got.plt) *(.got) }
.plt : { *(.plt) }
/* put some stuff into external ram */
. = 0x20000000;
.externalram : { *(.externalram) }
/* put data segment into internal sram */
. = 0x40000000;
. = DATA_SEGMENT_ALIGN (0x10000, 0x1000);
/* thread Local Storage sections */
.tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) }
.tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
.data :
{
*(.data .data.* .gnu.linkonce.d.*)
KEEP (*(.gnu.linkonce.d.*personality*))
SORT(CONSTRUCTORS)
}
.data1 : { *(.data1) }
/* We want the small data sections together, so single-instruction offsets
can access them all, and initialized data all before uninitialized, so
we can shorten the on-disk segment size. */
.sdata :
{
*(.sdata .sdata.* .gnu.linkonce.s.*)
}
_edata = .;
PROVIDE (edata = .);
__bss_start = .;
.sbss :
{
PROVIDE (__sbss_start = .);
PROVIDE (___sbss_start = .);
*(.dynsbss)
*(.sbss .sbss.* .gnu.linkonce.sb.*)
*(.scommon)
PROVIDE (__sbss_end = .);
PROVIDE (___sbss_end = .);
}
.bss :
{
*(.dynbss)
*(.bss .bss.* .gnu.linkonce.b.*)
*(COMMON)
/* Align here to ensure that the .bss section occupies space up to
_end. Align after .bss to ensure correct alignment even if the
.bss section disappears because there are no input sections. */
. = ALIGN(32 / 8);
}
. = ALIGN(32 / 8);
_end = .;
__end = .;
PROVIDE (end = .);
. = DATA_SEGMENT_END (.);
/* Stabs debugging sections. */
.stab 0 : { *(.stab) }
.stabstr 0 : { *(.stabstr) }
.stab.excl 0 : { *(.stab.excl) }
.stab.exclstr 0 : { *(.stab.exclstr) }
.stab.index 0 : { *(.stab.index) }
.stab.indexstr 0 : { *(.stab.indexstr) }
.comment 0 : { *(.comment) }
/* DWARF debug sections.
Symbols in the DWARF debugging sections are relative to the beginning
of the section so we begin them at 0. */
/* DWARF 1 */
.debug 0 : { *(.debug) }
.line 0 : { *(.line) }
/* GNU DWARF 1 extensions */
.debug_srcinfo 0 : { *(.debug_srcinfo) }
.debug_sfnames 0 : { *(.debug_sfnames) }
/* DWARF 1.1 and DWARF 2 */
.debug_aranges 0 : { *(.debug_aranges) }
.debug_pubnames 0 : { *(.debug_pubnames) }
/* DWARF 2 */
.debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
.debug_abbrev 0 : { *(.debug_abbrev) }
.debug_line 0 : { *(.debug_line) }
.debug_frame 0 : { *(.debug_frame) }
.debug_str 0 : { *(.debug_str) }
.debug_loc 0 : { *(.debug_loc) }
.debug_macinfo 0 : { *(.debug_macinfo) }
/* SGI/MIPS DWARF 2 extensions */
.debug_weaknames 0 : { *(.debug_weaknames) }
.debug_funcnames 0 : { *(.debug_funcnames) }
.debug_typenames 0 : { *(.debug_typenames) }
.debug_varnames 0 : { *(.debug_varnames) }
/DISCARD/ : { *(.note.GNU-stack) }
}

View File

@ -0,0 +1,20 @@
/*
problems.h for mpc5554/gcc.
Part of the DEBIE-1 benchmark.
*/
#ifndef PROBLEMS_H
#define PROBLEMS_H
#define FOR_PROBLEM(P) {}
/* A marker to indicate that the program is about to execute */
/* a test case that is to be included in the analysis problem */
/* identified by P. */
#define END_PROBLEM {}
/* A marker to indicate the end of a test case that is to be */
/* included in the analysis problem identified by the last */
/* executed FOR_PROBLEM. */
#endif

View File

@ -0,0 +1,12 @@
This folder contains header files and a build script
that compile and link the DEBIE-1 DPU SW benchmark for
execution on an MPC5554 processor. The completed
executable file is also provided.
The generated executable runs the test cases defined
in harness.c once and then stops. The executable does not
generate any output.
This port was contributed by Simon Wegener of AbsInt Angewandte
Informatik GmbH.

View File

@ -0,0 +1,49 @@
#!/bin/sh
#
# Script to cross-compile "debie1" for the MPC5554 with the
# CodeSourcery "G++ lite" GCC package.
#
# Any command-line arguments go into the CCOPT (eg. -Wpadded).
# As default, the trace output from the harness and target
# modules are disabled.
#
# One has to set the path to the compiler (i.e. CC) accordingly.
# Set tpd to the Test Program Directory:
tpd=../..
# Set hnd to the "harness" directory:
hnd=${tpd}/harness
# Target gcc and options:
export CC="/local/swegener/CodeSourcery/Sourcery_G++_Lite/bin/powerpc-eabi-gcc"
export CCOPT="-te500v1 -fshort-double -g -O2 -I. -I${hnd} -Wall -Wextra $*"
export LD="/local/swegener/CodeSourcery/Sourcery_G++_Lite/bin/powerpc-eabi-gcc"
export LDOPT="-te500v1 -fshort-double -Wl,-T./linker-mpc55xx-gcc.ld -static"
${CC} ${CCOPT} -c ${tpd}/class.c
${CC} ${CCOPT} -c ${tpd}/classtab.c
${CC} ${CCOPT} -c ${tpd}/debie.c
${CC} ${CCOPT} -c -I${tpd} ${hnd}/harness.c
${CC} ${CCOPT} -c ${tpd}/health.c
${CC} ${CCOPT} -c ${tpd}/hw_if.c
${CC} ${CCOPT} -c ${tpd}/measure.c
${CC} ${CCOPT} -c -I${tpd} target.c
${CC} ${CCOPT} -c ${tpd}/tc_hand.c
${CC} ${CCOPT} -c ${tpd}/telem.c
${CC} ${LDOPT} \
-o debie1.elf \
class.o \
classtab.o \
debie.o \
harness.o \
health.o \
hw_if.o \
measure.o \
target.o \
tc_hand.o \
telem.o

View File

@ -0,0 +1,84 @@
/*------------------------------------------------------------------------------
Copyright (C) 1998 : Space Systems Finland Ltd.
Space Systems Finland Ltd (SSF) allows you to use this version of
the DEBIE-I DPU software for the specific purpose and under the
specific conditions set forth in the Terms Of Use document enclosed
with or attached to this software. In particular, the software
remains the property of SSF and you must not distribute the software
to third parties without written and signed authorization from SSF.
System Name: DEBIE DPU SW, test harness for WCET analysis
Subsystem : DNI (DEBIE Null Interface)
Module : target.c
Target-specific implementations of the DNI operations, specifically
for the mpc5554/gcc target.
Options: if the preprocessor symbol TRACE_TARGET is defined,
these operations generate trace message on stdout.
Based, with extensive changes, on parts of the SSF file rtx_if.c,
rev 1.13, Fri May 21 00:14:00 1999.
- * --------------------------------------------------------------------------
*/
/* This file contains one set of operations, as follows:
> memory operations: dpu_ctrl.h
*/
#if defined(TRACE_TARGET)
#include <stdio.h>
#endif
#include "keyword.h"
/* Memory operations : dpu_ctrl.h */
#include "dpu_ctrl.h"
static char data_memory[ 65536 ] __attribute__( ( section( ".externalram" ) ) );
/* Simulated 80C32 external data RAM. */
unsigned char *Data_Pointer ( uint16_t address )
{
return &data_memory[ address ];
}
void Set_Data_Byte ( data_address_t addr, unsigned char value )
{
#if defined(TRACE_TARGET)
printf ( "Set_Data_Byte 0x%x to %d = 0x%x\n", addr, value, value );
#endif
data_memory[ addr ] = value;
}
unsigned char Get_Data_Byte ( data_address_t addr )
{
unsigned char value = data_memory[ addr ];
#if defined(TRACE_TARGET)
printf ( "Get_Data_Byte 0x%x is %d = 0x%x\n", addr, value, value );
#endif
return value;
}
unsigned char Get_Code_Byte ( code_address_t addr )
{
#if defined(TRACE_TARGET)
/* printf ("Get_Code_Byte 0x%x\n", addr); */
/* This would be to much output. Skip. */
#endif
return 0;
}

View File

@ -0,0 +1,31 @@
/*------------------------------------------------------------------------------
Copyright (C) 1998 : Space Systems Finland Ltd.
Space Systems Finland Ltd (SSF) allows you to use this version of
the DEBIE-I DPU software for the specific purpose and under the
specific conditions set forth in the Terms Of Use document enclosed
with or attached to this software. In particular, the software
remains the property of SSF and you must not distribute the software
to third parties without written and signed authorization from SSF.
System Name: DEBIE DPU SW
Module : target_tm_data.h
The target-specific aspects of the Telemetry Data Structure.
This version for the target mpc5554/gcc.
Based on the SSF file tm_data.h, rev 1.22, Mon May 31 10:10:12 1999.
- * --------------------------------------------------------------------------
*/
#ifndef TARGET_TM_DATA_H
#define TARGET_TM_DATA_H
#define MAX_EVENTS 1261
/* Same as in the original DEBIE-1 SW, although there limited
by the size of the data memory.
*/
#endif

View File

@ -0,0 +1,165 @@
/*------------------------------------------------------------------------------
Copyright (C) 1998 : Space Systems Finland Ltd.
Space Systems Finland Ltd (SSF) allows you to use this version of
the DEBIE-I DPU software for the specific purpose and under the
specific conditions set forth in the Terms Of Use document enclosed
with or attached to this software. In particular, the software
remains the property of SSF and you must not distribute the software
to third parties without written and signed authorization from SSF.
System Name: DEBIE DPU SW
Subsystem : DNI (DEBIE Null Interface)
Module : keyword.h
Macro definitions for Keil specific keywords to be used
in portable parts of the DEBIE DPU software.
This version adapted to GNU GCC on host Intel/Linux.
Based on the SSF DHI file keyword.h, revision 1.9, Tue Mar 09 12:37:20 1999.
- * --------------------------------------------------------------------------
*/
#ifndef KEYWORD_H
#define KEYWORD_H
/* Integer type definitions for native types that can hold integer
values of at least a given number of bits. These types are used
as loop counters to give the most natural and speedy code for
the current target. This is Not the C99 stdint.h, but the types
have similar names.
There is a particular form of this file for each (kind of) target
processor. The present form is for GCC on 32-bit Intel/Linux, where
the widths of the integer types are the following:
Type Octets Bits
char 1 8
short 2 16
int 4 32
long 4 32
This processor/compiler accepts unaliged multi-octet data, although
access is slower. However, we still access possibly misaligned
telemetry data using memcpy() instead of direct assignment,
just to test that this approach works.
*/
/* General types */
typedef int int_least8_t;
/* A signed integer covering at least -128 .. +127. */
typedef unsigned int uint_least8_t;
/* An unsigned integer covering at least 0 .. 255. */
typedef unsigned short uint16_t;
/* An unsigned 16-bit integer. */
typedef int int_least16_t;
/* A signed integer covering at least -2**15 .. +2**15 - 1. */
typedef unsigned int uint_least16_t;
/* An unsigned integer covering at least 0 .. 2**16 - 1. */
typedef uint16_t uskew16_t;
/* A 16-bit type, perhaps not an integer, perhaps not 16-bit aligned. */
/* If it is an integer type, it is unsigned. */
typedef unsigned int uint32_t;
/* An unsigned 32-bit integer. */
typedef uint32_t uskew32_t;
/* A 32-bit type, perhaps not an integer, perhaps not 32-bit aligned. */
/* If it is an integer type, it is unsigned. */
/* DEBIE-specific types */
typedef uint32_t data_address_t;
/* An address into external data memory. */
typedef uint32_t code_address_t;
/* An address into code memory. */
/* Macros for accessing the DPU data memory by numeric address. */
extern unsigned char *Data_Pointer ( uint16_t address );
#define DATA_POINTER(ADDR) Data_Pointer (ADDR)
/* Macros for accessing and copying multi-octet data. */
/* These may need target-specific adjustment if there are */
/* alignment restrictions on multi-octet integer values, */
/* because the operands in these macros may not be aligned */
/* in the required way. */
extern void wcc_memcpy( void *dest, void *src, int size );
#define COPY(DEST,SOURCE) wcc_memcpy (&(DEST), &(SOURCE), sizeof(DEST))
/* Copies the value of SOURCE to the location DEST. */
extern unsigned short Short_Value ( uskew16_t *x );
#define VALUE_OF(SOURCE) Short_Value (&(SOURCE))
/* Returns the (integer) value of SOURCE, type uskew16_t. */
/* Macros for struct (aggregate) assignment. Some compilers */
/* may not support assignment statements for such types. */
#define STRUCT_ASSIGN(DEST,SOURCE,TYPE) DEST = SOURCE
/* Macros for calling "patch" functions */
typedef code_address_t fptr_t;
/* A function that is to be called after patching code memory. */
/* The function may or may not be part of the patched code. */
/* In the real SW this is "typedef void (*fptr_t)(void);" */
extern void Call_Patch ( fptr_t func );
/* "Call" the patch func. */
#define CALL_PATCH(FUNCTION) Call_Patch (FUNCTION)
/* Jump to the patched memory. */
/* Some macros for task and interrupt management */
#define TASK(TASK_NUMBER)
#define PRIORITY(LEVEL)
#define INTERRUPT(SOURCE)
#define USED_REG_BANK(BANK)
/* Macro for declaring re-entrant function */
#define REENTRANT_FUNC
/* Memory model handling macros */
#define COMPACT_DATA
#define COMPACT
#define PROGRAM
#define EXTERNAL
#define DIRECT_INTERNAL
#define INDIRECT_INTERNAL
#define LOCATION(ADDRESS)
/* Dealing with the benchmark target system */
#define TARGET_INIT
#define TARGET_MARK
#define TARGET_REBOOT
#define TARGET_START_TEST
#define TARGET_REPEAT_TEST 0
#endif

View File

@ -0,0 +1,23 @@
/*
problems.h for intel/linux
Part of the DEBIE-1 benchmark.
$Id: problems.h,v 1.1 2008/03/28 08:22:17 niklas Exp $
*/
#ifndef PROBLEMS_H
#define PROBLEMS_H
#define FOR_PROBLEM(P)
/* A marker to indicate that the program is about to execute */
/* a test case that is to be included in the analysis problem */
/* identified by P. */
#define END_PROBLEM
/* A marked to indicate the end of a test case that is to be */
/* included in the analysis problem identified by the last */
/* executed FOR_PROBLEM. */
#endif

View File

@ -0,0 +1,67 @@
/*------------------------------------------------------------------------------
Copyright (C) 1998 : Space Systems Finland Ltd.
Space Systems Finland Ltd (SSF) allows you to use this version of
the DEBIE-I DPU software for the specific purpose and under the
specific conditions set forth in the Terms Of Use document enclosed
with or attached to this software. In particular, the software
remains the property of SSF and you must not distribute the software
to third parties without written and signed authorization from SSF.
System Name: DEBIE DPU SW, test harness for WCET analysis
Subsystem : DNI (DEBIE Null Interface)
Module : target.c
Target-specific implementations of the DNI operations, specifically
for the iF-DEV-LPC kit and the LPC2138 processor.
Based, with extensive changes, on parts of the SSF file rtx_if.c,
rev 1.13, Fri May 21 00:14:00 1999.
- * --------------------------------------------------------------------------
*/
/* This file contains one set of operations, as follows:
> memory operations: dpu_ctrl.h
*/
#include "keyword.h"
/* Memory operations : dpu_ctrl.h */
#include "dpu_ctrl.h"
#define DATA_MEM_BASE 0xc0000000L
/* The SRAM starts at this address. */
unsigned char *Data_Pointer ( uint16_t address )
{
return ( unsigned char * )( DATA_MEM_BASE + ( uint32_t )address );
}
void Set_Data_Byte ( data_address_t addr, unsigned char value )
{
/* *(Data_Pointer (addr)) = value; */
/* Safer to do nothing. */
}
unsigned char Get_Data_Byte ( data_address_t addr )
{
return *( Data_Pointer ( addr ) );
}
unsigned char Get_Code_Byte ( code_address_t addr )
{
return 0;
}

View File

@ -0,0 +1,30 @@
/*------------------------------------------------------------------------------
Copyright (C) 1998 : Space Systems Finland Ltd.
Space Systems Finland Ltd (SSF) allows you to use this version of
the DEBIE-I DPU software for the specific purpose and under the
specific conditions set forth in the Terms Of Use document enclosed
with or attached to this software. In particular, the software
remains the property of SSF and you must not distribute the software
to third parties without written and signed authorization from SSF.
System Name: DEBIE DPU SW
Module : target_tm_data.h
The target-specific aspects of the Telemetry Data Structure.
Based on the SSF file tm_data.h, rev 1.22, Mon May 31 10:10:12 1999.
- * --------------------------------------------------------------------------
*/
#ifndef TARGET_TM_DATA_H
#define TARGET_TM_DATA_H
#define MAX_EVENTS 1261
/* Same as in the original DEBIE-1 SW, although there limited
by the size of the data memory.
*/
#endif

View File

@ -0,0 +1,10 @@
#include "keyword.h"
void wcc_memcpy( void *dest, void *src, int size )
{
int i;
_Pragma( "loopbound min 1 max 4" )
for ( i = 0; i < size; i++ )
( ( unsigned char * )dest )[ i ] = ( ( unsigned char * )src )[ i ];
return;
}

View File

@ -0,0 +1,165 @@
/*------------------------------------------------------------------------------
Copyright (C) 1998 : Space Systems Finland Ltd.
Space Systems Finland Ltd (SSF) allows you to use this version of
the DEBIE-I DPU software for the specific purpose and under the
specific conditions set forth in the Terms Of Use document enclosed
with or attached to this software. In particular, the software
remains the property of SSF and you must not distribute the software
to third parties without written and signed authorization from SSF.
System Name: DEBIE DPU SW
Subsystem : DNI (DEBIE Null Interface)
Module : keyword.h
Macro definitions for Keil specific keywords to be used
in portable parts of the DEBIE DPU software.
This version adapted to GNU GCC on host Intel/Linux.
Based on the SSF DHI file keyword.h, revision 1.9, Tue Mar 09 12:37:20 1999.
- * --------------------------------------------------------------------------
*/
#ifndef KEYWORD_H
#define KEYWORD_H
/* Integer type definitions for native types that can hold integer
values of at least a given number of bits. These types are used
as loop counters to give the most natural and speedy code for
the current target. This is Not the C99 stdint.h, but the types
have similar names.
There is a particular form of this file for each (kind of) target
processor. The present form is for GCC on 32-bit Intel/Linux, where
the widths of the integer types are the following:
Type Octets Bits
char 1 8
short 2 16
int 4 32
long 4 32
This processor/compiler accepts unaliged multi-octet data, although
access is slower. However, we still access possibly misaligned
telemetry data using memcpy() instead of direct assignment,
just to test that this approach works.
*/
/* General types */
typedef int int_least8_t;
/* A signed integer covering at least -128 .. +127. */
typedef unsigned int uint_least8_t;
/* An unsigned integer covering at least 0 .. 255. */
typedef unsigned short uint16_t;
/* An unsigned 16-bit integer. */
typedef int int_least16_t;
/* A signed integer covering at least -2**15 .. +2**15 - 1. */
typedef unsigned int uint_least16_t;
/* An unsigned integer covering at least 0 .. 2**16 - 1. */
typedef uint16_t uskew16_t;
/* A 16-bit type, perhaps not an integer, perhaps not 16-bit aligned. */
/* If it is an integer type, it is unsigned. */
typedef unsigned int uint32_t;
/* An unsigned 32-bit integer. */
typedef uint32_t uskew32_t;
/* A 32-bit type, perhaps not an integer, perhaps not 32-bit aligned. */
/* If it is an integer type, it is unsigned. */
/* DEBIE-specific types */
typedef uint32_t data_address_t;
/* An address into external data memory. */
typedef uint32_t code_address_t;
/* An address into code memory. */
/* Macros for accessing the DPU data memory by numeric address. */
extern unsigned char *Data_Pointer ( uint16_t address );
#define DATA_POINTER(ADDR) Data_Pointer (ADDR)
/* Macros for accessing and copying multi-octet data. */
/* These may need target-specific adjustment if there are */
/* alignment restrictions on multi-octet integer values, */
/* because the operands in these macros may not be aligned */
/* in the required way. */
extern void wcc_memcpy( void *dest, void *src, int size );
#define COPY(DEST,SOURCE) wcc_memcpy (&(DEST), &(SOURCE), sizeof(DEST))
/* Copies the value of SOURCE to the location DEST. */
extern unsigned short Short_Value ( uskew16_t *x );
#define VALUE_OF(SOURCE) Short_Value (&(SOURCE))
/* Returns the (integer) value of SOURCE, type uskew16_t. */
/* Macros for struct (aggregate) assignment. Some compilers */
/* may not support assignment statements for such types. */
#define STRUCT_ASSIGN(DEST,SOURCE,TYPE) DEST = SOURCE
/* Macros for calling "patch" functions */
typedef code_address_t fptr_t;
/* A function that is to be called after patching code memory. */
/* The function may or may not be part of the patched code. */
/* In the real SW this is "typedef void (*fptr_t)(void);" */
extern void Call_Patch ( fptr_t func );
/* "Call" the patch func. */
#define CALL_PATCH(FUNCTION) Call_Patch (FUNCTION)
/* Jump to the patched memory. */
/* Some macros for task and interrupt management */
#define TASK(TASK_NUMBER)
#define PRIORITY(LEVEL)
#define INTERRUPT(SOURCE)
#define USED_REG_BANK(BANK)
/* Macro for declaring re-entrant function */
#define REENTRANT_FUNC
/* Memory model handling macros */
#define COMPACT_DATA
#define COMPACT
#define PROGRAM
#define EXTERNAL
#define DIRECT_INTERNAL
#define INDIRECT_INTERNAL
#define LOCATION(ADDRESS)
/* Dealing with the benchmark target system */
#define TARGET_INIT
#define TARGET_MARK
#define TARGET_REBOOT
#define TARGET_START_TEST
#define TARGET_REPEAT_TEST 0
#endif

View File

@ -0,0 +1,23 @@
/*
problems.h for intel/linux
Part of the DEBIE-1 benchmark.
$Id: problems.h,v 1.1 2008/03/28 08:22:17 niklas Exp $
*/
#ifndef PROBLEMS_H
#define PROBLEMS_H
#define FOR_PROBLEM(P)
/* A marker to indicate that the program is about to execute */
/* a test case that is to be included in the analysis problem */
/* identified by P. */
#define END_PROBLEM
/* A marked to indicate the end of a test case that is to be */
/* included in the analysis problem identified by the last */
/* executed FOR_PROBLEM. */
#endif

View File

@ -0,0 +1,67 @@
/*------------------------------------------------------------------------------
Copyright (C) 1998 : Space Systems Finland Ltd.
Space Systems Finland Ltd (SSF) allows you to use this version of
the DEBIE-I DPU software for the specific purpose and under the
specific conditions set forth in the Terms Of Use document enclosed
with or attached to this software. In particular, the software
remains the property of SSF and you must not distribute the software
to third parties without written and signed authorization from SSF.
System Name: DEBIE DPU SW, test harness for WCET analysis
Subsystem : DNI (DEBIE Null Interface)
Module : target.c
Target-specific implementations of the DNI operations, specifically
for the iF-DEV-LPC kit and the LPC2138 processor.
Based, with extensive changes, on parts of the SSF file rtx_if.c,
rev 1.13, Fri May 21 00:14:00 1999.
- * --------------------------------------------------------------------------
*/
/* This file contains one set of operations, as follows:
> memory operations: dpu_ctrl.h
*/
#include "keyword.h"
/* Memory operations : dpu_ctrl.h */
#include "dpu_ctrl.h"
#define DATA_MEM_BASE 0xd0006000L
/* The SRAM starts at this address. */
unsigned char *Data_Pointer ( uint16_t address )
{
return ( unsigned char * )( DATA_MEM_BASE + ( uint32_t )address );
}
void Set_Data_Byte ( data_address_t addr, unsigned char value )
{
/* *(Data_Pointer (addr)) = value; */
/* Safer to do nothing. */
}
unsigned char Get_Data_Byte ( data_address_t addr )
{
return *( Data_Pointer ( addr ) );
}
unsigned char Get_Code_Byte ( code_address_t addr )
{
return 0;
}

View File

@ -0,0 +1,30 @@
/*------------------------------------------------------------------------------
Copyright (C) 1998 : Space Systems Finland Ltd.
Space Systems Finland Ltd (SSF) allows you to use this version of
the DEBIE-I DPU software for the specific purpose and under the
specific conditions set forth in the Terms Of Use document enclosed
with or attached to this software. In particular, the software
remains the property of SSF and you must not distribute the software
to third parties without written and signed authorization from SSF.
System Name: DEBIE DPU SW
Module : target_tm_data.h
The target-specific aspects of the Telemetry Data Structure.
Based on the SSF file tm_data.h, rev 1.22, Mon May 31 10:10:12 1999.
- * --------------------------------------------------------------------------
*/
#ifndef TARGET_TM_DATA_H
#define TARGET_TM_DATA_H
#define MAX_EVENTS 1261
/* Same as in the original DEBIE-1 SW, although there limited
by the size of the data memory.
*/
#endif

View File

@ -0,0 +1,10 @@
#include "keyword.h"
void wcc_memcpy( void *dest, void *src, int size )
{
int i;
_Pragma( "loopbound min 1 max 4" )
for ( i = 0; i < size; i++ )
( ( unsigned char * )dest )[ i ] = ( ( unsigned char * )src )[ i ];
return;
}

View File

@ -0,0 +1,48 @@
#!/bin/sh
#
# Script to compile debie1 on the host Intel/Linux system.
#
# Any arguments go into the CCOPT (eg. -Wpadded).
# Set tpd to the Test Program Directory:
tpd=../..
# Set hnd to the "harness" directory:
hnd=${tpd}/harness
# Native gcc and options:
export CC="gcc"
export CCOPT="-g -O2 -I. -I${hnd} -Wall $*"
export LD="gcc"
export LDOPT=
${CC} ${CCOPT} -c ${tpd}/class.c
${CC} ${CCOPT} -c ${tpd}/classtab.c
${CC} ${CCOPT} -c ${tpd}/debie.c
${CC} ${CCOPT} -c -I${tpd} ${hnd}/harness.c -DTRACE_HARNESS
${CC} ${CCOPT} -c ${tpd}/health.c
${CC} ${CCOPT} -c ${tpd}/hw_if.c
${CC} ${CCOPT} -c ${tpd}/measure.c
${CC} ${CCOPT} -c -I${tpd} target.c -DTRACE_TARGET
${CC} ${CCOPT} -c ${tpd}/tc_hand.c
${CC} ${CCOPT} -c ${tpd}/telem.c
${CC} ${CCOPT} -c wcc_memcpy.c
${CC} ${LDOPT} \
-o debie1 \
class.o \
classtab.o \
debie.o \
harness.o \
health.o \
hw_if.o \
measure.o \
target.o \
tc_hand.o \
telem.o \
wcc_memcpy.o

View File

@ -0,0 +1,166 @@
/*------------------------------------------------------------------------------
Copyright (C) 1998 : Space Systems Finland Ltd.
Space Systems Finland Ltd (SSF) allows you to use this version of
the DEBIE-I DPU software for the specific purpose and under the
specific conditions set forth in the Terms Of Use document enclosed
with or attached to this software. In particular, the software
remains the property of SSF and you must not distribute the software
to third parties without written and signed authorization from SSF.
System Name: DEBIE DPU SW
Subsystem : DNI (DEBIE Null Interface)
Module : keyword.h
Macro definitions for Keil specific keywords to be used
in portable parts of the DEBIE DPU software.
This version adapted to GNU GCC on host Intel/Linux.
Based on the SSF DHI file keyword.h, revision 1.9, Tue Mar 09 12:37:20 1999.
- * --------------------------------------------------------------------------
*/
#ifndef KEYWORD_H
#define KEYWORD_H
/* Integer type definitions for native types that can hold integer
values of at least a given number of bits. These types are used
as loop counters to give the most natural and speedy code for
the current target. This is Not the C99 stdint.h, but the types
have similar names.
There is a particular form of this file for each (kind of) target
processor. The present form is for GCC on 32-bit Intel/Linux, where
the widths of the integer types are the following:
Type Octets Bits
char 1 8
short 2 16
int 4 32
long 4 32
This processor/compiler accepts unaliged multi-octet data, although
access is slower. However, we still access possibly misaligned
telemetry data using memcpy() instead of direct assignment,
just to test that this approach works.
*/
/* General types */
typedef int int_least8_t;
/* A signed integer covering at least -128 .. +127. */
typedef unsigned int uint_least8_t;
/* An unsigned integer covering at least 0 .. 255. */
typedef unsigned short uint16_t;
/* An unsigned 16-bit integer. */
typedef int int_least16_t;
/* A signed integer covering at least -2**15 .. +2**15 - 1. */
typedef unsigned int uint_least16_t;
/* An unsigned integer covering at least 0 .. 2**16 - 1. */
typedef uint16_t uskew16_t;
/* A 16-bit type, perhaps not an integer, perhaps not 16-bit aligned. */
/* If it is an integer type, it is unsigned. */
typedef unsigned int uint32_t;
/* An unsigned 32-bit integer. */
typedef uint32_t uskew32_t;
/* A 32-bit type, perhaps not an integer, perhaps not 32-bit aligned. */
/* If it is an integer type, it is unsigned. */
/* DEBIE-specific types */
typedef uint16_t data_address_t;
/* An address into external data memory. */
typedef uint16_t code_address_t;
/* An address into code memory. */
/* Macros for accessing the DPU data memory by numeric address. */
extern unsigned char *Data_Pointer ( uint16_t address );
#define DATA_POINTER(ADDR) Data_Pointer (ADDR)
/* Macros for accessing and copying multi-octet data. */
/* These may need target-specific adjustment if there are */
/* alignment restrictions on multi-octet integer values, */
/* because the operands in these macros may not be aligned */
/* in the required way. */
extern void wcc_memcpy( void *, void *, int );
#define COPY(DEST,SOURCE) wcc_memcpy (&(DEST), &(SOURCE), sizeof(DEST))
/* Copies the value of SOURCE to the location DEST. */
extern unsigned short Short_Value ( uskew16_t *x );
#define VALUE_OF(SOURCE) Short_Value (&(SOURCE))
/* Returns the (integer) value of SOURCE, type uskew16_t. */
/* Macros for struct (aggregate) assignment. Some compilers */
/* may not support assignment statements for such types. */
#define STRUCT_ASSIGN(DEST,SOURCE,TYPE) DEST = SOURCE
/* Macros for calling "patch" functions */
typedef code_address_t fptr_t;
/* A function that is to be called after patching code memory. */
/* The function may or may not be part of the patched code. */
/* In the real SW this is "typedef void (*fptr_t)(void);" */
extern void Call_Patch ( fptr_t func );
/* "Call" the patch func. */
#define CALL_PATCH(FUNCTION) Call_Patch (FUNCTION)
/* Jump to the patched memory. */
/* Some macros for task and interrupt management */
#define TASK(TASK_NUMBER)
#define PRIORITY(LEVEL)
#define INTERRUPT(SOURCE)
#define USED_REG_BANK(BANK)
/* Macro for declaring re-entrant function */
#define REENTRANT_FUNC
/* Memory model handling macros */
#define COMPACT_DATA
#define COMPACT
#define PROGRAM
#define EXTERNAL
#define DIRECT_INTERNAL
#define INDIRECT_INTERNAL
#define LOCATION(ADDRESS)
/* Dealing with the benchmark target system */
#include <stdio.h>
#define TARGET_INIT printf ("Target Init.\n")
#define TARGET_MARK printf ("Target Mark.\n")
#define TARGET_REBOOT printf ("Target Reboot.\n")
#define TARGET_START_TEST printf ("Target Start Test.\n")
#define TARGET_REPEAT_TEST 0
#endif

View File

@ -0,0 +1,27 @@
/*
problems.h for intel/linux
Part of the DEBIE-1 benchmark.
$Id: problems.h,v 1.1 2008/03/28 08:22:17 niklas Exp $
*/
#ifndef PROBLEMS_H
#define PROBLEMS_H
#include "rpt_ipoint.h"
#define FOR_PROBLEM(P) { RPT_Ipoint(3); RPT_Ipoint(P); }
/* A marker to indicate that the program is about to execute */
/* a test case that is to be included in the analysis problem */
/* identified by P. */
/* For RapiTime, ipoint 3 shall be defined as an "escape", and */
/* the associated info (P) shall be used to "demux" the trace. */
#define END_PROBLEM { RPT_Ipoint(3); RPT_Ipoint(0); }
/* A marked to indicate the end of a test case that is to be */
/* included in the analysis problem identified by the last */
/* executed FOR_PROBLEM. */
#endif

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,18 @@
/*
rpt_ipoint.h for intel/linux
Part of the DEBIE-1 benchmark.
$Id: rpt_ipoint.h,v 1.1 2008/03/28 08:22:18 niklas Exp $
*/
#ifndef RPT_IPOINT_H
#define RPT_IPOINT_H
#include <stdio.h>
//#define RPT_Ipoint(N) printf ("RPT_Ipoint %d\n", N)
#define RPT_Ipoint(N)
#endif

View File

@ -0,0 +1,84 @@
/*------------------------------------------------------------------------------
Copyright (C) 1998 : Space Systems Finland Ltd.
Space Systems Finland Ltd (SSF) allows you to use this version of
the DEBIE-I DPU software for the specific purpose and under the
specific conditions set forth in the Terms Of Use document enclosed
with or attached to this software. In particular, the software
remains the property of SSF and you must not distribute the software
to third parties without written and signed authorization from SSF.
System Name: DEBIE DPU SW, test harness for WCET analysis
Subsystem : DNI (DEBIE Null Interface)
Module : target.c
Target-specific implementations of the DNI operations, specifically
for the intel/linux target.
Options: if the preprocessor symbol TRACE_TARGET is defined,
these operations generate trace message on stdout.
Based, with extensive changes, on parts of the SSF file rtx_if.c,
rev 1.13, Fri May 21 00:14:00 1999.
- * --------------------------------------------------------------------------
*/
/* This file contains one set of operations, as follows:
> memory operations: dpu_ctrl.h
*/
#if defined(TRACE_TARGET)
#include <stdio.h>
#endif
#include "keyword.h"
/* Memory operations : dpu_ctrl.h */
#include "dpu_ctrl.h"
static char data_memory[ 65536 ];
/* Simulated 80C32 external data RAM. */
unsigned char *Data_Pointer ( uint16_t address )
{
return &data_memory[ address ];
}
void Set_Data_Byte ( data_address_t addr, unsigned char value )
{
#if defined(TRACE_TARGET)
printf ( "Set_Data_Byte 0x%x to %d = 0x%x\n", addr, value, value );
#endif
data_memory[ addr ] = value;
}
unsigned char Get_Data_Byte ( data_address_t addr )
{
unsigned char value = data_memory[ addr ];
#if defined(TRACE_TARGET)
printf ( "Get_Data_Byte 0x%x is %d = 0x%x\n", addr, value, value );
#endif
return value;
}
unsigned char Get_Code_Byte ( code_address_t addr )
{
#if defined(TRACE_TARGET)
/* printf ("Get_Code_Byte 0x%x\n", addr); */
/* This would be to much output. Skip. */
#endif
return 0;
}

View File

@ -0,0 +1,30 @@
/*------------------------------------------------------------------------------
Copyright (C) 1998 : Space Systems Finland Ltd.
Space Systems Finland Ltd (SSF) allows you to use this version of
the DEBIE-I DPU software for the specific purpose and under the
specific conditions set forth in the Terms Of Use document enclosed
with or attached to this software. In particular, the software
remains the property of SSF and you must not distribute the software
to third parties without written and signed authorization from SSF.
System Name: DEBIE DPU SW
Module : target_tm_data.h
The target-specific aspects of the Telemetry Data Structure.
Based on the SSF file tm_data.h, rev 1.22, Mon May 31 10:10:12 1999.
- * --------------------------------------------------------------------------
*/
#ifndef TARGET_TM_DATA_H
#define TARGET_TM_DATA_H
#define MAX_EVENTS 1261
/* Same as in the original DEBIE-1 SW, although there limited
by the size of the data memory.
*/
#endif

View File

@ -0,0 +1,10 @@
#include "keyword.h"
void wcc_memcpy( void *dest, void *src, int size )
{
int i;
_Pragma( "loopbound min 2 max 4" )
for ( i = 0; i < size; i++ )
( ( unsigned char * )dest )[ i ] = ( ( unsigned char * )src )[ i ];
return;
}