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

📄 sim.h

📁 RTEMS (Real-Time Executive for Multiprocessor Systems) is a free open source real-time operating sys
💻 H
字号:
/* *------------------------------------------------------------------- * *   SIM -- System Integration Module * * The system integration module (SIM) is used on many Motorola 16- * and 32-bit MCUs for the following functions: * *  () System configuration and protection. Bus and software watchdog *  monitors are provided in addition to periodic interrupt generators. * *  () Clock signal generation for other intermodule bus (IMB) members *  and external devices. * *  () The generation of chip-select signals that simplify external  *  circuitry interface. * *  () Data ports that are available for general purpose input and *  output. * *  () A system test block that is intended only for factory tests. * * For more information, refer to Motorola's "Modular Microcontroller * Family System Integration Module Reference Manual" (Motorola document * SIMRM/AD).  * * This file has been created by John S. Gwynne for support of  * Motorola's 68332 MCU in the efi332 project. *  * Redistribution and use in source and binary forms are permitted * provided that the following conditions are met: * 1. Redistribution of source code and documentation must retain *    the above authorship, this list of conditions and the *    following disclaimer. * 2. The name of the author may not be used to endorse or promote *    products derived from this software without specific prior *    written permission. * * This software is provided "AS IS" without warranty of any kind, * either expressed or implied, including, but not limited to, the * implied warranties of merchantability, title and fitness for a * particular purpose. * *------------------------------------------------------------------ * *  $Id: sim.h,v 1.9 2000/10/12 12:50:43 joel Exp $ */#ifndef _SIM_H_#define _SIM_H_/* SAM-- shift and mask */#undef  SAM#define SAM(a,b,c) ((a << b) & c)/* *  These macros make this file usable from assembly. */#ifdef ASM#define SIM_VOLATILE_USHORT_POINTER#define SIM_VOLATILE_UCHAR_POINTER#else#define SIM_VOLATILE_USHORT_POINTER (volatile unsigned short int * const)#define SIM_VOLATILE_UCHAR_POINTER  (volatile unsigned char * const)#endif/* SIM_CRB (SIM Control Register Block) base address of the SIM   control registers */#ifndef SIM_CRB#if SIM_MM == 0#define SIM_CRB 0x7ffa00#else /* SIM_MM */#undef SIM_MM#define SIM_MM 1#define SIM_CRB 0xfffa00#endif /* SIM_MM */#endif /* SIM_CRB */#define SIMCR SIM_VOLATILE_USHORT_POINTER(0x00 + SIM_CRB)				/* Module Configuration Register */#define    EXOFF 0x8000		/*    External Clock Off */#define    FRZSW 0x4000		/*    Freeze Software Enable */#define    FRZBM 0x2000		/*    Freeze Bus Monitor Enable */#define    SLVEN 0x0800		/*    Factory Test Model Enabled (ro)*/#define    SHEN  0x0300		/*    Show Cycle Enable */#define    SUPV  0x0080		/*    Supervisor/Unrestricted Data Space */#define    MM    0x0040 	/*    Module Mapping */#define    IARB  0x000f		/*    Interrupt Arbitration Field */#define SIMTR SIM_VOLATILE_USHORT_POINTER(0x02 + SIM_CRB)				/* SIM Test Register *//* Used only for factor testing */#define SYNCR SIM_VOLATILE_USHORT_POINTER(0x04 + SIM_CRB)				/* Clock Synthesizer Control Register */#define    VCO      0x8000	/*    Frequency Control (VCO) */#define    PRESCALE 0x4000	/*    Frequency Control Bit (Prescale) */#define    COUNTER  0x3f00	/*    Frequency Control Counter */#define    EDIV     0x0080	/*    ECLK Divide Rate */#define    SLIMP    0x0010	/*    Limp Mode Status */#define	   SLOCK    0x0008	/*    Synthesizer Lock */#define    RSTEN    0x0004	/*    Reset Enable */#define    STSIM    0x0002	/*    Stop Mode SIM Clock */#define    STEXT    0x0001	/*    Stop Mode External Clock */#define RSR SIM_VOLATILE_UCHAR_POINTER(0x07 + SIM_CRB)				/* Reset Status Register */#define    EXT   0x0080		/*    External Reset */#define    POW   0x0040		/*    Power-On Reset */#define    SW    0x0020		/*    Software Watchdog Reset */#define    DBF   0x0010		/*    Double Bus Fault Reset */#define    LOC   0x0004		/*    Loss of Clock Reset */#define    SYS   0x0002		/*    System Reset */#define    TST   0x0001		/*    Test Submodule Reset */#define SIMTRE SIM_VOLATILE_USHORT_POINTER(0x08 + SIM_CRB)				/* System Integration Test Register *//* Used only for factor testing */#define PORTE0 SIM_VOLATILE_UCHAR_POINTER(0x11 + SIM_CRB)#define PORTE1 SIM_VOLATILE_UCHAR_POINTER(0x13 + SIM_CRB)				/* Port E Data Register */#define DDRE SIM_VOLATILE_UCHAR_POINTER(0x15 + SIM_CRB)				/* Port E Data Direction Register */#define PEPAR SIM_VOLATILE_UCHAR_POINTER(0x17 + SIM_CRB)				/* Port E Pin Assignment Register *//* Any bit cleared (zero) defines the corresponding pin to be an I/O   pin. Any bit set defines the corresponding pin to be a bus control   signal. */#define PORTF0 SIM_VOLATILE_UCHAR_POINTER(0x19 + SIM_CRB)#define PORTF1 SIM_VOLATILE_UCHAR_POINTER(0x1b + SIM_CRB)				/* Port F Data Register */#define DDRF SIM_VOLATILE_UCHAR_POINTER(0x1d + SIM_CRB)				/* Port E Data Direction Register */#define PFPAR SIM_VOLATILE_UCHAR_POINTER(0x1f + SIM_CRB)/* Any bit cleared (zero) defines the corresponding pin to be an I/O   pin. Any bit set defines the corresponding pin to be a bus control   signal. */#define SYPCR SIM_VOLATILE_UCHAR_POINTER(0x21 + SIM_CRB)/* !!! can write to only once after reset !!! */				/* System Protection Control Register */#define    SWE   0x80		/*    Software Watch Enable */#define    SWP   0x40		/*    Software Watchdog Prescale */#define    SWT   0x30		/*    Software Watchdog Timing */#define    HME   0x08		/*    Halt Monitor Enable */#define    BME   0x04		/*    Bus Monitor External Enable */#define    BMT   0x03		/*    Bus Monitor Timing */#define PICR SIM_VOLATILE_USHORT_POINTER(0x22 + SIM_CRB)				/* Periodic Interrupt Control Reg. */#define    PIRQL 0x0700		/*    Periodic Interrupt Request Level */#define    PIV   0x00ff		/*    Periodic Interrupt Level */#define PITR SIM_VOLATILE_USHORT_POINTER(0x24 + SIM_CRB)				/* Periodic Interrupt Timer Register */#define    PTP   0x0100		/*    Periodic Timer Prescaler Control */#define    PITM  0x00ff		/*    Periodic Interrupt Timing Modulus */#define SWSR SIM_VOLATILE_UCHAR_POINTER(0x27 + SIM_CRB)				/* Software Service Register *//* write 0x55 then 0xaa to service the software watchdog */#define TSTMSRA SIM_VOLATILE_USHORT_POINTER(0x30 + SIM_CRB)				/* Test Module Master Shift A */#define TSTMSRB SIM_VOLATILE_USHORT_POINTER(0x32 + SIM_CRB)				/* Test Module Master Shift A */#define TSTSC SIM_VOLATILE_USHORT_POINTER(0x34 + SIM_CRB)				/* Test Module Shift Count */#define TSTRC SIM_VOLATILE_USHORT_POINTER(0x36 + SIM_CRB)				/* Test Module Repetition Counter */#define CREG SIM_VOLATILE_USHORT_POINTER(0x38 + SIM_CRB)				/* Test Module Control */#define DREG SIM_VOLATILE_USHORT_POINTER(0x3a + SIM_CRB)				/* Test Module Distributed *//* Used only for factor testing */#define PORTC SIM_VOLATILE_UCHAR_POINTER(0x41 + SIM_CRB)				/* Port C Data */#define CSPAR0 SIM_VOLATILE_USHORT_POINTER(0x44 + SIM_CRB)				/* Chip Select Pin Assignment				   Resgister 0 *//* CSPAR0 contains seven two-bit fields that determine the functions   of corresponding chip-select pins. CSPAR0[15:14] are not   used. These bits always read zero; write have no effect. CSPAR0 bit   1 always reads one; writes to CSPAR0 bit 1 have no effect. */#define CSPAR1 SIM_VOLATILE_USHORT_POINTER(0x46 + SIM_CRB)				/* Chip Select Pin Assignment 				   Register 1 *//* CSPAR1 contains five two-bit fields that determine the finctions of   corresponding chip-select pins. CSPAR1[15:10] are not used. These   bits always read zero; writes have no effect. *//* * *                      Bit Field  |  Description *                     ------------+--------------- *                         00      | Discrete Output *                         01      | Alternate Function *                         10      | Chip Select (8-bit port) *                         11      | Chip Select (16-bit port) */#define DisOut 0x0#define AltFun 0x1#define CS8bit 0x2#define CS16bit 0x3/* * * CSPARx Field    |Chip Select Signal  |  Alternate Signal  |  Discrete Output *-----------------+--------------------+--------------------+---------------*/#define CS_5    12 /*     !CS5          |         FC2        |       PC2     */#define CS_4    10 /*     !CS4          |         FC1        |       PC1     */#define CS_3     8 /*     !CS3          |         FC0        |       PC0     */#define CS_2     6 /*     !CS2          |       !BGACK       |               */#define CS_1     4 /*     !CS1          |         !BG        |               */#define CS_0     2 /*     !CS0          |         !BR        |               */#define CSBOOT   0 /*     !CSBOOT       |                    |               *//*                 |                    |                    |               */#define CS_10    8 /*     !CS10         |       ADDR23       |      ECLK     */#define CS_9     6 /*     !CS9          |       ADDR22       |       PC6     */#define CS_8     4 /*     !CS8          |       ADDR21       |       PC5     */#define CS_7     2 /*     !CS7          |       ADDR20       |       PC4     */#define CS_6     0 /*     !CS6          |       ADDR19       |       PC3     */#define BS_2K 0x0#define BS_8K 0x1#define BS_16K 0x2#define BS_64K 0x3#define BS_128K 0x4#define BS_256K 0x5#define BS_512K 0x6#define BS_1M 0x7#define CSBARBT SIM_VOLATILE_USHORT_POINTER(0x48 + SIM_CRB)#define CSBAR0 SIM_VOLATILE_USHORT_POINTER(0x4c + SIM_CRB)#define CSBAR1 SIM_VOLATILE_USHORT_POINTER(0x50 + SIM_CRB)#define CSBAR2 SIM_VOLATILE_USHORT_POINTER(0x54 + SIM_CRB)#define CSBAR3 SIM_VOLATILE_USHORT_POINTER(0x58 + SIM_CRB)#define CSBAR4 SIM_VOLATILE_USHORT_POINTER(0x5c + SIM_CRB)#define CSBAR5 SIM_VOLATILE_USHORT_POINTER(0x60 + SIM_CRB)#define CSBAR6 SIM_VOLATILE_USHORT_POINTER(0x64 + SIM_CRB)#define CSBAR7 SIM_VOLATILE_USHORT_POINTER(0x68 + SIM_CRB)#define CSBAR8 SIM_VOLATILE_USHORT_POINTER(0x6c + SIM_CRB)#define CSBAR9 SIM_VOLATILE_USHORT_POINTER(0x70 + SIM_CRB)#define CSBAR10 SIM_VOLATILE_USHORT_POINTER(0x74 + SIM_CRB)#define MODE 0x8000#define Disable 0#define LowerByte 0x2000#define UpperByte 0x4000#define BothBytes 0x6000#define ReadOnly 0x0800#define WriteOnly 0x1000#define ReadWrite 0x1800#define SyncAS 0x0#define SyncDS 0x0400#define WaitStates_0 (0x0 << 6)#define WaitStates_1 (0x1 << 6)#define WaitStates_2 (0x2 << 6)#define WaitStates_3 (0x3 << 6)#define WaitStates_4 (0x4 << 6)#define WaitStates_5 (0x5 << 6)#define WaitStates_6 (0x6 << 6)#define WaitStates_7 (0x7 << 6)#define WaitStates_8 (0x8 << 6)#define WaitStates_9 (0x9 << 6)#define WaitStates_10 (0xa << 6)#define WaitStates_11 (0xb << 6)#define WaitStates_12 (0xc << 6)#define WaitStates_13 (0xd << 6)#define FastTerm (0xe << 6)#define External (0xf << 6)#define CPUSpace (0x0 << 4)#define UserSpace (0x1 << 4)#define SupSpace (0x2 << 4)#define UserSupSpace (0x3 << 4)#define IPLevel_any 0x0#define IPLevel_1 0x2#define IPLevel_2 0x4#define IPLevel_3 0x6#define IPLevel_4 0x8#define IPLevel_5 0xa#define IPLevel_6 0xc#define IPLevel_7 0xe#define AVEC 1#define CSORBT SIM_VOLATILE_USHORT_POINTER(0x4a + SIM_CRB)#define CSOR0 SIM_VOLATILE_USHORT_POINTER(0x4e + SIM_CRB)#define CSOR1 SIM_VOLATILE_USHORT_POINTER(0x52 + SIM_CRB)#define CSOR2 SIM_VOLATILE_USHORT_POINTER(0x56 + SIM_CRB)#define CSOR3 SIM_VOLATILE_USHORT_POINTER(0x5a + SIM_CRB)#define CSOR4 SIM_VOLATILE_USHORT_POINTER(0x5e + SIM_CRB)#define CSOR5 SIM_VOLATILE_USHORT_POINTER(0x62 + SIM_CRB)#define CSOR6 SIM_VOLATILE_USHORT_POINTER(0x66 + SIM_CRB)#define CSOR7 SIM_VOLATILE_USHORT_POINTER(0x6a + SIM_CRB)#define CSOR8 SIM_VOLATILE_USHORT_POINTER(0x6e + SIM_CRB)#define CSOR9 SIM_VOLATILE_USHORT_POINTER(0x72 + SIM_CRB)#define CSOR10 SIM_VOLATILE_USHORT_POINTER(0x76 + SIM_CRB)#endif /* _SIM_h_ */

⌨️ 快捷键说明

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