⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 erc32.h

📁 RTEMS (Real-Time Executive for Multiprocessor Systems) is a free open source real-time operating sys
💻 H
📖 第 1 页 / 共 2 页
字号:
/*  erc32.h * *  This include file contains information pertaining to the ERC32. *  The ERC32 is a custom SPARC V7 implementation based on the Cypress *  601/602 chipset.  This CPU has a number of on-board peripherals and *  was developed by the European Space Agency to target space applications. * *  NOTE:  Other than where absolutely required, this version currently  *         supports only the peripherals and bits used by the basic board  *         support package. This includes at least significant pieces of  *         the following items: * *           + UART Channels A and B *           + General Purpose Timer *           + Real Time Clock *           + Watchdog Timer (so it can be disabled) *           + Control Register (so powerdown mode can be enabled) *           + Memory Control Register *           + Interrupt Control * *  COPYRIGHT (c) 1989-1999. *  On-Line Applications Research Corporation (OAR). * *  The license and distribution terms for this file may be *  found in the file LICENSE in this distribution or at *  http://www.rtems.com/license/LICENSE. * *  Ported to ERC32 implementation of the SPARC by On-Line Applications *  Research Corporation (OAR) under contract to the European Space  *  Agency (ESA). * *  ERC32 modifications of respective RTEMS file: COPYRIGHT (c) 1995.  *  European Space Agency. * *  $Id: erc32.h,v 1.2.4.1 2003/09/04 18:45:36 joel Exp $ */ #ifndef _INCLUDE_ERC32_h#define _INCLUDE_ERC32_h#include <rtems/score/sparc.h> #ifdef __cplusplusextern "C" {#endif/* *  Interrupt Sources * *  The interrupt source numbers directly map to the trap type and to  *  the bits used in the Interrupt Clear, Interrupt Force, Interrupt Mask, *  and the Interrupt Pending Registers. */#define ERC32_INTERRUPT_MASKED_ERRORS             1#define ERC32_INTERRUPT_EXTERNAL_1                2#define ERC32_INTERRUPT_EXTERNAL_2                3#define ERC32_INTERRUPT_UART_A_RX_TX              4#define ERC32_INTERRUPT_UART_B_RX_TX              5#define ERC32_INTERRUPT_CORRECTABLE_MEMORY_ERROR  6#define ERC32_INTERRUPT_UART_ERROR                7#define ERC32_INTERRUPT_DMA_ACCESS_ERROR          8#define ERC32_INTERRUPT_DMA_TIMEOUT               9#define ERC32_INTERRUPT_EXTERNAL_3               10#define ERC32_INTERRUPT_EXTERNAL_4               11#define ERC32_INTERRUPT_GENERAL_PURPOSE_TIMER    12#define ERC32_INTERRUPT_REAL_TIME_CLOCK          13#define ERC32_INTERRUPT_EXTERNAL_5               14#define ERC32_INTERRUPT_WATCHDOG_TIMEOUT         15#ifndef ASM/* *  Trap Types for on-chip peripherals * *  Source: Table 8 - Interrupt Trap Type and Default Priority Assignments * *  NOTE: The priority level for each source corresponds to the least  *        significant nibble of the trap type. */#define ERC32_TRAP_TYPE( _source ) SPARC_ASYNCHRONOUS_TRAP((_source) + 0x10)#define ERC32_TRAP_SOURCE( _trap ) ((_trap) - 0x10)#define ERC32_Is_MEC_Trap( _trap ) \  ( (_trap) >= ERC32_TRAP_TYPE( ERC32_INTERRUPT_MASKED_ERRORS ) && \    (_trap) <= ERC32_TRAP_TYPE( ERC32_INTERRUPT_WATCHDOG_TIMEOUT ) )/* *  Structure for ERC32 memory mapped registers.   * *  Source: Section 3.25.2 - Register Address Map * *  NOTE:  There is only one of these structures per CPU, its base address  *         is 0x01f80000, and the variable MEC is placed there by the  *         linkcmds file. */typedef struct {  volatile unsigned32  Control;                              /* offset 0x00 */  volatile unsigned32  Software_Reset;                       /* offset 0x04 */  volatile unsigned32  Power_Down;                           /* offset 0x08 */  volatile unsigned32  Unimplemented_0;                      /* offset 0x0c */  volatile unsigned32  Memory_Configuration;                 /* offset 0x10 */  volatile unsigned32  IO_Configuration;                     /* offset 0x14 */  volatile unsigned32  Wait_State_Configuration;             /* offset 0x18 */  volatile unsigned32  Unimplemented_1;                      /* offset 0x1c */  volatile unsigned32  Memory_Access_0;                      /* offset 0x20 */  volatile unsigned32  Memory_Access_1;                      /* offset 0x24 */  volatile unsigned32  Unimplemented_2[ 7 ];                 /* offset 0x28 */  volatile unsigned32  Interrupt_Shape;                      /* offset 0x44 */  volatile unsigned32  Interrupt_Pending;                    /* offset 0x48 */  volatile unsigned32  Interrupt_Mask;                       /* offset 0x4c */  volatile unsigned32  Interrupt_Clear;                      /* offset 0x50 */  volatile unsigned32  Interrupt_Force;                      /* offset 0x54 */  volatile unsigned32  Unimplemented_3[ 2 ];                 /* offset 0x58 */                                                             /* offset 0x60 */  volatile unsigned32  Watchdog_Program_and_Timeout_Acknowledge;   volatile unsigned32  Watchdog_Trap_Door_Set;               /* offset 0x64 */  volatile unsigned32  Unimplemented_4[ 6 ];                 /* offset 0x68 */  volatile unsigned32  Real_Time_Clock_Counter;              /* offset 0x80 */  volatile unsigned32  Real_Time_Clock_Scalar;               /* offset 0x84 */  volatile unsigned32  General_Purpose_Timer_Counter;        /* offset 0x88 */  volatile unsigned32  General_Purpose_Timer_Scalar;         /* offset 0x8c */  volatile unsigned32  Unimplemented_5[ 2 ];                 /* offset 0x90 */  volatile unsigned32  Timer_Control;                        /* offset 0x98 */  volatile unsigned32  Unimplemented_6;                      /* offset 0x9c */  volatile unsigned32  System_Fault_Status;                  /* offset 0xa0 */  volatile unsigned32  First_Failing_Address;                /* offset 0xa4 */  volatile unsigned32  First_Failing_Data;                   /* offset 0xa8 */  volatile unsigned32  First_Failing_Syndrome_and_Check_Bits;/* offset 0xac */  volatile unsigned32  Error_and_Reset_Status;               /* offset 0xb0 */  volatile unsigned32  Error_Mask;                           /* offset 0xb4 */  volatile unsigned32  Unimplemented_7[ 2 ];                 /* offset 0xb8 */  volatile unsigned32  Debug_Control;                        /* offset 0xc0 */  volatile unsigned32  Breakpoint;                           /* offset 0xc4 */  volatile unsigned32  Watchpoint;                           /* offset 0xc8 */  volatile unsigned32  Unimplemented_8;                      /* offset 0xcc */  volatile unsigned32  Test_Control;                         /* offset 0xd0 */  volatile unsigned32  Test_Data;                            /* offset 0xd4 */  volatile unsigned32  Unimplemented_9[ 2 ];                 /* offset 0xd8 */  volatile unsigned32  UART_Channel_A;                       /* offset 0xe0 */  volatile unsigned32  UART_Channel_B;                       /* offset 0xe4 */  volatile unsigned32  UART_Status;                          /* offset 0xe8 */} ERC32_Register_Map;#endif/* *  The following constants are intended to be used ONLY in assembly *  language files. * *  NOTE:  The intended style of usage is to load the address of MEC *         into a register and then use these as displacements from *         that register. */#ifdef ASM#define  ERC32_MEC_CONTROL_OFFSET                                  0x00#define  ERC32_MEC_SOFTWARE_RESET_OFFSET                           0x04#define  ERC32_MEC_POWER_DOWN_OFFSET                               0x08#define  ERC32_MEC_UNIMPLEMENTED_0_OFFSET                          0x0C#define  ERC32_MEC_MEMORY_CONFIGURATION_OFFSET                     0x10#define  ERC32_MEC_IO_CONFIGURATION_OFFSET                         0x14#define  ERC32_MEC_WAIT_STATE_CONFIGURATION_OFFSET                 0x18#define  ERC32_MEC_UNIMPLEMENTED_1_OFFSET                          0x1C#define  ERC32_MEC_MEMORY_ACCESS_0_OFFSET                          0x20#define  ERC32_MEC_MEMORY_ACCESS_1_OFFSET                          0x24#define  ERC32_MEC_UNIMPLEMENTED_2_OFFSET                          0x28#define  ERC32_MEC_INTERRUPT_SHAPE_OFFSET                          0x44#define  ERC32_MEC_INTERRUPT_PENDING_OFFSET                        0x48#define  ERC32_MEC_INTERRUPT_MASK_OFFSET                           0x4C#define  ERC32_MEC_INTERRUPT_CLEAR_OFFSET                          0x50#define  ERC32_MEC_INTERRUPT_FORCE_OFFSET                          0x54#define  ERC32_MEC_UNIMPLEMENTED_3_OFFSET                          0x58#define  ERC32_MEC_WATCHDOG_PROGRAM_AND_TIMEOUT_ACKNOWLEDGE_OFFSET 0x60#define  ERC32_MEC_WATCHDOG_TRAP_DOOR_SET_OFFSET                   0x64#define  ERC32_MEC_UNIMPLEMENTED_4_OFFSET                          0x6C#define  ERC32_MEC_REAL_TIME_CLOCK_COUNTER_OFFSET                  0x80#define  ERC32_MEC_REAL_TIME_CLOCK_SCALAR_OFFSET                   0x84#define  ERC32_MEC_GENERAL_PURPOSE_TIMER_COUNTER_OFFSET            0x88#define  ERC32_MEC_GENERAL_PURPOSE_TIMER_SCALAR_OFFSET             0x8C#define  ERC32_MEC_UNIMPLEMENTED_5_OFFSET                          0x90#define  ERC32_MEC_TIMER_CONTROL_OFFSET                            0x98#define  ERC32_MEC_UNIMPLEMENTED_6_OFFSET                          0x9C#define  ERC32_MEC_SYSTEM_FAULT_STATUS_OFFSET                      0xA0#define  ERC32_MEC_FIRST_FAILING_ADDRESS_OFFSET                    0xA4#define  ERC32_MEC_FIRST_FAILING_DATA_OFFSET                       0xA8#define  ERC32_MEC_FIRST_FAILING_SYNDROME_AND_CHECK_BITS_OFFSET    0xAC#define  ERC32_MEC_ERROR_AND_RESET_STATUS_OFFSET                   0xB0#define  ERC32_MEC_ERROR_MASK_OFFSET                               0xB4#define  ERC32_MEC_UNIMPLEMENTED_7_OFFSET                          0xB8#define  ERC32_MEC_DEBUG_CONTROL_OFFSET                            0xC0#define  ERC32_MEC_BREAKPOINT_OFFSET                               0xC4#define  ERC32_MEC_WATCHPOINT_OFFSET                               0xC8#define  ERC32_MEC_UNIMPLEMENTED_8_OFFSET                          0xCC#define  ERC32_MEC_TEST_CONTROL_OFFSET                             0xD0#define  ERC32_MEC_TEST_DATA_OFFSET                                0xD4#define  ERC32_MEC_UNIMPLEMENTED_9_OFFSET                          0xD8#define  ERC32_MEC_UART_CHANNEL_A_OFFSET                           0xE0#define  ERC32_MEC_UART_CHANNEL_B_OFFSET                           0xE4#define  ERC32_MEC_UART_STATUS_OFFSET                              0xE8#endif/* *  The following defines the bits in the Configuration Register. */#define ERC32_CONFIGURATION_POWER_DOWN_MASK               0x00000001#define ERC32_CONFIGURATION_POWER_DOWN_ALLOWED            0x00000001#define ERC32_CONFIGURATION_POWER_DOWN_DISABLED           0x00000000#define ERC32_CONFIGURATION_SOFTWARE_RESET_MASK           0x00000002#define ERC32_CONFIGURATION_SOFTWARE_RESET_ALLOWED        0x00000002#define ERC32_CONFIGURATION_SOFTWARE_RESET_DISABLED       0x00000000#define ERC32_CONFIGURATION_BUS_TIMEOUT_MASK              0x00000004#define ERC32_CONFIGURATION_BUS_TIMEOUT_ENABLED           0x00000004#define ERC32_CONFIGURATION_BUS_TIMEOUT_DISABLED          0x00000000#define ERC32_CONFIGURATION_ACCESS_PROTECTION_MASK        0x00000008#define ERC32_CONFIGURATION_ACCESS_PROTECTION_ENABLED     0x00000008#define ERC32_CONFIGURATION_ACCESS_PROTECTION_DISABLED    0x00000000/* *  The following defines the bits in the Memory Configuration Register. */#define ERC32_MEMORY_CONFIGURATION_RAM_SIZE_MASK  0x00001C00#define ERC32_MEMORY_CONFIGURATION_RAM_SIZE_256K  ( 0 << 10 )#define ERC32_MEMORY_CONFIGURATION_RAM_SIZE_512K  ( 1 << 10 )#define ERC32_MEMORY_CONFIGURATION_RAM_SIZE_1MB   ( 2 << 10 )#define ERC32_MEMORY_CONFIGURATION_RAM_SIZE_2MB   ( 3 << 10 )#define ERC32_MEMORY_CONFIGURATION_RAM_SIZE_4MB   ( 4 << 10 )#define ERC32_MEMORY_CONFIGURATION_RAM_SIZE_8MB   ( 5 << 10 )#define ERC32_MEMORY_CONFIGURATION_RAM_SIZE_16MB  ( 6 << 10 )#define ERC32_MEMORY_CONFIGURATION_RAM_SIZE_32MB  ( 7 << 10 )#define ERC32_MEMORY_CONFIGURATION_PROM_SIZE_MASK  0x001C0000#define ERC32_MEMORY_CONFIGURATION_PROM_SIZE_128K    ( 0 << 18 )#define ERC32_MEMORY_CONFIGURATION_PROM_SIZE_256K    ( 1 << 18 )#define ERC32_MEMORY_CONFIGURATION_PROM_SIZE_512K   ( 2 << 18 )#define ERC32_MEMORY_CONFIGURATION_PROM_SIZE_1M   ( 3 << 18 )#define ERC32_MEMORY_CONFIGURATION_PROM_SIZE_2M   ( 4 << 18 )#define ERC32_MEMORY_CONFIGURATION_PROM_SIZE_4M  ( 5 << 18 )#define ERC32_MEMORY_CONFIGURATION_PROM_SIZE_8M  ( 6 << 18 )#define ERC32_MEMORY_CONFIGURATION_PROM_SIZE_16M  ( 7 << 18 ) /* *  The following defines the bits in the Timer Control Register. */#define ERC32_MEC_TIMER_CONTROL_GCR    0x00000001  /* 1 = reload at 0 */                                               /* 0 = stop at 0 */#define ERC32_MEC_TIMER_CONTROL_GCL    0x00000002  /* 1 = load and start */                                               /* 0 = no function */#define ERC32_MEC_TIMER_CONTROL_GSE    0x00000004  /* 1 = enable counting */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -