# HG changeset patch # User jlarmour # Date 941576227 0 # Node ID a0774359f0130761072b0073f904354f8e994e3c # Parent 698ff3191b93f5cb98f5e344968f106a51be497a Merge from eCos master repository on 1999-11-02-17:02:15-GMT diff --git a/packages/ChangeLog b/packages/ChangeLog --- a/packages/ChangeLog +++ b/packages/ChangeLog @@ -1,3 +1,12 @@ +1999-10-27 Jesper Skov + + * targets: Reenabled stubs startup for pid9. + +1999-10-26 Jesper Skov + + * targets: Removed stubs startup for pid9. + * targets: Added pidBE platform. + 1999-10-19 Jesper Skov * targets: Added pid9 target. diff --git a/packages/NEWS b/packages/NEWS --- a/packages/NEWS +++ b/packages/NEWS @@ -32,10 +32,11 @@ *** The following are the new target platforms... - **** ARM: - ARM720 - Cirrus Logic CL7211 board - ARM710C - Cirrus Logic CL7111 board + ARM7TDMI - ARM PID7T board configured in big-endian mode + Cirrus Logic EP7211 (ARM720) CPU - Cirrus Logic EDB7211 evaluation board + (silk-screened EDB7111-2) + Cirrus Logic CL-PS7111 (ARM710C) CPU - Cirrus Logic EB7111 evaluation board Sharp LH77790 (ARM7DI core) - ARM AEB-1 rev C board **** PowerPC @@ -52,11 +53,11 @@ *** These are the new host platforms... -**** FIXME +**** None yet ** Host tool features -**** FIXME +**** None yet ** Drivers *** Watchdog Drivers added for: @@ -64,18 +65,17 @@ ** New toolchain features -** API additions (are there any?) +** API additions + -*** FIXME +*** Debugging + The file defines some functions + that can be used to profile stack usage. ** API changes *** Kernel -**** Debugging - The file defines some functions - that can be used to profile stack usage. - **** KAPI include/kapi.h (cyg_thread_delete): is now a boolean function to indicate success. Failure is when the thread needs to run in @@ -90,3 +90,6 @@ (except in special configurations, see linux_misc.c). *** Common + +** Other new features + diff --git a/packages/hal/arm/aeb/current/ChangeLog b/packages/hal/arm/aeb/current/ChangeLog --- a/packages/hal/arm/aeb/current/ChangeLog +++ b/packages/hal/arm/aeb/current/ChangeLog @@ -1,3 +1,22 @@ +1999-10-28 Jesper Skov + + * misc/PKGconf.mak: Don't strip symbols when making .img. + +1999-10-27 Jesper Skov + + * misc/PKGconf.mak: Build UU encoded stubs per default. + + * misc/STUBS_config: + Updated stub scripts. Allow to configure for revC. + + * src/hal_diag.c: Fixed conditional include. + +1999-10-26 Hugo Tyson + + * src/hal_diag.c (hal_diag_write_char): Use new macro + CYG_HAL_GDB_ENTER_CRITICAL_IO_REGION and its mate to control + stepping through gdb $O packet output. + 1999-10-12 Jesper Skov * include/pkgconf/hal_arm_aeb.h: Add CT config of revision. diff --git a/packages/hal/arm/aeb/current/misc/PKGconf.mak b/packages/hal/arm/aeb/current/misc/PKGconf.mak --- a/packages/hal/arm/aeb/current/misc/PKGconf.mak +++ b/packages/hal/arm/aeb/current/misc/PKGconf.mak @@ -38,7 +38,7 @@ PACKAGE := hal_arm_aeb include ../../../../../pkgconf/pkgconf.mak PROGS := gdb_module_ncs -OTHER_PROGS := gdb_module.img +OTHER_PROGS := gdb_module.img gdb_module.img.UU WHEREAMI := misc CKSUM = 0 @@ -59,7 +59,7 @@ gdb_module.cs: gdb_module_ncs.stamp $(SRC)/gdb_module.c -DCHECKSUM=$(CKSUM) gdb_module.img: gdb_module.cs gdb_module.stamp - $(OBJCOPY) --strip-all gdb_module gdb_module.img.XX + $(OBJCOPY) --strip-debug gdb_module gdb_module.img.XX $(OBJCOPY) --change-addresses=0xFBFF4000 gdb_module.img.XX gdb_module.img $(OBJCOPY) -O binary gdb_module.img gdb_module.img.raw $(RM) -f gdb_module.img.XX diff --git a/packages/hal/arm/aeb/current/misc/STUBS_config b/packages/hal/arm/aeb/current/misc/STUBS_config --- a/packages/hal/arm/aeb/current/misc/STUBS_config +++ b/packages/hal/arm/aeb/current/misc/STUBS_config @@ -1,10 +1,33 @@ #! /bin/sh - -# Configure ARM/AEB eCos to create AEB-1 GDB stubs +# Configure ARM/AEB-1 eCos to create AEB-1 GDB stubs +# Ensure that PATH include the directory where the ARM tools reside. +# +# Run from an empty temporary directory with two arguments: the path to +# the packages directory (i.e., where pkgconf.tcl lives), and the platform +# name (aeb or aebC). +# +# Output files are in the directory hal/arm/aeb//misc. +# gdb_module.img: suitable for programming via GDB stub/Angel +# gdb_module.img.UU: suitable for programming via ROM menu +# See Notes for details. +if [ "$2"x = "x" ]; then + AEB="aeb" +else + AEB=$2 +fi -tcl $1/pkgconf.tcl \ - --target=arm --platform=aeb --startup=stubs \ +if ( echo | tclsh ) 2>/dev/null ; then + TCL=tclsh +elif ( echo | cygtclsh80 ) 2>/dev/null ; then + TCL=cygtclsh80 +else + echo Could not find TCL interpreter + exit 1 +fi + +$TCL $1/pkgconf.tcl \ + --target=arm --platform=${AEB} --startup=stubs \ --disable CYGPKG_KERNEL --disable CYGPKG_UITRON \ --disable CYGPKG_LIBC --disable CYGPKG_LIBM \ --disable CYGPKG_ERROR --disable CYGPKG_IO \ @@ -12,9 +35,18 @@ tcl $1/pkgconf.tcl --disable CYGPKG_DEVICES_WATCHDOG patch < // interrupt macros #include // IO macros #include -#ifdef CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT +#ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS #include +#include // cyg_hal_gdb_interrupt #endif // Assumption: all diagnostic output must be GDB packetized unless this is a ROM (i.e. @@ -269,7 +270,11 @@ hal_diag_write_char(char c) // receive interrupt will be seen when we re-enable interrupts // later. +#ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS + CYG_HAL_GDB_ENTER_CRITICAL_IO_REGION(old); +#else HAL_DISABLE_INTERRUPTS(old); +#endif while(1) { @@ -319,7 +324,11 @@ hal_diag_write_char(char c) // And re-enable interrupts +#ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS + CYG_HAL_GDB_LEAVE_CRITICAL_IO_REGION(old); +#else HAL_RESTORE_INTERRUPTS(old); +#endif } } diff --git a/packages/hal/arm/arch/current/ChangeLog b/packages/hal/arm/arch/current/ChangeLog --- a/packages/hal/arm/arch/current/ChangeLog +++ b/packages/hal/arm/arch/current/ChangeLog @@ -1,3 +1,25 @@ +1999-11-01 Jonathan Larmour + + * src/hal_misc.c (exception_handler): Check for CYGDAT_CYGMON_ENABLE + rather than just CYGPKG_CYGMON + Include to get this define + +1999-10-26 Jesper Skov + + * src/vectors.S: Cleaned up LED code a bit. + +1999-10-25 Gary Thomas + + * src/vectors.S: Reorder context restore so stack changes are + protected (interrupts off). + +1999-10-26 Jesper Skov + + * src/arm.ld: Added support for merging RODATA sections into DATA + * include/hal_io.h: Added BE support. + + * src/vectors.S (LED): Added definition for PID board. + 1999-10-22 Hugo Tyson * src/arm_stub.c (cyg_hal_gdb_running_step): diff --git a/packages/hal/arm/arch/current/include/hal_io.h b/packages/hal/arm/arch/current/include/hal_io.h --- a/packages/hal/arm/arch/current/include/hal_io.h +++ b/packages/hal/arm/arch/current/include/hal_io.h @@ -51,16 +51,22 @@ #include #include +#include + //----------------------------------------------------------------------------- // IO Register address. // This type is for recording the address of an IO register. typedef volatile CYG_ADDRWORD HAL_IO_REGISTER; + //----------------------------------------------------------------------------- // BYTE Register access. // Individual and vectorized access to 8 bit registers. +// Little-endian version +#if (CYG_BYTEORDER == CYG_LSBFIRST) + #define HAL_READ_UINT8( _register_, _value_ ) \ ((_value_) = *((volatile CYG_BYTE *)(_register_))) @@ -81,11 +87,39 @@ typedef volatile CYG_ADDRWORD HAL_IO_REG ((volatile CYG_BYTE *)(_register_))[_j_] = (_buf_)[_i_]; \ CYG_MACRO_END +#else // Big-endian version + +#define HAL_READ_UINT8( _register_, _value_ ) \ + ((_value_) = *((volatile CYG_BYTE *)((CYG_ADDRWORD)(_register_)^3))) + +#define HAL_WRITE_UINT8( _register_, _value_ ) \ + (*((volatile CYG_BYTE *)((CYG_ADDRWORD)(_register_)^3)) = (_value_)) + +#define HAL_READ_UINT8_VECTOR( _register_, _buf_, _count_, _step_ ) \ + CYG_MACRO_START \ + cyg_count32 _i_,_j_; \ + volatile CYG_BYTE* _r_ = ((CYG_ADDRWORD)(_register_)^3); \ + for( _i_ = 0, _j_ = 0; _i_ < (_count_); _i_++, _j_ += (_step_)) \ + (_buf_)[_i_] = _r_[_j_]; \ + CYG_MACRO_END + +#define HAL_WRITE_UINT8_VECTOR( _register_, _buf_, _count_, _step_ ) \ + CYG_MACRO_START \ + cyg_count32 _i_,_j_; \ + volatile CYG_BYTE* _r_ = ((CYG_ADDRWORD)(_register_)^3); \ + for( _i_ = 0, _j_ = 0; _i_ < (_count_); _i_++, _j_ += (_step_)) \ + _r_[_j_] = (_buf_)[_i_]; \ + CYG_MACRO_END + +#endif // Big-endian //----------------------------------------------------------------------------- // 16 bit access. // Individual and vectorized access to 16 bit registers. +// Little-endian version +#if (CYG_BYTEORDER == CYG_LSBFIRST) + #define HAL_READ_UINT16( _register_, _value_ ) \ ((_value_) = *((volatile CYG_WORD16 *)(_register_))) @@ -106,9 +140,37 @@ typedef volatile CYG_ADDRWORD HAL_IO_REG ((volatile CYG_WORD16 *)(_register_))[_j_] = (_buf_)[_i_]; \ CYG_MACRO_END +#else // Big-endian version + +#define HAL_READ_UINT16( _register_, _value_ ) \ + ((_value_) = *((volatile CYG_WORD16 *)((CYG_ADDRWORD)(_register_)^3))) + +#define HAL_WRITE_UINT16( _register_, _value_ ) \ + (*((volatile CYG_WORD16 *)((CYG_ADDRWORD)(_register_)^3)) = (_value_)) + +#define HAL_READ_UINT16_VECTOR( _register_, _buf_, _count_, _step_ ) \ + CYG_MACRO_START \ + cyg_count32 _i_,_j_; \ + volatile CYG_WORD16* _r_ = ((CYG_ADDRWORD)(_register_)^3); \ + for( _i_ = 0, _j_ = 0; _i_ < (_count_); _i_++, _j_ += (_step_)) \ + (_buf_)[_i_] = _r_[_j_]; \ + CYG_MACRO_END + +#define HAL_WRITE_UINT16_VECTOR( _register_, _buf_, _count_, _step_ ) \ + CYG_MACRO_START \ + cyg_count32 _i_,_j_; \ + volatile CYG_WORD16* _r_ = ((CYG_ADDRWORD)(_register_)^3); \ + for( _i_ = 0, _j_ = 0; _i_ < (_count_); _i_++, _j_ += (_step_)) \ + _r_[_j_] = (_buf_)[_i_]; \ + CYG_MACRO_END + +#endif // Big-endian + //----------------------------------------------------------------------------- // 32 bit access. // Individual and vectorized access to 32 bit registers. + +// Note: same macros for little- and big-endian systems. #define HAL_READ_UINT32( _register_, _value_ ) \ ((_value_) = *((volatile CYG_WORD32 *)(_register_))) diff --git a/packages/hal/arm/arch/current/include/pkgconf/hal_arm.h b/packages/hal/arm/arch/current/include/pkgconf/hal_arm.h --- a/packages/hal/arm/arch/current/include/pkgconf/hal_arm.h +++ b/packages/hal/arm/arch/current/include/pkgconf/hal_arm.h @@ -73,6 +73,23 @@ }}CFG_DATA */ #undef CYGHWR_HAL_ARM_DUMP_EXCEPTIONS +/* --------------------------------------------------------------------- + {{CFG_DATA + cdl_option CYGIMP_HAL_PROCESS_ALL_EXCEPTIONS { + display "Process all exceptions with the eCos application" + parent CYGPKG_HAL_ARM + description " + Normal [RAM-based] programs which do not include GDB stubs + defer processing of the illegal instruction exception to GDB. + Setting this options allows the program to explicitly handle + the illegal instruction exception itself. Note: this will + prevent the use of GDB to debug the application as breakpoints + will no longer work." + } + + }}CFG_DATA */ +#undef CYGIMP_HAL_PROCESS_ALL_EXCEPTIONS + /* -------------------------------------------------------------------*/ #endif /* CYGONCE_PKGCONF_HAL_ARM_H */ diff --git a/packages/hal/arm/arch/current/src/arm.ld b/packages/hal/arm/arch/current/src/arm.ld --- a/packages/hal/arm/arch/current/src/arm.ld +++ b/packages/hal/arm/arch/current/src/arm.ld @@ -35,6 +35,30 @@ INPUT(extras.o) #endif GROUP(libtarget.a libgcc.a) +#if defined(__ARMEB__) +OUTPUT_FORMAT(elf32-bigarm) +#endif + +#if defined(CYG_HAL_STARTUP_STUBS) \ + && defined(CYGPKG_HAL_ARM_PID) \ + && defined(__ARMEB__) +// Note: This is only needed when the PID board is used in BE mode without +// the proper ROM controller part. +// +// In big-endian mode, merge .RODATA sections into the .DATA section. This +// causes the data in these sections to be copied to RAM. When the CPU +// makes byte or halfword access to RAM, A0/A1 are modified correctly. +// This does not happen on ROM access (unless the proper ROM controller +// is used). +// +// This is matched in the PID stubs.ldi file which does not use the +// RODATA macros. +#define MERGE_IN_RODATA *(.rodata*) +#else +// Keep RODATA in separate sections. +#define MERGE_IN_RODATA +#endif + #define ALIGN_LMA 4 #define FOLLOWING(_section_) AT ((LOADADDR (_section_) + SIZEOF (_section_) + ALIGN_LMA - 1) & ~ (ALIGN_LMA - 1)) #define LMA_EQ_VMA @@ -92,7 +116,7 @@ GROUP(libtarget.a libgcc.a) #define SECTION_data(_region_, _vma_, _lma_) \ .data _vma_ : _lma_ \ - { __ram_data_start = ABSOLUTE (.); *(.data*) *(.data1) \ + { __ram_data_start = ABSOLUTE (.); *(.data*) *(.data1) MERGE_IN_RODATA \ _GOT1_START_ = ABSOLUTE (.); *(.got1) _GOT1_END_ = ABSOLUTE (.); \ _GOT2_START_ = ABSOLUTE (.); *(.got2) _GOT2_END_ = ABSOLUTE (.); \ . = ALIGN (4); \ diff --git a/packages/hal/arm/arch/current/src/arm_stub.c b/packages/hal/arm/arch/current/src/arm_stub.c --- a/packages/hal/arm/arch/current/src/arm_stub.c +++ b/packages/hal/arm/arch/current/src/arm_stub.c @@ -16,6 +16,9 @@ #include #include +#ifdef CYGPKG_CYGMON +#include +#endif #ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS diff --git a/packages/hal/arm/arch/current/src/hal_misc.c b/packages/hal/arm/arch/current/src/hal_misc.c --- a/packages/hal/arm/arch/current/src/hal_misc.c +++ b/packages/hal/arm/arch/current/src/hal_misc.c @@ -45,6 +45,9 @@ #ifdef CYGPKG_KERNEL #include #endif +#ifdef CYGPKG_CYGMON +#include +#endif #include #include // tracing macros @@ -101,7 +104,7 @@ static void void exception_handler(HAL_SavedRegisters *regs) { -#ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS +#if defined(CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS) && !defined(CYGDAT_CYGMON_ENABLE) if (__mem_fault_handler && regs->vector == CYGNUM_HAL_EXCEPTION_DATA_ACCESS) { regs->pc = (unsigned long)__mem_fault_handler; diff --git a/packages/hal/arm/arch/current/src/vectors.S b/packages/hal/arm/arch/current/src/vectors.S --- a/packages/hal/arm/arch/current/src/vectors.S +++ b/packages/hal/arm/arch/current/src/vectors.S @@ -78,8 +78,18 @@ .file "vectors.S" + +// CYGHWR_LED_MACRO can be defined in hal_platform_setup.h. It's free to +// use r0+r1. Argument is in "\x" - cannot use macro arguments since the +// macro may contain #-chars and use of arguments cause these to be +// interpreted as CPP stringify operators. +// See example in PID hal_platform_setup.h. +#ifndef CYGHWR_LED_MACRO +#define CYGHWR_LED_MACRO +#endif .macro LED x + CYGHWR_LED_MACRO .endm @@ -213,7 +223,7 @@ 10: str r2,[r0,#0x30] LED 4 - + #if defined(CYG_HAL_STARTUP_ROM) || defined(CYG_HAL_STARTUP_STUBS) // Relocate [copy] data from ROM to RAM ldr r3,.__rom_data_start @@ -276,6 +286,10 @@ 2: // to single-step through most of the init code, except the below. // Put a breakpoint at the call to cyg_hal_invoke_constructors to // pass over this bit (s-s depends on internal state in the stub). +#endif + +#if defined(CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS) || \ + defined(CYGIMP_HAL_PROCESS_ALL_EXCEPTIONS) mov r0,#0 // move vectors ldr r1,=__exception_handlers ldr r2,[r1,#0x04] // undefined instruction @@ -482,15 +496,15 @@ call_exception_handler: // Restore [interrupted] context mov ip,sp // get stack pointer - ldr lr,[ip,#armreg_lr] - ldr sp,[sp,#armreg_sp] - mrs r0,cpsr // move back to IRQ mode orr r0,r0,#CPSR_IRQ_DISABLE|CPSR_FIQ_DISABLE msr cpsr,r0 nop nop + ldr lr,[ip,#armreg_lr] + ldr sp,[sp,#armreg_sp] + bic r0,r0,#CPSR_MODE_BITS orr r0,r0,#CPSR_IRQ_MODE msr cpsr,r0 @@ -575,9 +589,7 @@ 10: str r4,[r3] #endif -// TEMP mov r0,v6 -// TEMP bl hal_IRQ_handler // determine interrupt source mov v1,r0 // returned vector # @@ -636,15 +648,15 @@ spurious_IRQ: mov ip,sp // get stack pointer - ldr lr,[ip,#armreg_lr] - ldr sp,[sp,#armreg_sp] - mrs r0,cpsr // move back to IRQ mode orr r0,r0,#CPSR_IRQ_DISABLE|CPSR_FIQ_DISABLE msr cpsr,r0 nop nop - + + ldr lr,[ip,#armreg_lr] + ldr sp,[sp,#armreg_sp] + bic r0,r0,#CPSR_MODE_BITS orr r0,r0,#CPSR_IRQ_MODE msr cpsr,r0 diff --git a/packages/hal/arm/cl7211/current/ChangeLog b/packages/hal/arm/cl7211/current/ChangeLog --- a/packages/hal/arm/cl7211/current/ChangeLog +++ b/packages/hal/arm/cl7211/current/ChangeLog @@ -1,3 +1,39 @@ +1999-10-27 Gary Thomas + + * src/cl7211_misc.c (enable_FIQ): New function. Used to re-enable + FIQ interrupts during DRAM refresh code. + + * include/pkgconf/mlt_arm_eb7211_stubs.h: + * include/pkgconf/mlt_arm_eb7211_rom.h: + * include/pkgconf/mlt_arm_eb7211_ram.h: New files. + + * include/pkgconf/mlt_arm_eb7211_rom.ldi: + * include/pkgconf/mlt_arm_eb7211_ram.ldi: + * include/pkgconf/mlt_arm_eb7211_stubs.ldi: + * include/pkgconf/mlt_arm_eb7211_ram.mlt: + * include/pkgconf/mlt_arm_eb7211_rom.mlt: + * include/pkgconf/mlt_arm_eb7211_stubs.mlt: Update for new layout + which describes physical regions completely. + +1999-10-27 Jesper Skov + + * src/hal_diag.c: Fixed conditional include. + +1999-10-26 Hugo Tyson + + * src/hal_diag.c (hal_diag_write_char): Use new macro + CYG_HAL_GDB_ENTER_CRITICAL_IO_REGION and its mate to control + stepping through gdb $O packet output. + +1999-10-25 Gary Thomas + + * tests/PKGconf.mak: Add DRAM test program. + + * tests/dram_test.c: New file. + + * include/hal_platform_setup.h: Fix DRAM mapping (was slightly + incorrect at end of first DRAM chip). + 1999-10-04 Gary Thomas * include/hal_platform_setup.h: Allow ROM applications to be linked at "ram" addresses and be automatically relocated at startup time. diff --git a/packages/hal/arm/cl7211/current/images/cl7111_gdb_module.bin b/packages/hal/arm/cl7211/current/images/cl7111_gdb_module.bin new file mode 100644 index 0000000000000000000000000000000000000000..c351918bfd42489822bc4a76d77b6bed0941b2e6 GIT binary patch literal 15900 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 diff --git a/packages/hal/arm/cl7211/current/images/gdb_module.bin b/packages/hal/arm/cl7211/current/images/gdb_module.bin deleted file mode 100644 index 2c7a2a184b51637e191c514dccbddc5fba971895..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc$@ +#include + +#define CYGMEM_REGION_ram (0) +#define CYGMEM_REGION_ram_SIZE (0x1000000) +#define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W) +extern char CYG_LABEL_NAME (_Reserved) []; +#define CYGMEM_SECTION_Reserved (CYG_LABEL_NAME (_Reserved)) +#define CYGMEM_SECTION_Reserved_SIZE (0x8000 - (size_t) CYG_LABEL_NAME (_Reserved)) diff --git a/packages/hal/arm/cl7211/current/include/pkgconf/mlt_arm_eb7211_ram.ldi b/packages/hal/arm/cl7211/current/include/pkgconf/mlt_arm_eb7211_ram.ldi --- a/packages/hal/arm/cl7211/current/include/pkgconf/mlt_arm_eb7211_ram.ldi +++ b/packages/hal/arm/cl7211/current/include/pkgconf/mlt_arm_eb7211_ram.ldi @@ -26,26 +26,27 @@ //####COPYRIGHTEND#### //=========================================================================== -// eCos memory layout - Mon May 17 08:04:39 1999 - -// This is a generated file - do not edit - -MEMORY -{ - ram : ORIGIN = 0x8000, LENGTH = 0x00FF8000 -} - -SECTIONS -{ - SECTIONS_BEGIN - SECTION_rom_vectors (ram, 0x8000, LMA_EQ_VMA) - SECTION_text (ram, ALIGN (0x1), LMA_EQ_VMA) - SECTION_fini (ram, ALIGN (0x1), LMA_EQ_VMA) - SECTION_rodata (ram, ALIGN (0x1), LMA_EQ_VMA) - SECTION_rodata1 (ram, ALIGN (0x1), LMA_EQ_VMA) - SECTION_fixup (ram, ALIGN (0x1), LMA_EQ_VMA) - SECTION_gcc_except_table (ram, ALIGN (0x1), LMA_EQ_VMA) - SECTION_data (ram, ALIGN (0x1), LMA_EQ_VMA) - SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA) - SECTIONS_END -} +// eCos memory layout - Wed Oct 27 13:28:21 1999 + +// This is a generated file - do not edit + +MEMORY +{ + ram : ORIGIN = 0, LENGTH = 0x1000000 +} + +SECTIONS +{ + SECTIONS_BEGIN + __Reserved = 0; + SECTION_rom_vectors (ram, 0x8000, LMA_EQ_VMA) + SECTION_text (ram, ALIGN (0x1), LMA_EQ_VMA) + SECTION_fini (ram, ALIGN (0x1), LMA_EQ_VMA) + SECTION_rodata (ram, ALIGN (0x1), LMA_EQ_VMA) + SECTION_rodata1 (ram, ALIGN (0x1), LMA_EQ_VMA) + SECTION_fixup (ram, ALIGN (0x1), LMA_EQ_VMA) + SECTION_gcc_except_table (ram, ALIGN (0x1), LMA_EQ_VMA) + SECTION_data (ram, ALIGN (0x1), LMA_EQ_VMA) + SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA) + SECTIONS_END +} diff --git a/packages/hal/arm/cl7211/current/include/pkgconf/mlt_arm_eb7211_ram.mlt b/packages/hal/arm/cl7211/current/include/pkgconf/mlt_arm_eb7211_ram.mlt --- a/packages/hal/arm/cl7211/current/include/pkgconf/mlt_arm_eb7211_ram.mlt +++ b/packages/hal/arm/cl7211/current/include/pkgconf/mlt_arm_eb7211_ram.mlt @@ -1,11 +1,40 @@ -version 0 -region ram 8000 ff8000 0 ! -section rom_vectors 0 1 0 1 1 1 1 1 8000 8000 text text ! -section text 0 1 0 1 0 1 0 1 fini fini ! -section fini 0 1 0 1 0 1 0 1 rodata rodata ! -section rodata 0 1 0 1 0 1 0 1 rodata1 rodata1 ! -section rodata1 0 1 0 1 0 1 0 1 fixup fixup ! -section fixup 0 1 0 1 0 1 0 1 gcc_except_table gcc_except_table ! -section gcc_except_table 0 1 0 1 0 1 0 1 data data ! -section data 0 1 0 1 0 1 0 1 bss bss ! -section bss 0 4 0 1 0 0 0 0 ! +//=========================================================================== +// +// MLT linker script export +// +//=========================================================================== +//####COPYRIGHTBEGIN#### +// +// ------------------------------------------- +// The contents of this file are subject to the Cygnus eCos Public License +// Version 1.0 (the "License"); you may not use this file except in +// compliance with the License. You may obtain a copy of the License at +// http://sourceware.cygnus.com/ecos +// +// Software distributed under the License is distributed on an "AS IS" +// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +// License for the specific language governing rights and limitations under +// the License. +// +// The Original Code is eCos - Embedded Cygnus Operating System, released +// September 30, 1998. +// +// The Initial Developer of the Original Code is Cygnus. Portions created +// by Cygnus are Copyright (C) 1998,1999 Cygnus Solutions. All Rights Reserved. +// ------------------------------------------- +// +//####COPYRIGHTEND#### +//=========================================================================== + +version 0 +region ram 0 1000000 0 !DRAM +section Reserved 0 1 0 0 1 0 1 0 0 0 ! +section rom_vectors 0 1 0 1 1 1 1 1 8000 8000 text text ! +section text 0 1 0 1 0 1 0 1 fini fini ! +section fini 0 1 0 1 0 1 0 1 rodata rodata ! +section rodata 0 1 0 1 0 1 0 1 rodata1 rodata1 ! +section rodata1 0 1 0 1 0 1 0 1 fixup fixup ! +section fixup 0 1 0 1 0 1 0 1 gcc_except_table gcc_except_table ! +section gcc_except_table 0 1 0 1 0 1 0 1 data data ! +section data 0 1 0 1 0 1 0 1 bss bss ! +section bss 0 4 0 1 0 0 0 0 ! diff --git a/packages/hal/arm/cl7211/current/include/pkgconf/mlt_arm_eb7211_rom.h b/packages/hal/arm/cl7211/current/include/pkgconf/mlt_arm_eb7211_rom.h new file mode 100644 --- /dev/null +++ b/packages/hal/arm/cl7211/current/include/pkgconf/mlt_arm_eb7211_rom.h @@ -0,0 +1,44 @@ +//=========================================================================== +// +// MLT linker script export +// +//=========================================================================== +//####COPYRIGHTBEGIN#### +// +// ------------------------------------------- +// The contents of this file are subject to the Cygnus eCos Public License +// Version 1.0 (the "License"); you may not use this file except in +// compliance with the License. You may obtain a copy of the License at +// http://sourceware.cygnus.com/ecos +// +// Software distributed under the License is distributed on an "AS IS" +// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +// License for the specific language governing rights and limitations under +// the License. +// +// The Original Code is eCos - Embedded Cygnus Operating System, released +// September 30, 1998. +// +// The Initial Developer of the Original Code is Cygnus. Portions created +// by Cygnus are Copyright (C) 1998,1999 Cygnus Solutions. All Rights Reserved. +// ------------------------------------------- +// +//####COPYRIGHTEND#### +//=========================================================================== + +// eCos memory layout - Wed Oct 27 13:34:16 1999 + +// This is a generated file - do not edit + +#include +#include + +#define CYGMEM_REGION_ram (0) +#define CYGMEM_REGION_ram_SIZE (0x1000000) +#define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W) +#define CYGMEM_REGION_rom (0xe0000000) +#define CYGMEM_REGION_rom_SIZE (0x800000) +#define CYGMEM_REGION_rom_ATTR (CYGMEM_REGION_ATTR_R) +extern char CYG_LABEL_NAME (_Reserved) []; +#define CYGMEM_SECTION_Reserved (CYG_LABEL_NAME (_Reserved)) +#define CYGMEM_SECTION_Reserved_SIZE (0x1000 - (size_t) CYG_LABEL_NAME (_Reserved)) diff --git a/packages/hal/arm/cl7211/current/include/pkgconf/mlt_arm_eb7211_rom.ldi b/packages/hal/arm/cl7211/current/include/pkgconf/mlt_arm_eb7211_rom.ldi --- a/packages/hal/arm/cl7211/current/include/pkgconf/mlt_arm_eb7211_rom.ldi +++ b/packages/hal/arm/cl7211/current/include/pkgconf/mlt_arm_eb7211_rom.ldi @@ -26,27 +26,28 @@ //####COPYRIGHTEND#### //=========================================================================== -// eCos memory layout - Tue Jun 15 18:13:06 1999 - -// This is a generated file - do not edit - -MEMORY -{ - ram : ORIGIN = 0x1000, LENGTH = 0x00FFF000 - rom : ORIGIN = 0xe0000000, LENGTH = 0x800000 -} - -SECTIONS -{ - SECTIONS_BEGIN - SECTION_rom_vectors (rom, 0xe0000000, LMA_EQ_VMA) - SECTION_text (rom, ALIGN (0x1), LMA_EQ_VMA) - SECTION_fini (rom, ALIGN (0x1), LMA_EQ_VMA) - SECTION_rodata (rom, ALIGN (0x1), LMA_EQ_VMA) - SECTION_rodata1 (rom, ALIGN (0x1), LMA_EQ_VMA) - SECTION_fixup (rom, ALIGN (0x1), LMA_EQ_VMA) - SECTION_gcc_except_table (rom, ALIGN (0x1), LMA_EQ_VMA) - SECTION_data (ram, 0x1000, FOLLOWING (.gcc_except_table)) - SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA) - SECTIONS_END -} +// eCos memory layout - Wed Oct 27 13:34:16 1999 + +// This is a generated file - do not edit + +MEMORY +{ + ram : ORIGIN = 0, LENGTH = 0x1000000 + rom : ORIGIN = 0xe0000000, LENGTH = 0x800000 +} + +SECTIONS +{ + SECTIONS_BEGIN + SECTION_rom_vectors (rom, 0xe0000000, LMA_EQ_VMA) + SECTION_text (rom, ALIGN (0x1), LMA_EQ_VMA) + SECTION_fini (rom, ALIGN (0x1), LMA_EQ_VMA) + SECTION_rodata (rom, ALIGN (0x1), LMA_EQ_VMA) + SECTION_rodata1 (rom, ALIGN (0x1), LMA_EQ_VMA) + SECTION_fixup (rom, ALIGN (0x1), LMA_EQ_VMA) + SECTION_gcc_except_table (rom, ALIGN (0x1), LMA_EQ_VMA) + __Reserved = 0; + SECTION_data (ram, 0x1000, FOLLOWING (.gcc_except_table)) + SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA) + SECTIONS_END +} diff --git a/packages/hal/arm/cl7211/current/include/pkgconf/mlt_arm_eb7211_rom.mlt b/packages/hal/arm/cl7211/current/include/pkgconf/mlt_arm_eb7211_rom.mlt --- a/packages/hal/arm/cl7211/current/include/pkgconf/mlt_arm_eb7211_rom.mlt +++ b/packages/hal/arm/cl7211/current/include/pkgconf/mlt_arm_eb7211_rom.mlt @@ -1,12 +1,41 @@ -version 0 -region ram 1000 fff000 0 ! -region rom e0000000 800000 1 !This is ROM bank 0, physical address 0x00000000.When running eCos, this space is remapped to 0xE0000000. -section data 0 1 1 1 1 1 0 0 1000 bss ! -section bss 0 4 0 1 0 0 0 0 ! -section rom_vectors 0 1 0 1 1 1 1 1 e0000000 e0000000 text text ! -section text 0 1 0 1 0 1 0 1 fini fini ! -section fini 0 1 0 1 0 1 0 1 rodata rodata ! -section rodata 0 1 0 1 0 1 0 1 rodata1 rodata1 ! -section rodata1 0 1 0 1 0 1 0 1 fixup fixup ! -section fixup 0 1 0 1 0 1 0 1 gcc_except_table gcc_except_table ! -section gcc_except_table 0 1 0 1 0 0 0 1 data ! +//=========================================================================== +// +// MLT linker script export +// +//=========================================================================== +//####COPYRIGHTBEGIN#### +// +// ------------------------------------------- +// The contents of this file are subject to the Cygnus eCos Public License +// Version 1.0 (the "License"); you may not use this file except in +// compliance with the License. You may obtain a copy of the License at +// http://sourceware.cygnus.com/ecos +// +// Software distributed under the License is distributed on an "AS IS" +// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +// License for the specific language governing rights and limitations under +// the License. +// +// The Original Code is eCos - Embedded Cygnus Operating System, released +// September 30, 1998. +// +// The Initial Developer of the Original Code is Cygnus. Portions created +// by Cygnus are Copyright (C) 1998,1999 Cygnus Solutions. All Rights Reserved. +// ------------------------------------------- +// +//####COPYRIGHTEND#### +//=========================================================================== + +version 0 +region ram 0 1000000 0 ! +region rom e0000000 800000 1 !This is ROM bank 0, physical address 0x00000000.When running eCos, this space is remapped to 0xE0000000. +section Reserved 0 1 0 0 1 0 1 0 0 0 ! +section data 0 1 1 1 1 1 0 0 1000 bss ! +section bss 0 4 0 1 0 0 0 0 ! +section rom_vectors 0 1 0 1 1 1 1 1 e0000000 e0000000 text text ! +section text 0 1 0 1 0 1 0 1 fini fini ! +section fini 0 1 0 1 0 1 0 1 rodata rodata ! +section rodata 0 1 0 1 0 1 0 1 rodata1 rodata1 ! +section rodata1 0 1 0 1 0 1 0 1 fixup fixup ! +section fixup 0 1 0 1 0 1 0 1 gcc_except_table gcc_except_table ! +section gcc_except_table 0 1 0 1 0 0 0 1 data ! diff --git a/packages/hal/arm/cl7211/current/include/pkgconf/mlt_arm_eb7211_stubs.h b/packages/hal/arm/cl7211/current/include/pkgconf/mlt_arm_eb7211_stubs.h new file mode 100644 --- /dev/null +++ b/packages/hal/arm/cl7211/current/include/pkgconf/mlt_arm_eb7211_stubs.h @@ -0,0 +1,44 @@ +//=========================================================================== +// +// MLT linker script export +// +//=========================================================================== +//####COPYRIGHTBEGIN#### +// +// ------------------------------------------- +// The contents of this file are subject to the Cygnus eCos Public License +// Version 1.0 (the "License"); you may not use this file except in +// compliance with the License. You may obtain a copy of the License at +// http://sourceware.cygnus.com/ecos +// +// Software distributed under the License is distributed on an "AS IS" +// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +// License for the specific language governing rights and limitations under +// the License. +// +// The Original Code is eCos - Embedded Cygnus Operating System, released +// September 30, 1998. +// +// The Initial Developer of the Original Code is Cygnus. Portions created +// by Cygnus are Copyright (C) 1998,1999 Cygnus Solutions. All Rights Reserved. +// ------------------------------------------- +// +//####COPYRIGHTEND#### +//=========================================================================== + +// eCos memory layout - Wed Oct 27 13:37:57 1999 + +// This is a generated file - do not edit + +#include +#include + +#define CYGMEM_REGION_ram (0) +#define CYGMEM_REGION_ram_SIZE (0x1000000) +#define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W) +#define CYGMEM_REGION_rom (0xe0000000) +#define CYGMEM_REGION_rom_SIZE (0x800000) +#define CYGMEM_REGION_rom_ATTR (CYGMEM_REGION_ATTR_R) +extern char CYG_LABEL_NAME (_Reserved) []; +#define CYGMEM_SECTION_Reserved (CYG_LABEL_NAME (_Reserved)) +#define CYGMEM_SECTION_Reserved_SIZE (0x1000 - (size_t) CYG_LABEL_NAME (_Reserved)) diff --git a/packages/hal/arm/cl7211/current/include/pkgconf/mlt_arm_eb7211_stubs.ldi b/packages/hal/arm/cl7211/current/include/pkgconf/mlt_arm_eb7211_stubs.ldi --- a/packages/hal/arm/cl7211/current/include/pkgconf/mlt_arm_eb7211_stubs.ldi +++ b/packages/hal/arm/cl7211/current/include/pkgconf/mlt_arm_eb7211_stubs.ldi @@ -26,27 +26,28 @@ //####COPYRIGHTEND#### //=========================================================================== -// eCos memory layout - Tue Jun 15 18:13:06 1999 - -// This is a generated file - do not edit - -MEMORY -{ - ram : ORIGIN = 0x1000, LENGTH = 0x7000 - rom : ORIGIN = 0xe0000000, LENGTH = 0x800000 -} - -SECTIONS -{ - SECTIONS_BEGIN - SECTION_rom_vectors (rom, 0xe0000000, LMA_EQ_VMA) - SECTION_text (rom, ALIGN (0x1), LMA_EQ_VMA) - SECTION_fini (rom, ALIGN (0x1), LMA_EQ_VMA) - SECTION_rodata (rom, ALIGN (0x1), LMA_EQ_VMA) - SECTION_rodata1 (rom, ALIGN (0x1), LMA_EQ_VMA) - SECTION_fixup (rom, ALIGN (0x1), LMA_EQ_VMA) - SECTION_gcc_except_table (rom, ALIGN (0x1), LMA_EQ_VMA) - SECTION_data (ram, 0x1000, FOLLOWING (.gcc_except_table)) - SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA) - SECTIONS_END -} +// eCos memory layout - Wed Oct 27 13:37:57 1999 + +// This is a generated file - do not edit + +MEMORY +{ + ram : ORIGIN = 0, LENGTH = 0x1000000 + rom : ORIGIN = 0xe0000000, LENGTH = 0x800000 +} + +SECTIONS +{ + SECTIONS_BEGIN + SECTION_rom_vectors (rom, 0xe0000000, LMA_EQ_VMA) + SECTION_text (rom, ALIGN (0x1), LMA_EQ_VMA) + SECTION_fini (rom, ALIGN (0x1), LMA_EQ_VMA) + SECTION_rodata (rom, ALIGN (0x1), LMA_EQ_VMA) + SECTION_rodata1 (rom, ALIGN (0x1), LMA_EQ_VMA) + SECTION_fixup (rom, ALIGN (0x1), LMA_EQ_VMA) + SECTION_gcc_except_table (rom, ALIGN (0x1), LMA_EQ_VMA) + __Reserved = 0; + SECTION_data (ram, 0x1000, FOLLOWING (.gcc_except_table)) + SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA) + SECTIONS_END +} diff --git a/packages/hal/arm/cl7211/current/include/pkgconf/mlt_arm_eb7211_stubs.mlt b/packages/hal/arm/cl7211/current/include/pkgconf/mlt_arm_eb7211_stubs.mlt --- a/packages/hal/arm/cl7211/current/include/pkgconf/mlt_arm_eb7211_stubs.mlt +++ b/packages/hal/arm/cl7211/current/include/pkgconf/mlt_arm_eb7211_stubs.mlt @@ -1,12 +1,41 @@ -version 0 -region ram 1000 7000 0 ! -region rom e0000000 800000 1 !This is ROM bank 0, physical address 0x00000000.When running eCos, this space is remapped to 0xE0000000. -section data 0 1 1 1 1 1 0 0 1000 bss ! -section bss 0 4 0 1 0 0 0 0 ! -section rom_vectors 0 1 0 1 1 1 1 1 e0000000 e0000000 text text ! -section text 0 1 0 1 0 1 0 1 fini fini ! -section fini 0 1 0 1 0 1 0 1 rodata rodata ! -section rodata 0 1 0 1 0 1 0 1 rodata1 rodata1 ! -section rodata1 0 1 0 1 0 1 0 1 fixup fixup ! -section fixup 0 1 0 1 0 1 0 1 gcc_except_table gcc_except_table ! -section gcc_except_table 0 1 0 1 0 0 0 1 data ! +//=========================================================================== +// +// MLT linker script export +// +//=========================================================================== +//####COPYRIGHTBEGIN#### +// +// ------------------------------------------- +// The contents of this file are subject to the Cygnus eCos Public License +// Version 1.0 (the "License"); you may not use this file except in +// compliance with the License. You may obtain a copy of the License at +// http://sourceware.cygnus.com/ecos +// +// Software distributed under the License is distributed on an "AS IS" +// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +// License for the specific language governing rights and limitations under +// the License. +// +// The Original Code is eCos - Embedded Cygnus Operating System, released +// September 30, 1998. +// +// The Initial Developer of the Original Code is Cygnus. Portions created +// by Cygnus are Copyright (C) 1998,1999 Cygnus Solutions. All Rights Reserved. +// ------------------------------------------- +// +//####COPYRIGHTEND#### +//=========================================================================== + +version 0 +region ram 0 1000000 0 ! +region rom e0000000 800000 1 !This is ROM bank 0, physical address 0x00000000.When running eCos, this space is remapped to 0xE0000000. +section Reserved 0 1 0 0 1 0 1 0 0 0 ! +section data 0 1 1 1 1 1 0 0 1000 bss ! +section bss 0 4 0 1 0 0 0 0 ! +section rom_vectors 0 1 0 1 1 1 1 1 e0000000 e0000000 text text ! +section text 0 1 0 1 0 1 0 1 fini fini ! +section fini 0 1 0 1 0 1 0 1 rodata rodata ! +section rodata 0 1 0 1 0 1 0 1 rodata1 rodata1 ! +section rodata1 0 1 0 1 0 1 0 1 fixup fixup ! +section fixup 0 1 0 1 0 1 0 1 gcc_except_table gcc_except_table ! +section gcc_except_table 0 1 0 1 0 0 0 1 data ! diff --git a/packages/hal/arm/cl7211/current/misc/STUBS_config b/packages/hal/arm/cl7211/current/misc/STUBS_config --- a/packages/hal/arm/cl7211/current/misc/STUBS_config +++ b/packages/hal/arm/cl7211/current/misc/STUBS_config @@ -1,20 +1,29 @@ #! /bin/sh -# usage: STUBS_config [cl7211 | cl7111] +# usage: STUBS_config [eb7211 | cl7111] if [ "$2"x = "x" ]; then - CL7x11="cl7211" + CL7x11="eb7211" else CL7x11=$2 fi -tcl $1/pkgconf.tcl \ +if ( echo | tclsh ) 2>/dev/null ; then + TCL=tclsh +elif ( echo | cygtclsh80 ) 2>/dev/null ; then + TCL=cygtclsh80 +else + echo Could not find TCL interpreter + exit 1 +fi + +$TCL $1/pkgconf.tcl \ --target=arm --platform=${CL7x11} --startup=stubs \ --disable CYGPKG_KERNEL --disable CYGPKG_UITRON \ --disable CYGPKG_LIBC --disable CYGPKG_LIBM \ --disable CYGPKG_ERROR --disable CYGPKG_IO \ --disable CYGPKG_IO_SERIAL --disable CYGPKG_DEVICES_WALLCLOCK \ - --disable CYGPKG_DEVICES_WATCHDOG + --disable CYGPKG_DEVICES_WATCHDOG --disable-cygmon patch <= (cyg_uint32 *)DRAM_END) row_ptr = (cyg_uint32 *)DRAM_START; + } +} +#endif // CYGHWR_HAL_ARM_CL7211_SOFTWARE_DRAM_REFRESH + void hal_clock_reset(cyg_uint32 vector, cyg_uint32 period) { volatile cyg_uint32 *tc2d = (volatile cyg_uint32 *)TC2D; @@ -98,6 +127,9 @@ void hal_clock_reset(cyg_uint32 vector, *tc2d = period; _period = period; } +#ifdef CYGHWR_HAL_ARM_CL7211_SOFTWARE_DRAM_REFRESH + do_DRAM_refresh(); +#endif } // Read the current value of the clock, returning the number of hardware "ticks" diff --git a/packages/hal/arm/cl7211/current/src/hal_diag.c b/packages/hal/arm/cl7211/current/src/hal_diag.c --- a/packages/hal/arm/cl7211/current/src/hal_diag.c +++ b/packages/hal/arm/cl7211/current/src/hal_diag.c @@ -51,8 +51,9 @@ #include // interrupt macros #include // IO macros #include -#ifdef CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT +#ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS #include +#include // cyg_hal_gdb_interrupt #endif #include // Hardware definitions @@ -201,7 +202,11 @@ hal_diag_write_char(char c) // receive interrupt will be seen when we re-enable interrupts // later. +#ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS + CYG_HAL_GDB_ENTER_CRITICAL_IO_REGION(old); +#else HAL_DISABLE_INTERRUPTS(old); +#endif while(1) { @@ -251,7 +256,11 @@ hal_diag_write_char(char c) // And re-enable interrupts +#ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS + CYG_HAL_GDB_LEAVE_CRITICAL_IO_REGION(old); +#else HAL_RESTORE_INTERRUPTS(old); +#endif } } diff --git a/packages/hal/arm/cl7211/current/support/Makefile b/packages/hal/arm/cl7211/current/support/Makefile --- a/packages/hal/arm/cl7211/current/support/Makefile +++ b/packages/hal/arm/cl7211/current/support/Makefile @@ -3,12 +3,11 @@ # DL_FILES = dl_7211.o io.o -DOWNLOAD_FILES = download_file.o io.o +ALL := dl_7211 -all: dl_7211 download + +all: $(ALL) dl_7211: $(DL_FILES) $(CC) -o $@ $(DL_FILES) -download: $(DOWNLOAD_FILES) - $(CC) -o $@ $(DOWNLOAD_FILES) diff --git a/packages/hal/arm/cl7211/current/support/download_file.c b/packages/hal/arm/cl7211/current/support/download_file.c deleted file mode 100644 --- a/packages/hal/arm/cl7211/current/support/download_file.c +++ /dev/null @@ -1,260 +0,0 @@ -//**************************************************************************** -// -// download_file.c - Send a raw data file to the EB72xx board. -// -// Adapted from the Cirrus Logic 'DOWNLOAD.C' program -// -// Copyright (c) 1999 Cirrus Logic, Inc. -// -// Adapted for Linux by Cygnus Solutions, Inc. -// -//**************************************************************************** -#include -#include "bootcode.h" - -#define DEFAULT_PORT "/dev/ttyS0" -extern char ReceiveChar(long); -extern void SendChar(long, char); -extern void SetBaud(long, long); -extern int CharRead(long port); -extern void WaitForOutputReady(long port); -extern long OpenPort(char *); - -//**************************************************************************** -// -// WaitFor waits until a specific character is read from the comm port. -// -//**************************************************************************** -void -WaitFor(long lPort, char cWaitChar) -{ - char cChar; - - // - // Wait until we read a specific character from the comm port. - // - while(1) - { - // - // Read a character. - // - cChar = ReceiveChar(lPort); - - // - // Stop waiting if we received the character. - // - if(cChar == cWaitChar) - { - break; - } - } -} - -//**************************************************************************** -// -// This program waits for the '<' character from the boot ROM, sends the boot -// code, waits for the '>' from the boot ROM, waits for the '?' from the boot -// code, changes the serial port rate (preferably to 115200), downloads the -// user data file, and then prints out progress status as the boot code writes -// the user data file to the flash. -// -//**************************************************************************** -void -main(int argc, char *argv[]) -{ - long lPort; - long lRate = 38400; - long lFileSize, lIdx; - char cChar, cFirstChar, *pcFile, cRateChar; - FILE *pFile; - - // - // Make sure that a filename was specified. - // - if(argc < 2) - { - fprintf(stderr, "Usage: download { {}}\n"); - return; - } - - // - // If a baud rate was specified, then read it and make sure it is valid. - // - if(argc > 2) - { - lRate = atoi(argv[2]); - if((lRate != 9600) && (lRate != 19200) && (lRate != 28800) && - (lRate != 38400) && (lRate != 57600) && (lRate != 115200)) - { - fprintf(stderr, "Invalid baud rate.\n"); - return; - } - } - - // - // If a comm port was specified, then read it and make sure it is valid. - // - if(argc > 3) - { - lPort = OpenPort(argv[3]); - } else - { - lPort = OpenPort(DEFAULT_PORT); - } - if (lPort < 0) - { - fprintf(stderr, "Can't open port\n"); - return; - } - - // - // Open the file to be downloaded. - // - pFile = fopen(argv[1], "rb"); - if(!pFile) - { - fprintf(stderr, "Could not open file '%s'.\n", argv[1]); - return; - } - - // - // Get the size of the file. - // - fseek(pFile, 0, SEEK_END); - lFileSize = ftell(pFile); - fseek(pFile, 0, SEEK_SET); - - // - // Allocate memory to hold the file contents. - // - pcFile = (char *)malloc(lFileSize); - if(!pcFile) - { - fprintf(stderr, "Failed to allocate memory for the file.\n"); - return; - } - - // - // Read the contents of the file into memory. - // - if(fread(pcFile, 1, lFileSize, pFile) != lFileSize) - { - fprintf(stderr, "Failed to read file '%s'.\n", argv[1]); - return; - } - - // - // Close the file. - // - fclose(pFile); - - // - // Open the port to the desired baud rate. - // - SetBaud(lPort, lRate); - - // - // Empty out the input queue. - // - while(CharReady(lPort)) - { - cChar = ReceiveChar(lPort); - } - - // - // Tell the user to reset the board. - // - fprintf(stderr, "Waiting for the board to wakeup..."); - - // - // Send a '-' character until we receive back a '?' character. - // - while(1) - { - // - // Send a '-' character. - // - SendChar(lPort, '-'); - - // - // Wait a little bit. - // - for(lIdx = 0; lIdx < 1024 * 1024; lIdx++) - { - } - - // - // See if there is a character waiting to be read. - // - if(CharReady(lPort)) - { - // - // Read the character. - // - cChar = ReceiveChar(lPort); - - // - // Quit waiting if this is a '?'. - // - if(cChar == '?') - { - break; - } - } - } - - // - // Empty out the input queue. - // - while(CharReady(lPort)) - { - cChar = ReceiveChar(lPort); - } - - // - // Send the download file "command" - // - SendChar(lPort, 'D'); - - // - // Send the length of the data file. - // - SendChar(lPort, (char)(lFileSize & 0xFF)); - SendChar(lPort, (char)((lFileSize >> 8) & 0xFF)); - SendChar(lPort, (char)((lFileSize >> 16) & 0xFF)); - SendChar(lPort, (char)((lFileSize >> 24) & 0xFF)); - - // - // Tell the user that we are downloading the file data. - // - fprintf(stderr, "\nDownloading file data...( 0%%)"); - - // - // Send the actual data in the file. - // - for(lIdx = 0; lIdx < lFileSize; lIdx++) - { - // - // Send this byte. - // - SendChar(lPort, pcFile[lIdx]); - - // - // Periodically print out our progress. - // - if((lIdx & 127) == 127) - { - fprintf(stderr, "\b\b\b\b\b%3d%%)", ((lIdx + 1) * 100) / lFileSize); - // - // Read a character from the boot code. - // - cChar = ReceiveChar(lPort); - } - } - - // - // Tell the user we are done. - // - fprintf(stderr, "\nSuccessfully downloaded '%s'.\n", argv[1]); -} - diff --git a/packages/hal/arm/cl7211/current/tests/PKGconf.mak b/packages/hal/arm/cl7211/current/tests/PKGconf.mak --- a/packages/hal/arm/cl7211/current/tests/PKGconf.mak +++ b/packages/hal/arm/cl7211/current/tests/PKGconf.mak @@ -31,7 +31,7 @@ PACKAGE := hal_arm_cl7211 include ../../../../../pkgconf/pkgconf.mak -TESTS := +TESTS := dram_test include $(COMPONENT_REPOSITORY)/pkgconf/makrules.tst diff --git a/packages/hal/arm/cl7211/current/tests/dram_test.c b/packages/hal/arm/cl7211/current/tests/dram_test.c new file mode 100644 --- /dev/null +++ b/packages/hal/arm/cl7211/current/tests/dram_test.c @@ -0,0 +1,316 @@ +//========================================================================== +// +// dram_test.c +// +// Cirrus EB72xx eval board DRAM test code +// +//========================================================================== +//####COPYRIGHTBEGIN#### +// +// ------------------------------------------- +// The contents of this file are subject to the Cygnus eCos Public License +// Version 1.0 (the "License"); you may not use this file except in +// compliance with the License. You may obtain a copy of the License at +// http://sourceware.cygnus.com/ecos +// +// Software distributed under the License is distributed on an "AS IS" +// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +// License for the specific language governing rights and limitations under +// the License. +// +// The Original Code is eCos - Embedded Cygnus Operating System, released +// September 30, 1998. +// +// The Initial Developer of the Original Code is Cygnus. Portions created +// by Cygnus are Copyright (C) 1998,1999 Cygnus Solutions. All Rights Reserved. +// ------------------------------------------- +// +//####COPYRIGHTEND#### +//========================================================================== +//#####DESCRIPTIONBEGIN#### +// +// Author(s): gthomas +// Contributors: gthomas +// Date: 1999-10-22 +// Description: Tool used to test DRAM on eval boards +//####DESCRIPTIONEND#### + +#include // Configuration header +#include +#include + +#include // Board definitions + +#ifndef FALSE +#define FALSE 0 +#define TRUE 1 +#endif + +#define STACK_SIZE 4096 +static char stack[STACK_SIZE]; +static cyg_thread thread_data; +static cyg_handle_t thread_handle; + +extern char _end; +int total_errors; +int run_errors; +int error_count; +#define MAX_ERRORS 5 +#define NUM_RUNS 25 +#define REFRESH_TIME 5 + +int decay_time[] = { 50, 100, 200, 500, 1000 }; +#define NUM_DECAY sizeof(decay_time)/sizeof(decay_time[0]) + +// FUNCTIONS + +static void +cyg_test_exit(void) +{ + while (TRUE) ; +} + +static void +new_test(void) +{ + error_count = 0; +} + +static void +report_error(void *addr, cyg_uint32 actual, cyg_uint32 expected) +{ + total_errors++; + run_errors++; + if (++error_count > MAX_ERRORS) return; + diag_printf(" 0x%08x: expected - 0x%08x, actual - 0x%08x\n", + addr, expected, actual); +} + +// Fill longwords with their own address and verify + +static void +addr_test(cyg_uint32 start, cyg_uint32 end) +{ + cyg_uint32 *mp; + + new_test(); + diag_printf("-- Address test\n"); + for (mp = (cyg_uint32 *)start; mp < (cyg_uint32 *)end; mp++) { + *mp = (cyg_uint32)mp; + } + for (mp = (cyg_uint32 *)start; mp < (cyg_uint32 *)end; mp++) { + if (*mp != (cyg_uint32)mp) { + report_error(mp, *mp, (cyg_uint32)mp); + } + } +} + +// Fill longwords with zeros + +static void +zeros_test(cyg_uint32 start, cyg_uint32 end) +{ + cyg_uint32 *mp; + + new_test(); + diag_printf("-- Zeros test\n"); + for (mp = (cyg_uint32 *)start; mp < (cyg_uint32 *)end; mp++) { + *mp = (cyg_uint32)0; + } + for (mp = (cyg_uint32 *)start; mp < (cyg_uint32 *)end; mp++) { + if (*mp != (cyg_uint32)0) { + report_error(mp, *mp, (cyg_uint32)0); + } + } +} + +// Fill longwords with all ones + +static void +ones_test(cyg_uint32 start, cyg_uint32 end) +{ + cyg_uint32 *mp; + + new_test(); + diag_printf("-- Ones test\n"); + for (mp = (cyg_uint32 *)start; mp < (cyg_uint32 *)end; mp++) { + *mp = (cyg_uint32)0xFFFFFFFF; + } + for (mp = (cyg_uint32 *)start; mp < (cyg_uint32 *)end; mp++) { + if (*mp != (cyg_uint32)0xFFFFFFFF) { + report_error(mp, *mp, (cyg_uint32)0xFFFFFFFF); + } + } +} + +// Fill longwords with a "walking" bit + +static void +walking_bit_test(cyg_uint32 start, cyg_uint32 end) +{ + cyg_uint32 *mp; + cyg_uint32 bit; + + new_test(); + diag_printf("-- Walking test\n"); + bit = 1; + for (mp = (cyg_uint32 *)start; mp < (cyg_uint32 *)end; mp++) { + *mp = (cyg_uint32)bit; + bit <<= 1; + if (bit == 0) bit = 1; + } + bit = 1; + for (mp = (cyg_uint32 *)start; mp < (cyg_uint32 *)end; mp++) { + if (*mp != (cyg_uint32)bit) { + report_error(mp, *mp, (cyg_uint32)bit); + } + bit <<= 1; + if (bit == 0) bit = 1; + } +} + +// Fill longwords with an alternating pattern + +static void +pattern_test(cyg_uint32 start, cyg_uint32 end) +{ + cyg_uint32 *mp; + cyg_uint32 pat; + + new_test(); + diag_printf("-- Pattern test\n"); + pat = 0x55555555; + for (mp = (cyg_uint32 *)start; mp < (cyg_uint32 *)end; mp++) { + *mp = (cyg_uint32)pat; + } + for (mp = (cyg_uint32 *)start; mp < (cyg_uint32 *)end; mp++) { + if (*mp != (cyg_uint32)pat) { + report_error(mp, *mp, (cyg_uint32)pat); + } + } + pat = 0xAAAAAAAA; + for (mp = (cyg_uint32 *)start; mp < (cyg_uint32 *)end; mp++) { + *mp = (cyg_uint32)pat; + } + for (mp = (cyg_uint32 *)start; mp < (cyg_uint32 *)end; mp++) { + if (*mp != (cyg_uint32)pat) { + report_error(mp, *mp, (cyg_uint32)pat); + } + } +} + +// Verify if refresh works + +static void +refresh_test(cyg_uint32 start, cyg_uint32 end) +{ + cyg_uint32 *mp; + cyg_uint32 pat; + + new_test(); + diag_printf("-- Refresh test\n"); + pat = 0x55555555; + for (mp = (cyg_uint32 *)start; mp < (cyg_uint32 *)end; mp++) { + *mp = (cyg_uint32)pat; + } + cyg_thread_delay(REFRESH_TIME*100); + for (mp = (cyg_uint32 *)start; mp < (cyg_uint32 *)end; mp++) { + if (*mp != (cyg_uint32)pat) { + report_error(mp, *mp, (cyg_uint32)pat); + } + } + pat = 0xAAAAAAAA; + for (mp = (cyg_uint32 *)start; mp < (cyg_uint32 *)end; mp++) { + *mp = (cyg_uint32)pat; + } + cyg_thread_delay(REFRESH_TIME*100); + for (mp = (cyg_uint32 *)start; mp < (cyg_uint32 *)end; mp++) { + if (*mp != (cyg_uint32)pat) { + report_error(mp, *mp, (cyg_uint32)pat); + } + } +} + +// See how long we can "sleep" before refresh fails + +static void +decay_test(cyg_uint32 start, cyg_uint32 end) +{ + cyg_uint32 *mp; + cyg_uint32 pat; + int i; + + diag_printf("-- Decay test\n"); + for (i = 0; i < NUM_DECAY; i++) { + diag_printf(" ... %d.%02d sec delay\n", decay_time[i]/100, decay_time[i]%100); + new_test(); + pat = 0x55555555; + for (mp = (cyg_uint32 *)start; mp < (cyg_uint32 *)end; mp++) { + *mp = (cyg_uint32)pat; + } + cyg_thread_delay(decay_time[i]); + for (mp = (cyg_uint32 *)start; mp < (cyg_uint32 *)end; mp++) { + if (*mp != (cyg_uint32)pat) { + report_error(mp, *mp, (cyg_uint32)pat); + } + } + pat = 0xAAAAAAAA; + for (mp = (cyg_uint32 *)start; mp < (cyg_uint32 *)end; mp++) { + *mp = (cyg_uint32)pat; + } + cyg_thread_delay(decay_time[i]); + for (mp = (cyg_uint32 *)start; mp < (cyg_uint32 *)end; mp++) { + if (*mp != (cyg_uint32)pat) { + report_error(mp, *mp, (cyg_uint32)pat); + } + } + diag_printf(" ... %d errors\n", error_count); + } +} + + +static void +dram_exercise(cyg_addrword_t p) +{ + cyg_uint32 start_DRAM, end_DRAM; + int i; + + end_DRAM = 0x01000000; + end_DRAM = 0x00F80000; + start_DRAM = ((cyg_uint32)&_end + 0x0000FFFF) & 0xFFFF0000; + diag_printf("DRAM test - start: 0x%08x, end: 0x%08x\n", start_DRAM, end_DRAM); + + for (i = 0; i < NUM_RUNS; i++) { + diag_printf("\n*** Start run #%d of %d\n", i+1, NUM_RUNS); + run_errors = 0; + addr_test(start_DRAM, end_DRAM); + ones_test(start_DRAM, end_DRAM); + zeros_test(start_DRAM, end_DRAM); + walking_bit_test(start_DRAM, end_DRAM); + pattern_test(start_DRAM, end_DRAM); + refresh_test(start_DRAM, end_DRAM); + decay_test(start_DRAM, end_DRAM); + diag_printf("\n*** End run, %d errors, %d total errors\n", run_errors, total_errors); + } + + diag_printf("All done!\n"); + cyg_test_exit(); +} + +externC void +cyg_start( void ) +{ + // Create a main thread, so we can run the scheduler and have time 'pass' + cyg_thread_create(10, // Priority - just a number + dram_exercise, // entry + 0, // entry parameter + "DRAM test", // Name + &stack[0], // Stack + STACK_SIZE, // Size + &thread_handle, // Handle + &thread_data // Thread data structure + ); + cyg_thread_resume(thread_handle); // Start it + cyg_scheduler_start(); +} // cyg_package_start() + diff --git a/packages/hal/arm/cma230/current/ChangeLog b/packages/hal/arm/cma230/current/ChangeLog --- a/packages/hal/arm/cma230/current/ChangeLog +++ b/packages/hal/arm/cma230/current/ChangeLog @@ -1,3 +1,17 @@ +1999-10-28 Jesper Skov + + * misc/PKGconf.mak: Don't strip symbols when making .img. + +1999-10-27 Jesper Skov + + * src/hal_diag.c: Fixed conditional include. + +1999-10-26 Hugo Tyson + + * src/hal_diag.c (hal_diag_write_char): Use new macro + CYG_HAL_GDB_ENTER_CRITICAL_IO_REGION and its mate to control + stepping through gdb $O packet output. + 1999-10-19 Jonathan Larmour diff --git a/packages/hal/arm/cma230/current/images/gdb_module.img b/packages/hal/arm/cma230/current/images/gdb_module.img new file mode 100644 index 0000000000000000000000000000000000000000..9160fa07ba09717fdb4b59053f16bbe66f25d832 GIT binary patch literal 24101 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 fInwOnX9ezxCkd<()6ho4A1B+K/misc. +# gdb_module.bin: suitable for EPROM programming -tcl $1/pkgconf.tcl \ +if ( echo | tclsh ) 2>/dev/null ; then + TCL=tclsh +elif ( echo | cygtclsh80 ) 2>/dev/null ; then + TCL=cygtclsh80 +else + echo Could not find TCL interpreter + exit 1 +fi + +$TCL $1/pkgconf.tcl \ --target=arm --platform=cma230 --startup=stubs \ --disable CYGPKG_KERNEL --disable CYGPKG_UITRON \ --disable CYGPKG_LIBC --disable CYGPKG_LIBM \ @@ -9,20 +26,32 @@ tcl $1/pkgconf.tcl --disable CYGPKG_DEVICES_WATCHDOG patch < // IO macros #include #include // Hardware definitions -#ifdef CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT +#ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS #include +#include // cyg_hal_gdb_interrupt #endif // Assumption: all diagnostic output must be GDB packetized unless this is a ROM (i.e. @@ -288,7 +289,11 @@ hal_diag_write_char(char c) // receive interrupt will be seen when we re-enable interrupts // later. +#ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS + CYG_HAL_GDB_ENTER_CRITICAL_IO_REGION(old); +#else HAL_DISABLE_INTERRUPTS(old); +#endif while(1) { @@ -337,7 +342,11 @@ hal_diag_write_char(char c) pos = 0; // And re-enable interrupts +#ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS + CYG_HAL_GDB_LEAVE_CRITICAL_IO_REGION(old); +#else HAL_RESTORE_INTERRUPTS(old); +#endif } } diff --git a/packages/hal/arm/pid/current/ChangeLog b/packages/hal/arm/pid/current/ChangeLog --- a/packages/hal/arm/pid/current/ChangeLog +++ b/packages/hal/arm/pid/current/ChangeLog @@ -1,9 +1,63 @@ +1999-10-29 Jesper Skov + + * misc/PKGconf.mak: Also generate stripped .img files. + +1999-10-29 Jesper Skov + + * include/plf_stub.h (HAL_STUB_PLATFORM_RESET): Call stub entry on + GDB kill. But only do it for stubs startup. + +1999-10-28 Jesper Skov + + * misc/PKGconf.mak: Don't strip symbols when making .img. + +1999-10-27 Jesper Skov + + * include/pkgconf/mlt_arm_pid9_stubs.ldi: + * include/pkgconf/mlt_arm_pid9_stubs.mlt: + Added some linker files. + + * misc/Notes: + * misc/STUBS_config: + Updated. + + * src/hal_diag.c: Fixed conditional include. + +1999-10-26 Hugo Tyson + + * src/hal_diag.c (hal_diag_write_char): Use new macro + CYG_HAL_GDB_ENTER_CRITICAL_IO_REGION and its mate to control + stepping through gdb $O packet output. + +1999-10-26 Jesper Skov + * include/hal_platform_setup.h (CYGHWR_LED_MACRO): define. + * include/pkgconf/hal_arm_pid.h: + * src/hal_diag.c: + * include/hal_diag.h: + Added CDL for CYGHWR_HAL_ARM_PID_DIAG_LEDS. + +1999-10-26 Jesper Skov + * include/pkgconf/mlt_arm_pidBE_ram.ldi: + * include/pkgconf/mlt_arm_pidBE_ram.mlt: + * include/pkgconf/mlt_arm_pidBE_rom.ldi: + * include/pkgconf/mlt_arm_pidBE_rom.mlt: + * include/pkgconf/mlt_arm_pidBE_stubs.ldi: + * include/pkgconf/mlt_arm_pidBE_stubs.mlt: + * include/pkgconf/mlt_arm_pid9_ram.ldi: + * include/pkgconf/mlt_arm_pid9_ram.mlt: + * include/pkgconf/mlt_arm_pid9_rom.ldi: + * include/pkgconf/mlt_arm_pid9_rom.mlt: + Added some linker files. + 1999-10-25 Jesper Skov * misc/STUBS_config: Updated. * src/hal_diag.c (hal_diag_led): Added LED diag. * misc/prog_flash.c: Fixed compiler warning. + * misc/prog_flash.c: + * misc/PKGconf.mak: + Add support for programming BE images on LE system. 1999-10-19 Jesper Skov diff --git a/packages/hal/arm/pid/current/include/hal_diag.h b/packages/hal/arm/pid/current/include/hal_diag.h --- a/packages/hal/arm/pid/current/include/hal_diag.h +++ b/packages/hal/arm/pid/current/include/hal_diag.h @@ -54,6 +54,8 @@ externC void hal_diag_init(void); externC void hal_diag_write_char(char c); externC void hal_diag_read_char(char *c); +externC void hal_diag_led(int n); + /*---------------------------------------------------------------------------*/ #define HAL_DIAG_INIT() hal_diag_init() diff --git a/packages/hal/arm/pid/current/include/hal_platform_setup.h b/packages/hal/arm/pid/current/include/hal_platform_setup.h --- a/packages/hal/arm/pid/current/include/hal_platform_setup.h +++ b/packages/hal/arm/pid/current/include/hal_platform_setup.h @@ -43,6 +43,19 @@ // //===========================================================================*/ + +// Define macro used to diddle the LEDs during early initialization. +// Can use r0+r1. Argument in \x. +// Control the LEDs PP0-PP3. This requires the jumpers on pins 9-16 to +// be set on LK11 in order to be visible. Otherwise the parallel port +// data pins are diddled instead. +#ifdef CYGHWR_HAL_ARM_PID_DIAG_LEDS +#define CYGHWR_LED_MACRO \ + ldr r0,=0x0d800040 ;\ + mov r1, #((15 & (\x)) << 4) ;\ + strb r1, [r0] ; +#endif + #define MEM_RESET 0x0B000020 // Write to this location to enable RAM #define PLATFORM_SETUP1 \ diff --git a/packages/hal/arm/pid/current/include/pkgconf/hal_arm_pid.h b/packages/hal/arm/pid/current/include/pkgconf/hal_arm_pid.h --- a/packages/hal/arm/pid/current/include/pkgconf/hal_arm_pid.h +++ b/packages/hal/arm/pid/current/include/pkgconf/hal_arm_pid.h @@ -156,6 +156,30 @@ }}CFG_DATA */ #define CYGHWR_HAL_ARM_PID_GDB_BAUD 38400 + +/* --------------------------------------------------------------------- + {{CFG_DATA + cdl_option CYGHWR_HAL_ARM_PID_DIAG_LEDS { + display "Enable use of PPx LEDs" + parent CYGPKG_HAL_ARM_PID + type bool + description " + The PID board has four LEDs labelled PP0-PP3. These can be + controlled by eCos if jumpers 9-16 on LK11 are + shorted. Note that this prevents the parallel port from + being used. See the PID board manual for details. + + Enabling this option causes eCos to flash the LEDs during + early board initialization. See vectors.S for + details. Before calling cyg_start, PP0 is switched on, + PP1-3 are switched off. The application code can use the + function hal_diag_led() to control the LEDs after this + point." + } + + }}CFG_DATA */ +#undef CYGHWR_HAL_ARM_PID_DIAG_LEDS + // Real-time clock/counter specifics #define CYGNUM_HAL_RTC_NUMERATOR 1000000000 diff --git a/packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pid9_ram.ldi b/packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pid9_ram.ldi new file mode 100644 --- /dev/null +++ b/packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pid9_ram.ldi @@ -0,0 +1,47 @@ +//=========================================================================== +// +// MLT linker script export - Tue Jan 13 10:14:27 1999 +// +//=========================================================================== +//####COPYRIGHTBEGIN#### +// +// ------------------------------------------- +// The contents of this file are subject to the Cygnus eCos Public License +// Version 1.0 (the "License"); you may not use this file except in +// compliance with the License. You may obtain a copy of the License at +// http://sourceware.cygnus.com/ecos +// +// Software distributed under the License is distributed on an "AS IS" +// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +// License for the specific language governing rights and limitations under +// the License. +// +// The Original Code is eCos - Embedded Cygnus Operating System, released +// September 30, 1998. +// +// The Initial Developer of the Original Code is Cygnus. Portions created +// by Cygnus are Copyright (C) 1998,1999 Cygnus Solutions. All Rights Reserved. +// ------------------------------------------- +// +//####COPYRIGHTEND#### +//=========================================================================== + +MEMORY +{ + ram : ORIGIN = 0x00004000, LENGTH = 0x7C000 +} + +SECTIONS +{ + SECTIONS_BEGIN + SECTION_rom_vectors (ram, 0x4000, LMA_EQ_VMA) + SECTION_text (ram, ALIGN (0x1), LMA_EQ_VMA) + SECTION_fini (ram, ALIGN (0x1), LMA_EQ_VMA) + SECTION_rodata (ram, ALIGN (0x1), LMA_EQ_VMA) + SECTION_rodata1 (ram, ALIGN (0x1), LMA_EQ_VMA) + SECTION_fixup (ram, ALIGN (0x1), LMA_EQ_VMA) + SECTION_gcc_except_table (ram, ALIGN (0x1), LMA_EQ_VMA) + SECTION_data (ram, ALIGN (0x1), LMA_EQ_VMA) + SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA) + SECTIONS_END +} diff --git a/packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pid9_ram.mlt b/packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pid9_ram.mlt new file mode 100644 --- /dev/null +++ b/packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pid9_ram.mlt @@ -0,0 +1,11 @@ +version 0 +region ram 4000 7c000 0 ! +section rom_vectors 0 1 0 1 1 1 1 1 4000 4000 text text ! +section text 0 1 0 1 0 1 0 1 fini fini ! +section fini 0 1 0 1 0 1 0 1 rodata rodata ! +section rodata 0 1 0 1 0 1 0 1 rodata1 rodata1 ! +section rodata1 0 1 0 1 0 1 0 1 fixup fixup ! +section fixup 0 1 0 1 0 1 0 1 gcc_except_table gcc_except_table ! +section gcc_except_table 0 1 0 1 0 1 0 1 data data ! +section data 0 1 0 1 0 1 0 1 bss bss ! +section bss 0 4 0 1 0 0 0 0 ! diff --git a/packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pid9_rom.ldi b/packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pid9_rom.ldi new file mode 100644 --- /dev/null +++ b/packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pid9_rom.ldi @@ -0,0 +1,51 @@ +//=========================================================================== +// +// MLT linker script export - Tue Jan 13 10:14:27 1999 +// +//=========================================================================== +//####COPYRIGHTBEGIN#### +// +// ------------------------------------------- +// The contents of this file are subject to the Cygnus eCos Public License +// Version 1.0 (the "License"); you may not use this file except in +// compliance with the License. You may obtain a copy of the License at +// http://sourceware.cygnus.com/ecos +// +// Software distributed under the License is distributed on an "AS IS" +// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +// License for the specific language governing rights and limitations under +// the License. +// +// The Original Code is eCos - Embedded Cygnus Operating System, released +// September 30, 1998. +// +// The Initial Developer of the Original Code is Cygnus. Portions created +// by Cygnus are Copyright (C) 1998,1999 Cygnus Solutions. All Rights Reserved. +// ------------------------------------------- +// +//####COPYRIGHTEND#### +//=========================================================================== + +// Modified for ARM/PID7T, generic ROM image + +MEMORY +{ + rom : ORIGIN = 0x04000000, LENGTH = 0x80000 + ram : ORIGIN = 0x00000800, LENGTH = 0x7F800 +} + +SECTIONS +{ + SECTIONS_BEGIN + SECTION_rom_vectors (rom, 0x4000000, LMA_EQ_VMA) + SECTION_text (rom, ALIGN (0x1), LMA_EQ_VMA) + SECTION_fini (rom, ALIGN (0x1), LMA_EQ_VMA) + SECTION_rodata (rom, ALIGN (0x1), LMA_EQ_VMA) + SECTION_rodata1 (rom, ALIGN (0x1), LMA_EQ_VMA) + SECTION_fixup (rom, ALIGN (0x1), LMA_EQ_VMA) + SECTION_gcc_except_table (rom, ALIGN (0x1), LMA_EQ_VMA) + SECTION_data (ram, 0x800, FOLLOWING (.gcc_except_table)) + SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA) + SECTIONS_END +} + diff --git a/packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pid9_rom.mlt b/packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pid9_rom.mlt new file mode 100644 --- /dev/null +++ b/packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pid9_rom.mlt @@ -0,0 +1,12 @@ +version 0 +region ram 800 7f800 0 ! +region rom 4000000 80000 1 ! +section data 0 1 1 1 1 1 0 0 800 bss ! +section bss 0 4 0 1 0 0 0 0 ! +section rom_vectors 0 1 0 1 1 1 1 1 4000000 4000000 text text ! +section text 0 1 0 1 0 1 0 1 fini fini ! +section fini 0 1 0 1 0 1 0 1 rodata rodata ! +section rodata 0 1 0 1 0 1 0 1 rodata1 rodata1 ! +section rodata1 0 1 0 1 0 1 0 1 fixup fixup ! +section fixup 0 1 0 1 0 1 0 1 gcc_except_table gcc_except_table ! +section gcc_except_table 0 1 0 1 0 0 0 1 data ! diff --git a/packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pid9_stubs.ldi b/packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pid9_stubs.ldi new file mode 100644 --- /dev/null +++ b/packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pid9_stubs.ldi @@ -0,0 +1,50 @@ +//=========================================================================== +// +// MLT linker script export - Tue Jan 13 10:14:27 1999 +// +//=========================================================================== +//####COPYRIGHTBEGIN#### +// +// ------------------------------------------- +// The contents of this file are subject to the Cygnus eCos Public License +// Version 1.0 (the "License"); you may not use this file except in +// compliance with the License. You may obtain a copy of the License at +// http://sourceware.cygnus.com/ecos +// +// Software distributed under the License is distributed on an "AS IS" +// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +// License for the specific language governing rights and limitations under +// the License. +// +// The Original Code is eCos - Embedded Cygnus Operating System, released +// September 30, 1998. +// +// The Initial Developer of the Original Code is Cygnus. Portions created +// by Cygnus are Copyright (C) 1998,1999 Cygnus Solutions. All Rights Reserved. +// ------------------------------------------- +// +//####COPYRIGHTEND#### +//=========================================================================== + +// Modified for ARM/PID7T, GDB/stubs ROM image only + +MEMORY +{ + rom : ORIGIN = 0x04000000, LENGTH = 0x80000 + ram : ORIGIN = 0x00000800, LENGTH = 0x03800 +} + +SECTIONS +{ + SECTIONS_BEGIN + SECTION_rom_vectors (rom, 0x4000000, LMA_EQ_VMA) + SECTION_text (rom, ALIGN (0x1), LMA_EQ_VMA) + SECTION_fini (rom, ALIGN (0x1), LMA_EQ_VMA) + SECTION_rodata (rom, ALIGN (0x1), LMA_EQ_VMA) + SECTION_rodata1 (rom, ALIGN (0x1), LMA_EQ_VMA) + SECTION_fixup (rom, ALIGN (0x1), LMA_EQ_VMA) + SECTION_gcc_except_table (rom, ALIGN (0x1), LMA_EQ_VMA) + SECTION_data (ram, 0x800, FOLLOWING (.gcc_except_table)) + SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA) + SECTIONS_END +} diff --git a/packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pid9_stubs.mlt b/packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pid9_stubs.mlt new file mode 100644 --- /dev/null +++ b/packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pid9_stubs.mlt @@ -0,0 +1,12 @@ +version 0 +region ram 800 3800 0 ! +region rom 4000000 80000 1 ! +section data 0 1 1 1 1 1 0 0 800 bss ! +section bss 0 4 0 1 0 0 0 0 ! +section rom_vectors 0 1 0 1 1 1 1 1 4000000 4000000 text text ! +section text 0 1 0 1 0 1 0 1 fini fini ! +section fini 0 1 0 1 0 1 0 1 rodata rodata ! +section rodata 0 1 0 1 0 1 0 1 rodata1 rodata1 ! +section rodata1 0 1 0 1 0 1 0 1 fixup fixup ! +section fixup 0 1 0 1 0 1 0 1 gcc_except_table gcc_except_table ! +section gcc_except_table 0 1 0 1 0 0 0 1 data ! diff --git a/packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pidBE_ram.ldi b/packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pidBE_ram.ldi new file mode 100644 --- /dev/null +++ b/packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pidBE_ram.ldi @@ -0,0 +1,47 @@ +//=========================================================================== +// +// MLT linker script export - Tue Jan 13 10:14:27 1999 +// +//=========================================================================== +//####COPYRIGHTBEGIN#### +// +// ------------------------------------------- +// The contents of this file are subject to the Cygnus eCos Public License +// Version 1.0 (the "License"); you may not use this file except in +// compliance with the License. You may obtain a copy of the License at +// http://sourceware.cygnus.com/ecos +// +// Software distributed under the License is distributed on an "AS IS" +// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +// License for the specific language governing rights and limitations under +// the License. +// +// The Original Code is eCos - Embedded Cygnus Operating System, released +// September 30, 1998. +// +// The Initial Developer of the Original Code is Cygnus. Portions created +// by Cygnus are Copyright (C) 1998,1999 Cygnus Solutions. All Rights Reserved. +// ------------------------------------------- +// +//####COPYRIGHTEND#### +//=========================================================================== + +MEMORY +{ + ram : ORIGIN = 0x00004000, LENGTH = 0x7C000 +} + +SECTIONS +{ + SECTIONS_BEGIN + SECTION_rom_vectors (ram, 0x4000, LMA_EQ_VMA) + SECTION_text (ram, ALIGN (0x1), LMA_EQ_VMA) + SECTION_fini (ram, ALIGN (0x1), LMA_EQ_VMA) + SECTION_rodata (ram, ALIGN (0x1), LMA_EQ_VMA) + SECTION_rodata1 (ram, ALIGN (0x1), LMA_EQ_VMA) + SECTION_fixup (ram, ALIGN (0x1), LMA_EQ_VMA) + SECTION_gcc_except_table (ram, ALIGN (0x1), LMA_EQ_VMA) + SECTION_data (ram, ALIGN (0x1), LMA_EQ_VMA) + SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA) + SECTIONS_END +} diff --git a/packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pidBE_ram.mlt b/packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pidBE_ram.mlt new file mode 100644 --- /dev/null +++ b/packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pidBE_ram.mlt @@ -0,0 +1,11 @@ +version 0 +region ram 4000 7c000 0 ! +section rom_vectors 0 1 0 1 1 1 1 1 4000 4000 text text ! +section text 0 1 0 1 0 1 0 1 fini fini ! +section fini 0 1 0 1 0 1 0 1 rodata rodata ! +section rodata 0 1 0 1 0 1 0 1 rodata1 rodata1 ! +section rodata1 0 1 0 1 0 1 0 1 fixup fixup ! +section fixup 0 1 0 1 0 1 0 1 gcc_except_table gcc_except_table ! +section gcc_except_table 0 1 0 1 0 1 0 1 data data ! +section data 0 1 0 1 0 1 0 1 bss bss ! +section bss 0 4 0 1 0 0 0 0 ! diff --git a/packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pidBE_rom.ldi b/packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pidBE_rom.ldi new file mode 100644 --- /dev/null +++ b/packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pidBE_rom.ldi @@ -0,0 +1,51 @@ +//=========================================================================== +// +// MLT linker script export - Tue Jan 13 10:14:27 1999 +// +//=========================================================================== +//####COPYRIGHTBEGIN#### +// +// ------------------------------------------- +// The contents of this file are subject to the Cygnus eCos Public License +// Version 1.0 (the "License"); you may not use this file except in +// compliance with the License. You may obtain a copy of the License at +// http://sourceware.cygnus.com/ecos +// +// Software distributed under the License is distributed on an "AS IS" +// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +// License for the specific language governing rights and limitations under +// the License. +// +// The Original Code is eCos - Embedded Cygnus Operating System, released +// September 30, 1998. +// +// The Initial Developer of the Original Code is Cygnus. Portions created +// by Cygnus are Copyright (C) 1998,1999 Cygnus Solutions. All Rights Reserved. +// ------------------------------------------- +// +//####COPYRIGHTEND#### +//=========================================================================== + +// Modified for ARM/PID7T, generic ROM image + +MEMORY +{ + rom : ORIGIN = 0x04000000, LENGTH = 0x80000 + ram : ORIGIN = 0x00000800, LENGTH = 0x7F800 +} + +SECTIONS +{ + SECTIONS_BEGIN + SECTION_rom_vectors (rom, 0x4000000, LMA_EQ_VMA) + SECTION_text (rom, ALIGN (0x1), LMA_EQ_VMA) + SECTION_fini (rom, ALIGN (0x1), LMA_EQ_VMA) + SECTION_rodata (rom, ALIGN (0x1), LMA_EQ_VMA) + SECTION_rodata1 (rom, ALIGN (0x1), LMA_EQ_VMA) + SECTION_fixup (rom, ALIGN (0x1), LMA_EQ_VMA) + SECTION_gcc_except_table (rom, ALIGN (0x1), LMA_EQ_VMA) + SECTION_data (ram, 0x800, FOLLOWING (.gcc_except_table)) + SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA) + SECTIONS_END +} + diff --git a/packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pidBE_rom.mlt b/packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pidBE_rom.mlt new file mode 100644 --- /dev/null +++ b/packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pidBE_rom.mlt @@ -0,0 +1,12 @@ +version 0 +region ram 800 7f800 0 ! +region rom 4000000 80000 1 ! +section data 0 1 1 1 1 1 0 0 800 bss ! +section bss 0 4 0 1 0 0 0 0 ! +section rom_vectors 0 1 0 1 1 1 1 1 4000000 4000000 text text ! +section text 0 1 0 1 0 1 0 1 fini fini ! +section fini 0 1 0 1 0 1 0 1 rodata rodata ! +section rodata 0 1 0 1 0 1 0 1 rodata1 rodata1 ! +section rodata1 0 1 0 1 0 1 0 1 fixup fixup ! +section fixup 0 1 0 1 0 1 0 1 gcc_except_table gcc_except_table ! +section gcc_except_table 0 1 0 1 0 0 0 1 data ! diff --git a/packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pidBE_stubs.ldi b/packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pidBE_stubs.ldi new file mode 100644 --- /dev/null +++ b/packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pidBE_stubs.ldi @@ -0,0 +1,49 @@ +//=========================================================================== +// +// MLT linker script export - Tue Jan 13 10:14:27 1999 +// +//=========================================================================== +//####COPYRIGHTBEGIN#### +// +// ------------------------------------------- +// The contents of this file are subject to the Cygnus eCos Public License +// Version 1.0 (the "License"); you may not use this file except in +// compliance with the License. You may obtain a copy of the License at +// http://sourceware.cygnus.com/ecos +// +// Software distributed under the License is distributed on an "AS IS" +// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +// License for the specific language governing rights and limitations under +// the License. +// +// The Original Code is eCos - Embedded Cygnus Operating System, released +// September 30, 1998. +// +// The Initial Developer of the Original Code is Cygnus. Portions created +// by Cygnus are Copyright (C) 1998,1999 Cygnus Solutions. All Rights Reserved. +// ------------------------------------------- +// +//####COPYRIGHTEND#### +//=========================================================================== + +// Modified for ARM/PID BigEndian GDB/stubs ROM image only +// Note that .rodata(1) must be merged into the .data section! + +MEMORY +{ + rom : ORIGIN = 0x04000000, LENGTH = 0x80000 + ram : ORIGIN = 0x00000800, LENGTH = 0x03800 +} + +SECTIONS +{ + SECTIONS_BEGIN + SECTION_rom_vectors (rom, 0x4000000, LMA_EQ_VMA) + SECTION_text (rom, ALIGN (0x1), LMA_EQ_VMA) + SECTION_fini (rom, ALIGN (0x1), LMA_EQ_VMA) + SECTION_fixup (rom, ALIGN (0x1), LMA_EQ_VMA) + SECTION_gcc_except_table (rom, ALIGN (0x1), LMA_EQ_VMA) + SECTION_data (ram, 0x800, FOLLOWING (.gcc_except_table)) + SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA) + SECTIONS_END +} diff --git a/packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pidBE_stubs.mlt b/packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pidBE_stubs.mlt new file mode 100644 --- /dev/null +++ b/packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pidBE_stubs.mlt @@ -0,0 +1,10 @@ +version 0 +region ram 800 3800 0 ! +region rom 4000000 80000 1 ! +section data 0 1 1 1 1 1 0 0 800 bss ! +section bss 0 4 0 1 0 0 0 0 ! +section rom_vectors 0 1 0 1 1 1 1 1 4000000 4000000 text text ! +section text 0 1 0 1 0 1 0 1 fini fini ! +section fini 0 1 0 1 0 1 0 1 fixup fixup ! +section fixup 0 1 0 1 0 1 0 1 gcc_except_table gcc_except_table ! +section gcc_except_table 0 1 0 1 0 0 0 1 data ! diff --git a/packages/hal/arm/pid/current/include/plf_stub.h b/packages/hal/arm/pid/current/include/plf_stub.h --- a/packages/hal/arm/pid/current/include/plf_stub.h +++ b/packages/hal/arm/pid/current/include/plf_stub.h @@ -73,7 +73,14 @@ extern int hal_pid_interruptible(int); //---------------------------------------------------------------------------- // Reset. -#define HAL_STUB_PLATFORM_RESET() CYG_EMPTY_STATEMENT +#ifdef CYG_HAL_STARTUP_STUBS +// Just call the ROM's entry point. Not as safe as a reset, but the PID +// doesn't have a watchdog, so this'll have to do. +externC void reset_vector(void); +#define HAL_STUB_PLATFORM_RESET() reset_vector() +#else +#define HAL_STUB_PLATFORM_RESET() CYG_EMPTY_STATEMENT +#endif #endif // ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS diff --git a/packages/hal/arm/pid/current/misc/Notes b/packages/hal/arm/pid/current/misc/Notes --- a/packages/hal/arm/pid/current/misc/Notes +++ b/packages/hal/arm/pid/current/misc/Notes @@ -22,25 +22,116 @@ by Cygnus are Copyright (C) 1998,1999 Cy ####COPYRIGHTEND#### =========================================================================== -15 Jan 1999 +27 Oct 1999 How to build and install the GDB module on the PID -1. Configure a minimal eCos system with all packages except 'infra' disabled. -2. Edit to enable GDB: +Make GDB module +~~~~~~~~~~~~~~~ + 1. Configure a minimal eCos system with all packages except 'infra' disabled. + 2. Edit to enable GDB: #define CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS #undef CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT #undef CYGDBG_HAL_DEBUG_GDB_THREAD_SUPPORT -3. make;make -C hal/arm/pid/current/misc -4. Download the image onto the PID board: - arm-elf-gdb -nw hal/arm/pid/current/misc/gdb_module.img - You can connect to the board using either existing GDB stubs or Angel. + 3. make;make -C hal/arm/pid//misc + + Alternatively run hal/arm/pid//misc/STUBS_config. + + + GDB image is in the file hal/arm/pid//misc/gdb_module.img + + +Make FLASH tool +~~~~~~~~~~~~~~~ + 1. Configure a separate eCos system with all packages enabled. + 2. Change diag chanel to port B (in file pkgconf/hal_arm_pid.h): + #define CYGHWR_HAL_ARM_PID_DIAG_PORT 1 + 2. make misc + + FLASH tool is in the file hal/arm/pid//misc/prog_flash + + +Prepare board for eCos +~~~~~~~~~~~~~~~~~~~~~~ + 1. Set jumper 7-8 on LK6 [using the Angle code in the 16 bit EPROM] + 2. Set jumper 5-6 on LK6 [select 8bit ROM mode] + 3. Set jumper LK18 [ROM remap - this is also required for eCos] + 4. Set S1 to 0-0-1-1 [20MHz operation] + + +Program FLASH +~~~~~~~~~~~~~ + 1. Download the image onto the PID board: + arm-elf-gdb -nw hal/arm/pid//misc/gdb_module.img + + (gdb) target rdi s= + (gdb) load + [...] + (gdb) quit + This will download the stubs onto the board at 0x60000..0x64000 -5. Configure a separate eCos system with all packages enabled. -6. make misc -7. Now download the FLASH programmer tool - arm-elf-gdb -nw hal/arm/pid/current/misc/prog_flash -8. Run the tool. The GDB stubs will now be programmed into the FLASH. + + 2. Now download the FLASH programmer tool + arm-elf-gdb -nw hal/arm/pid//misc/prog_flash + + (gdb) target rdi s= + (gdb) load + [...] + (gdb) cont + + 3. The FLASH tool will output some text on the board serial port B at + 38400 baud: + + ARM eCos + FLASH here! + manuf: 8, device: 40 + Error: Wrong Manufaturer: 08 + ... Please change FLASH jumper + + 4. This text is repeated until you remove the jumper 7-8 on LK6. Then + the output should be: + + manuf: 1F, device: A4 + AT29C040A recognised + About to program FLASH using data at 60000..64000 + *** Press RESET now to abort! + + 5. You have about 10 seconds to abort the operation by pressing + reset. After this timeout, the FLASH programming happens: + + ...Programming FLASH + All done! -eCos GDB stubs should now be installed and set up as the default monitor when you -run from FLASH. + 6. Quit/kill the GDB process which will hang. + + 7. Next time you reset the board, the stub will be in control, communicating + on serial port A at 38400 baud. See documentation for further details + on how to connect with GDB. + + + +Big-Endian operation +~~~~~~~~~~~~~~~~~~~~ + + 1) If the board is to be used in big-endian mode, the stub should be + configured for platform 'pidbe' instead of 'pid'. 'pidbe' can also + be used as a second argument to the STUBS_config script. + + 2a) If a big-endian rom controller is installed on the board, the + programming of a new stub into flash is covered in the ARM PID + manual. + + 2b) If a big-endian rom controller is _not_ used, this is what you + must do: + + 1) Follow the above instructions (including jumper settings) , + but instead of using the 'prog_flash' FLASH tool, use the + 'prog_flash_BE_image_LE_system' FLASH tool. + + 2) Instead of resetting the board after the FLASH has been + programmed, switch off the power and enable jumper LK4. + + If you have to re-program the FLASH later, you can follow the + steps above again, but also disable jumper LK4 when changing the + other jumpers. + diff --git a/packages/hal/arm/pid/current/misc/PKGconf.mak b/packages/hal/arm/pid/current/misc/PKGconf.mak --- a/packages/hal/arm/pid/current/misc/PKGconf.mak +++ b/packages/hal/arm/pid/current/misc/PKGconf.mak @@ -37,17 +37,37 @@ PROGS := gdb_module OTHER_PROGS := gdb_module.img endif ifdef CYG_HAL_STARTUP_RAM -PROGS := flash prog_flash +PROGS := flash prog_flash +OTHER_PROGS := prog_flash.img +# And for BE support +PROGS += prog_flash_BE_image_LE_system +OTHER_PROGS += prog_flash_BE_image_LE_system.img endif WHEREAMI := misc include $(COMPONENT_REPOSITORY)/pkgconf/makrules.prv +ifdef CYG_HAL_STARTUP_RAM +prog_flash.img: prog_flash.stamp + $(OBJCOPY) --strip-debug prog_flash$(EXEEXT) prog_flash.img +endif + ifdef CYG_HAL_STARTUP_STUBS gdb_module.img: gdb_module.stamp - $(OBJCOPY) --strip-all gdb_module$(EXEEXT) gdb_module.img.XX + $(OBJCOPY) --strip-debug gdb_module$(EXEEXT) gdb_module.img.XX $(OBJCOPY) --change-addresses=0xFC060000 gdb_module.img.XX gdb_module.img $(OBJCOPY) -O binary gdb_module.img gdb_module.bin $(RM) -f gdb_module.img.XX endif +ifdef CYG_HAL_STARTUP_RAM +prog_flash_BE_image_LE_system.img: prog_flash_BE_image_LE_system.stamp + $(OBJCOPY) --strip-debug prog_flash_BE_image_LE_system$(EXEEXT) prog_flash_BE_image_LE_system.img + +hal_arm_pid_prog_flash_BE_image_LE_system.o: prog_flash.c + $(CC) -DBE_IMAGE -c $(INCLUDE_PATH) $(CFLAGS) $($(notdir $<)-CFLAGS) -Wp,-MD,$(@:.o=.tmp) -o $@ $< + @echo > $(@:.o=.d) + @echo $@ ':' $< '\' >> $(@:.o=.d) + @$(TAIL) +2 $(@:.o=.tmp) >> $(@:.o=.d) + @$(RM) $(@:.o=.tmp) +endif diff --git a/packages/hal/arm/pid/current/misc/STUBS_config b/packages/hal/arm/pid/current/misc/STUBS_config --- a/packages/hal/arm/pid/current/misc/STUBS_config +++ b/packages/hal/arm/pid/current/misc/STUBS_config @@ -1,10 +1,35 @@ #! /bin/sh -# Configure ARM/AEB eCos to create PID GDB stubs - +# Configure ARM/PID eCos to create PID GDB stubs +# Ensure that PATH include the directory where the ARM tools reside. +# +# Run from an empty temporary directory with two arguments: the path to +# the packages directory (i.e., where pkgconf.tcl lives), and the platform +# name (pid or pid9). +# If a big-endian stub is required, use the name 'pidBE' +# +# Output files are in the directory hal/arm/pid//misc. +# gdb_module.img: suitable for programming via GDB stub/Angel +# gdb_module.bin: suitable for programming with an EPROM programmer +# See Notes for details. -tcl $1/pkgconf.tcl \ - --target=arm --platform=pid --startup=stubs \ +if [ "$2"x = "x" ]; then + PID="pid" +else + PID=$2 +fi + +if ( echo | tclsh ) 2>/dev/null ; then + TCL=tclsh +elif ( echo | cygtclsh80 ) 2>/dev/null ; then + TCL=cygtclsh80 +else + echo Could not find TCL interpreter + exit 1 +fi + +$TCL $1/pkgconf.tcl \ + --target=arm --platform=${PID} --startup=stubs \ --disable CYGPKG_KERNEL --disable CYGPKG_UITRON \ --disable CYGPKG_LIBC --disable CYGPKG_LIBM \ --disable CYGPKG_ERROR --disable CYGPKG_IO \ @@ -38,3 +63,6 @@ patch < // interrupt macros #include // IO macros #include -#ifdef CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT +#ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS #include +#include // cyg_hal_gdb_interrupt #endif // Assumption: all diagnostic output must be GDB packetized unless this is a ROM (i.e. @@ -290,7 +291,11 @@ hal_diag_write_char(char c) // receive interrupt will be seen when we re-enable interrupts // later. +#ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS + CYG_HAL_GDB_ENTER_CRITICAL_IO_REGION(old); +#else HAL_DISABLE_INTERRUPTS(old); +#endif while(1) { @@ -339,7 +344,11 @@ hal_diag_write_char(char c) pos = 0; // And re-enable interrupts +#ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS + CYG_HAL_GDB_LEAVE_CRITICAL_IO_REGION(old); +#else HAL_RESTORE_INTERRUPTS(old); +#endif } } @@ -347,7 +356,8 @@ hal_diag_write_char(char c) /*---------------------------------------------------------------------------*/ -// Control the LEDs PP0-PP3. this requires the jumpers on pins 1-8 to +#ifdef CYGHWR_HAL_ARM_PID_DIAG_LEDS +// Control the LEDs PP0-PP3. This requires the jumpers on pins 9-16 to // be set on LK11, thus preventing the use of the parallel port. #define CYG_DEVICE_PARALLEL_DATA 0x0d800040 @@ -357,6 +367,6 @@ hal_diag_led(int n) { HAL_WRITE_UINT8(CYG_DEVICE_PARALLEL_DATA, (n & 0xf) << 4); } - +#endif // CYGHWR_HAL_ARM_PID_DIAG_LEDS /*---------------------------------------------------------------------------*/ /* End of hal_diag.c */ diff --git a/packages/hal/arm/pid/current/src/pid_misc.c b/packages/hal/arm/pid/current/src/pid_misc.c --- a/packages/hal/arm/pid/current/src/pid_misc.c +++ b/packages/hal/arm/pid/current/src/pid_misc.c @@ -197,6 +197,6 @@ void hal_show_IRQ(int vector, int data, { // diag_printf("IRQ - vector: %x, data: %x, handler: %x\n", vector, data, handler); } - + /*---------------------------------------------------------------------------*/ /* End of hal_misc.c */ diff --git a/packages/hal/common/current/ChangeLog b/packages/hal/common/current/ChangeLog --- a/packages/hal/common/current/ChangeLog +++ b/packages/hal/common/current/ChangeLog @@ -1,3 +1,40 @@ +1999-10-29 Gary Thomas + + * tests/PKGconf.mak: Add cache tests for Cirrus Logic boards. + +1999-10-29 Jesper Skov + + * tests/cache.c: Made safe for targets with no cache. + + * tests/PKGconf.mak: Don't build cache test for ARM unless + explicitly enabled. + +1999-10-28 Jesper Skov + + * tests/cache.c: Fix array size. + +1999-10-27 Hugo Tyson + + * src/hal_stub.c (cyg_hal_gdb_interrupt): Bugfix to previous: ^Cs + were being ignored when received by the diag output code, because + there was already a break in place. Solution is to let + cyg_hal_gdb_interrupt() override any previous break, and tidy up + state of course. + +1999-10-26 Hugo Tyson + + * include/hal_stub.h (CYG_HAL_GDB_ENTER_CRITICAL_IO_REGION): Place + the break at the address of a label within the calling context + [normally hal_diag_write_char()]; this is neater and more + portable; it's supported for more targets. Also use + cyg_hal_place_break() to place it, define that, &c. + + * src/hal_stub.c (cyg_hal_gdb_place_break): New routine to + specially handle the inline breakpoint. It basically does the + same as cyg_hal_gdb_interrupt(), except on some platforms where + you must do different things to set a bp from a non-interrupt + context. + 1999-10-22 Hugo Tyson * include/hal_stub.h (CYG_HAL_GDB_ENTER_CRITICAL_IO_REGION): diff --git a/packages/hal/common/current/include/hal_stub.h b/packages/hal/common/current/include/hal_stub.h --- a/packages/hal/common/current/include/hal_stub.h +++ b/packages/hal/common/current/include/hal_stub.h @@ -151,8 +151,13 @@ extern void CYG_LABEL_NAME(breakinst) (v extern unsigned long __break_opcode (void); #ifdef CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT +// This one may assume a valid saved interrupt context on some platforms extern void cyg_hal_gdb_interrupt (target_register_t pc); +// This one does not; use from CRITICAL_IO_REGION macros below. +extern void cyg_hal_gdb_place_break (target_register_t pc); +// Remove a break from either above - or not if cyg_hal_gdb_running_step extern int cyg_hal_gdb_remove_break (target_register_t pc); +// Bool: is such a breakpoint set? extern int cyg_hal_gdb_break_is_set (void); /* This is used so that the generic stub can tell @@ -166,10 +171,27 @@ extern volatile int cyg_hal_gdb_running_ // NB they require __builtin_return_address() to work: if your platform // does not support this, use HAL_DISABLE_INTERRUPTS &c instead. +#if 1 // Can use the address of a label: this is more portable + #define CYG_HAL_GDB_ENTER_CRITICAL_IO_REGION( _old_ ) \ do { \ HAL_DISABLE_INTERRUPTS(_old_); \ - cyg_hal_gdb_interrupt((target_register_t)__builtin_return_address(0)); \ + cyg_hal_gdb_place_break( &&cyg_hal_gdb_break_place ); \ +} while ( 0 ) + +#define CYG_HAL_GDB_LEAVE_CRITICAL_IO_REGION( _old_ ) \ +do { \ + cyg_hal_gdb_remove_break( &&cyg_hal_gdb_break_place ); \ + HAL_RESTORE_INTERRUPTS(_old_); \ +cyg_hal_gdb_break_place: \ +} while ( 0 ) + +#else // use __builtin_return_address instead. + +#define CYG_HAL_GDB_ENTER_CRITICAL_IO_REGION( _old_ ) \ +do { \ + HAL_DISABLE_INTERRUPTS(_old_); \ + cyg_hal_place_break((target_register_t)__builtin_return_address(0)); \ } while ( 0 ) #define CYG_HAL_GDB_LEAVE_CRITICAL_IO_REGION( _old_ ) \ @@ -178,6 +200,8 @@ do { HAL_RESTORE_INTERRUPTS(_old_); \ } while ( 0 ) +#endif + #else // NO debug_gdb_break_support // so define these just to do interrupts: diff --git a/packages/hal/common/current/src/hal_stub.c b/packages/hal/common/current/src/hal_stub.c --- a/packages/hal/common/current/src/hal_stub.c +++ b/packages/hal/common/current/src/hal_stub.c @@ -43,6 +43,9 @@ //============================================================================= #include +#ifdef CYGPKG_CYGMON +#include +#endif #ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS @@ -139,11 +142,20 @@ static instrBuffer break_buffer; volatile int cyg_hal_gdb_running_step = 0; void +cyg_hal_gdb_place_break (target_register_t pc) +{ + cyg_hal_gdb_interrupt( pc ); // Let's hope this becomes a drop-through: +} + +void cyg_hal_gdb_interrupt (target_register_t pc) { - // Clear this regardless + // Clear flag that we Continued instead of Stepping cyg_hal_gdb_running_step = 0; - // so that a call to set a BP because of a ^C will take effect + // and override existing break? So that a ^C takes effect... + if (NULL != break_buffer.targetAddr) + cyg_hal_gdb_remove_break( (target_register_t)break_buffer.targetAddr ); + if (NULL == break_buffer.targetAddr) { break_buffer.targetAddr = (t_inst*) pc; break_buffer.savedInstr = *(t_inst*)pc; diff --git a/packages/hal/common/current/tests/PKGconf.mak b/packages/hal/common/current/tests/PKGconf.mak --- a/packages/hal/common/current/tests/PKGconf.mak +++ b/packages/hal/common/current/tests/PKGconf.mak @@ -33,8 +33,19 @@ include ../../../../pkgconf/pkgconf.mak include ../../../../pkgconf/system.mak TESTS := intr context -ifndef CYG_HAL_ARM_AEB -TESTS += cache + +ifndef CYGPKG_HAL_ARM +TESTS += cache +endif + +# Must be CYG_ - if CYGPKG_ would also match revision B +ifdef CYG_HAL_ARM_AEBC +TESTS += cache +endif + + +ifdef CYGPKG_HAL_ARM_CL7211 +TESTS += cache endif include $(COMPONENT_REPOSITORY)/pkgconf/makrules.tst diff --git a/packages/hal/common/current/tests/cache.c b/packages/hal/common/current/tests/cache.c --- a/packages/hal/common/current/tests/cache.c +++ b/packages/hal/common/current/tests/cache.c @@ -43,6 +43,8 @@ #include #include +#if (HAL_DCACHE_SIZE > 0) + // ------------------------------------------------------------------------- // If the HAL does not supply this, we supply our own version @@ -69,14 +71,12 @@ CYG_MACRO_END // ------------------------------------------------------------------------- -#define MAXSIZE 1<<18 - -volatile char m[MAXSIZE]; - #ifndef MAX_STRIDE #define MAX_STRIDE 64 #endif +volatile char m[(HAL_DCACHE_SIZE/HAL_DCACHE_LINE_SIZE)*MAX_STRIDE]; + // ------------------------------------------------------------------------- static void time0(register cyg_uint32 stride) @@ -209,5 +209,18 @@ cyg_start( void ) cache_main(); } +#else // (HAL_DCACHE_SIZE > 0) +#define N_A_MSG "No cache" +#endif // (HAL_DCACHE_SIZE > 0) + +#ifdef N_A_MSG +externC void +cyg_start( void ) +{ + CYG_TEST_INIT(); + CYG_TEST_NA( N_A_MSG ); +} +#endif // N_A_MSG + // ------------------------------------------------------------------------- /* EOF cache.c */ diff --git a/packages/hal/mips/arch/current/ChangeLog b/packages/hal/mips/arch/current/ChangeLog --- a/packages/hal/mips/arch/current/ChangeLog +++ b/packages/hal/mips/arch/current/ChangeLog @@ -1,3 +1,28 @@ +1999-10-29 Nick Garnett + + * include/pkgconf/hal_mips.h: Added condition to set a + MIPS-private option (CYGDBG_HAL_MIPS_DEBUG_GDB_CTRLC_SUPPORT) if + either CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT or + CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT are defined. In the MIPS HAL + these are implmented with the same code. + + * src/hal_misc.c: Changed CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT to + CYGDBG_HAL_MIPS_DEBUG_GDB_CTRLC_SUPPORT. + + * src/vectors.S: Space for old SP after switching to interrupt + stack must be 8 bytes to preserve alignment of SP. Otherwise any + nested interrupts or exceptions will get an address error + exception if the FP regs are saved, which then recurses. + Changed CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT to + CYGDBG_HAL_MIPS_DEBUG_GDB_CTRLC_SUPPORT. + + * src/mips-stub.c (__is_breakpoint_function): Fixed comparison + between PC register and label. On 64 bit CPUs these are both 32 + bit values in 64 bit types, but the way that they are generated, + the PC is zero extended and the label is sign extended. This + caused them to always differ. Fixed by casting label to unsigned + long before widening. + 1999-10-22 Nick Garnett * src/vectors.S: Replaced ifdef with call to hal_intc_translate diff --git a/packages/hal/mips/arch/current/include/pkgconf/hal_mips.h b/packages/hal/mips/arch/current/include/pkgconf/hal_mips.h --- a/packages/hal/mips/arch/current/include/pkgconf/hal_mips.h +++ b/packages/hal/mips/arch/current/include/pkgconf/hal_mips.h @@ -81,5 +81,19 @@ #define CYGHWR_HAL_MIPS_CPU_FREQ 50 /* -------------------------------------------------------------------*/ +/* If either the CTRLC or BREAK support options in hal.h are set */ +/* then set our own option to turn on shared generic support for */ +/* control C handling. */ + + +#if defined(CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT) || \ + defined(CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT) + +#define CYGDBG_HAL_MIPS_DEBUG_GDB_CTRLC_SUPPORT + +#endif + + +/* -------------------------------------------------------------------*/ #endif /* CYGONCE_PKGCONF_HAL_MIPS_H */ /* EOF hal_mips.h */ diff --git a/packages/hal/mips/arch/current/src/hal_misc.c b/packages/hal/mips/arch/current/src/hal_misc.c --- a/packages/hal/mips/arch/current/src/hal_misc.c +++ b/packages/hal/mips/arch/current/src/hal_misc.c @@ -125,7 +125,7 @@ externC cyg_uint32 cyg_hal_exception_han externC cyg_uint32 hal_default_isr(CYG_ADDRWORD vector, CYG_ADDRWORD data) { -#if defined(CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT) && \ +#if defined(CYGDBG_HAL_MIPS_DEBUG_GDB_CTRLC_SUPPORT) && \ defined(CYGHWR_HAL_GDB_PORT_VECTOR) && \ defined(HAL_CTRLC_ISR) diff --git a/packages/hal/mips/arch/current/src/mips-stub.c b/packages/hal/mips/arch/current/src/mips-stub.c --- a/packages/hal/mips/arch/current/src/mips-stub.c +++ b/packages/hal/mips/arch/current/src/mips-stub.c @@ -332,7 +332,7 @@ void __clear_breakpoints (void) int __is_breakpoint_function () { - return get_register (PC) == (target_register_t)&CYG_LABEL_NAME(breakinst); + return get_register (PC) == (target_register_t)(unsigned long)&CYG_LABEL_NAME(breakinst); } diff --git a/packages/hal/mips/arch/current/src/vectors.S b/packages/hal/mips/arch/current/src/vectors.S --- a/packages/hal/mips/arch/current/src/vectors.S +++ b/packages/hal/mips/arch/current/src/vectors.S @@ -488,7 +488,8 @@ FUNC_START(__default_interrupt_vsr) 1: move sp,a0 # switch to istack 8: - addi sp,sp,-4 # space for old SP + addi sp,sp,-8 # space for old SP + # (8 to keep dword alignment!) sw s0,0(sp) # save old SP on stack #endif @@ -522,7 +523,7 @@ 8: move a2,s2 # a2 = interrupt number #endif -#if defined(CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT) +#if defined(CYGDBG_HAL_MIPS_DEBUG_GDB_CTRLC_SUPPORT) # If we are supporting Ctrl-C interrupts from GDB, we must squirrel # away a pointer to the save interrupt state here so that we can # plant a breakpoint at some later time. diff --git a/packages/hal/mips/jmr3904/current/ChangeLog b/packages/hal/mips/jmr3904/current/ChangeLog --- a/packages/hal/mips/jmr3904/current/ChangeLog +++ b/packages/hal/mips/jmr3904/current/ChangeLog @@ -1,3 +1,10 @@ +1999-10-29 Nick Garnett + + * include/plf_intr.h: + * src/plf_misc.c: + Changed CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT to + CYGDBG_HAL_MIPS_DEBUG_GDB_CTRLC_SUPPORT. + 1999-08-25 Nick Garnett * include/platform.inc: Rearranged code a little to avoid diff --git a/packages/hal/mips/jmr3904/current/include/plf_intr.h b/packages/hal/mips/jmr3904/current/include/plf_intr.h --- a/packages/hal/mips/jmr3904/current/include/plf_intr.h +++ b/packages/hal/mips/jmr3904/current/include/plf_intr.h @@ -56,7 +56,7 @@ //-------------------------------------------------------------------------- // Control-C support. -#if defined(CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT) +#if defined(CYGDBG_HAL_MIPS_DEBUG_GDB_CTRLC_SUPPORT) # define CYGHWR_HAL_GDB_PORT_VECTOR CYGNUM_HAL_INTERRUPT_SIO_0 diff --git a/packages/hal/mips/jmr3904/current/src/plf_misc.c b/packages/hal/mips/jmr3904/current/src/plf_misc.c --- a/packages/hal/mips/jmr3904/current/src/plf_misc.c +++ b/packages/hal/mips/jmr3904/current/src/plf_misc.c @@ -76,7 +76,7 @@ void hal_platform_init(void) #endif -#if defined(CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT) +#if defined(CYGDBG_HAL_MIPS_DEBUG_GDB_CTRLC_SUPPORT) { void hal_ctrlc_isr_init(void); hal_ctrlc_isr_init(); @@ -147,7 +147,7 @@ void cyg_hal_user_break( CYG_ADDRWORD *r /*------------------------------------------------------------------------*/ /* Control C ISR support */ -#if defined(CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT) +#if defined(CYGDBG_HAL_MIPS_DEBUG_GDB_CTRLC_SUPPORT) #define DIAG_BASE 0xfffff300 #define DIAG_SLCR (DIAG_BASE+0x00) diff --git a/packages/hal/mips/tx39/current/ChangeLog b/packages/hal/mips/tx39/current/ChangeLog --- a/packages/hal/mips/tx39/current/ChangeLog +++ b/packages/hal/mips/tx39/current/ChangeLog @@ -1,3 +1,8 @@ +1999-10-26 Nick Garnett + + * include/variant.inc: Added implementations of hal_intc_translate + macro. + 1999-10-06 Jonathan Larmour * src/PKGconf.mak: Don't create extras.o here any more diff --git a/packages/hal/mips/tx39/current/include/variant.inc b/packages/hal/mips/tx39/current/include/variant.inc --- a/packages/hal/mips/tx39/current/include/variant.inc +++ b/packages/hal/mips/tx39/current/include/variant.inc @@ -213,6 +213,17 @@ lb \vnum,0(v0) # load it .endm +#ifndef CYGPKG_HAL_MIPS_INTC_TRANSLATE_DEFINED +#ifdef CYGIMP_HAL_COMMON_INTERRUPTS_CHAIN + .macro hal_intc_translate inum,vnum + move \vnum,zero # Just vector zero is supported + .endm +#else + .macro hal_intc_translate inum,vnum + move \vnum,\inum # Vector == interrupt number + .endm +#endif +#endif # This table translates from the 6 bit value supplied in the IP bits # of the cause register into a 0..16 offset into the ISR tables. diff --git a/packages/hal/powerpc/cogent/current/misc/STUBS_config b/packages/hal/powerpc/cogent/current/misc/STUBS_config --- a/packages/hal/powerpc/cogent/current/misc/STUBS_config +++ b/packages/hal/powerpc/cogent/current/misc/STUBS_config @@ -8,7 +8,16 @@ # Output will be ./stubrom.bin which is suitable for burning into ROM. # Remember to be careful with byte-endianess in the ROM programmer. -tcl $1/pkgconf.tcl \ +if ( echo | tclsh ) 2>/dev/null ; then + TCL=tclsh +elif ( echo | cygtclsh80 ) 2>/dev/null ; then + TCL=cygtclsh80 +else + echo Could not find TCL interpreter + exit 1 +fi + +$TCL $1/pkgconf.tcl \ --target=powerpc --platform=cogent --startup=stubs \ --disable CYGPKG_KERNEL --disable CYGPKG_UITRON \ --disable CYGPKG_LIBC --disable CYGPKG_LIBM \ diff --git a/packages/io/serial/current/ChangeLog b/packages/io/serial/current/ChangeLog --- a/packages/io/serial/current/ChangeLog +++ b/packages/io/serial/current/ChangeLog @@ -1,3 +1,10 @@ +1999-10-26 Jesper Skov + + * src/arm/pid_serial.h: Added BE support. + + * src/PKGconf.mak: Use CYGPKG_<> instead of CYG_<> to control what + needs to be compiled. + 1999-10-25 Gary Thomas * src/arm/pid_serial.h (ISR_RxTO): Define - character received but diff --git a/packages/io/serial/current/src/PKGconf.mak b/packages/io/serial/current/src/PKGconf.mak --- a/packages/io/serial/current/src/PKGconf.mak +++ b/packages/io/serial/current/src/PKGconf.mak @@ -34,31 +34,31 @@ include ../../../../pkgconf/system.mak LIBRARY := libtarget.a EXTRAS_COMPILE := common/serial.c common/tty.c common/haldiag.c -ifdef CYG_HAL_ARM_PID +ifdef CYGPKG_HAL_ARM_PID EXTRAS_COMPILE += arm/pid_serial_with_ints.c endif -ifdef CYG_HAL_ARM_AEB +ifdef CYGPKG_HAL_ARM_AEB EXTRAS_COMPILE += arm/aeb_serial.c endif -ifdef CYG_HAL_ARM_EB7211 +ifdef CYGPKG_HAL_ARM_CL7211 EXTRAS_COMPILE += arm/cl7211_serial.c endif -ifdef CYG_HAL_ARM_CMA230 +ifdef CYGPKG_HAL_ARM_CMA230 EXTRAS_COMPILE += arm/cma230_serial.c endif -ifdef CYG_HAL_MN10300_AM31 +ifdef CYGPKG_HAL_MN10300_AM31 EXTRAS_COMPILE += mn10300/mn10300_serial.c endif -ifdef CYG_HAL_MIPS_TX39 +ifdef CYGPKG_HAL_MIPS_TX39 EXTRAS_COMPILE += mips/tx3904_serial.c endif -ifdef CYG_HAL_POWERPC_COGENT +ifdef CYGPKG_HAL_POWERPC_COGENT EXTRAS_COMPILE += powerpc/cogent_serial_with_ints.c endif ifdef CYGPKG_HAL_QUICC EXTRAS_COMPILE += powerpc/quicc_smc_serial.c endif -ifdef CYG_HAL_SPARCLITE_SLEB +ifdef CYGPKG_HAL_SPARCLITE_SLEB EXTRAS_COMPILE += sparclite/sleb_sdtr.c endif OTHER_OBJS := diff --git a/packages/io/serial/current/src/arm/pid_serial.h b/packages/io/serial/current/src/arm/pid_serial.h --- a/packages/io/serial/current/src/arm/pid_serial.h +++ b/packages/io/serial/current/src/arm/pid_serial.h @@ -48,8 +48,17 @@ struct serial_port { unsigned char _byte[32]; }; +// Little-endian version +#if (CYG_BYTEORDER == CYG_LSBFIRST) + #define reg(n) _byte[n*4] +#else // Big-endian version + +#define reg(n) _byte[(n*4)^3] + +#endif + // Receive control registers #define rhr reg(0) // Receive holding register #define isr reg(2) // Interrupt status register diff --git a/packages/kernel/current/ChangeLog b/packages/kernel/current/ChangeLog --- a/packages/kernel/current/ChangeLog +++ b/packages/kernel/current/ChangeLog @@ -1,3 +1,7 @@ +1999-10-29 Gary Thomas + + * tests/PKGconf.mak: Enable cache tests for Cirrus Logic boards. + 1999-10-08 Jesper Skov * tests/kcache1.c: Fix array size. diff --git a/packages/kernel/current/tests/PKGconf.mak b/packages/kernel/current/tests/PKGconf.mak --- a/packages/kernel/current/tests/PKGconf.mak +++ b/packages/kernel/current/tests/PKGconf.mak @@ -46,6 +46,10 @@ TESTS += kcache1 kcache2 endif +ifdef CYGPKG_HAL_ARM_CL7211 +TESTS += kcache1 kcache2 +endif + ifndef CYGPKG_HAL_ARM_AEB TESTS += stress_threads endif diff --git a/packages/targets b/packages/targets --- a/packages/targets +++ b/packages/targets @@ -250,6 +250,24 @@ target arm { LDLANGFLAGS "-Wl,--gc-sections -Wl,-static" } } + + platform pidBE { + alias { "ARM PID7 development board in big-endian mode" } + startup { ram rom stubs } + packages { + CYGPKG_HAL_ARM_PID + } + base_platform pid + cflags { + ARCHFLAGS "-mcpu=arm7tdmi -mbig-endian" + ERRFLAGS "-Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef" + CXXERRFLAGS "-Woverloaded-virtual" + DBGFLAGS "-g -O2" + LANGFLAGS "-ffunction-sections -fdata-sections" + CXXLANGFLAGS "-fno-rtti -fno-exceptions -fvtable-gc -finit-priority" + LDLANGFLAGS "-Wl,--gc-sections -Wl,-static" + } + } platform aeb { alias { "ARM Eval Board (AEB)" } startup { ram rom stubs }