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

📄 pcmrtk.h

📁 Utils and test SD card read write cycles
💻 H
字号:
/*--------------------------------------------------------------------------*/
/* Project:        PCMCIA Header File, interface for traps                  */
/* File:           PCMRTK.H                                                 */
/* Edited by:      hyperstone electronics GmbH                              */
/*                 Am Seerhein 8                                            */
/*                 D-78467 Konstanz, Germany                                */
/* Date:           Aug 29, 2003                                             */
/*--------------------------------------------------------------------------*/
// 24.04.01 UpdateBCRTrap is TrapNumber 37
// 29.08.03 For Remap: ReadStatus/RegisterError-Trap
/*--------------------------------------------------------------------------*/

#ifndef  __HYRTK_H
#define  __HYRTK_H    1

/*==========================================================================*/
/* Global Defines                                                           */
/*==========================================================================*/

#ifndef NULL_DEFINED
#define NULL_DEFINED
#define NULL    (void *) 0
#endif

/*==========================================================================*/
/* Task-Levels                                                              */
/*==========================================================================*/

#define StackLevelTask       0
#define InterruptLevelTask   1

/*==========================================================================*/
/* Table of trap entries associated with the kernel commands                */
/*==========================================================================*/

#define WaitGuardTrap            "trap  47 ;WaitGuard"
#define WaitGuardMaxTrap         "trap  46 ;WaitGuardMax"
#define FlashIdle1Trap           "trap  45 ;FlashIdle1"
#define DelayByTrap              "trap  44 ;DelayBy"
#define UpdateFCRTrap            "trap  42 ;UpdateFCR"
#define UpdateMCRTrap            "trap  41 ;UpdateMCR"
#define UpdateBCRTrap            "trap  40 ;UpdateBCR"
#define FlashIdleTrap            "trap  38 ;FlashIdle"
#define ReadStatusTrap           "trap  34 ;ReadStatus"
#define RegisterErrorTrap        "trap  20 ;RegisterError"

/*==========================================================================*/
/* type definitions                                                         */
/*==========================================================================*/

typedef struct
  {
    unsigned long GuardState;
  } GuardType, *GuardPointer;

typedef struct
  {
    long TagAndPriority;
    void (*OnInterrupt)();
    void (*OnError)();
    void (*OnDeviceReset)();
  } InterruptLevelTCBType;

/*==========================================================================*/
/* Macro definitions for realtime kernel commands                           */
/*==========================================================================*/

#define ClearGuardReturn(GuardPtr)                 \
({  register long dummy asm("L15");                \
                                                   \
   dummy = (long)GuardPtr;                         \
   asm volatile (ClearGuardReturnTrap              \
		 : /* no outputs */                \
                 : "l" (dummy)                     \
                 : "L15");                         \
})

#define ClearGuard(GuardPtr)                       \
({  register long dummy asm("L15");                \
                                                   \
   dummy = (long)GuardPtr;                         \
   asm volatile (ClearGuardTrap                    \
                 : /* no outputs */                \
		 : "l" (dummy)                     \
                 : "L15");                         \
})

#define DelayBy(TimeUnits)                         \
({  register long dummy asm("L15");                \
                                                   \
   dummy = (long)TimeUnits;                        \
   asm volatile (DelayByTrap                       \
		 : /* no outputs */                \
		 : "l" (dummy)                     \
		 : "L15");                         \
})

#define WaitGuard(GuardPtr)                        \
({  register long dummy asm("L15");                \
						   \
   dummy = (long)GuardPtr;                         \
   asm volatile (WaitGuardTrap                     \
                 : /* no outputs */                \
		 : "l" (dummy)                     \
                 : "L15");                         \
})

#define FlashIdle1(ChipNumber)                     \
({   register long dummy;                          \
						   \
    dummy = 0x804ffff0;                            \
    asm volatile ("stw.r %0, 0"                    \
                 : /* no outputs */                \
                 : "l" (dummy));                   \
})

#define UpdateFCR(SetBits, ClearBits)              \
({    register long dummy0 asm("L14");             \
     register long dummy1 asm("L15");              \
                                                   \
     dummy1 = (long)ClearBits;                     \
     dummy0 = (long)SetBits;                       \
     asm volatile (UpdateFCRTrap                   \
		  : /* no outputs */               \
                  : "l" (dummy0), "l" (dummy1)     \
                  : "L14", "L15");                 \
})

#define DISABLE_IO1()                              \
({    register long dummy;                         \
                                                   \
     FCRShadow |= 7;                               \
     asm volatile ("mov  %0, G11"                  \
                  : "=l" (dummy));                 \
     asm volatile ("ori  SR, 1<<5");               \
     asm volatile ("mov  FCR, %0"                  \
                  : /* no outputs */               \
                  : "l" (dummy));                  \
})

#define UpdateMCR(SetBits, ClearBits)              \
({    register long dummy0 asm("L14");             \
     register long dummy1 asm("L15");              \
						   \
     dummy1 = (long)ClearBits;                     \
     dummy0 = (long)SetBits;                       \
     asm volatile (UpdateMCRTrap                   \
                  : /* no outputs */               \
                  : "l" (dummy0), "l" (dummy1)     \
                  : "L14", "L15");                 \
})

#define UpdateBCR(SetBits, ClearBits)              \
({    register long dummy0 asm("L14");             \
     register long dummy1 asm("L15");              \
						   \
     dummy1 = (long)ClearBits;                     \
     dummy0 = (long)SetBits;                       \
     asm volatile (UpdateBCRTrap                   \
                  : /* no outputs */               \
                  : "l" (dummy0), "l" (dummy1)     \
                  : "L14", "L15");                 \
})

#define FlashIdle(PhysSectorNumber)                \
({   register long dummy asm("L15");               \
						   \
    dummy = (long)(PhysSectorNumber);              \
    asm volatile (FlashIdleTrap                    \
                 : /* no outputs */                \
                 : "l" (dummy)                     \
                 : "L15");                         \
})

#define WaitGuardMax(GuardPtr, TimeOutTime)        \
({    register long dummy0 asm("L14");             \
     register long dummy1 asm("L15");              \
						   \
     dummy0 = (long)GuardPtr;                      \
     dummy1 = (long)TimeOutTime;                   \
     asm volatile (WaitGuardMaxTrap                \
		  : /* no outputs */               \
		  : "l" (dummy0), "l" (dummy1)     \
		  : "L14", "L15");                 \
})

#define ReadStatus(ChipSelect)                     \
({   register long dummy asm("L15");               \
						   \
   dummy = (long)ChipSelect;                       \
   asm volatile (ReadStatusTrap                    \
		 : "=l" (dummy)	                   \
		 : "l" (dummy)                     \
		 : "L15");                         \
   dummy;                                          \
})

#define RegisterError(ChipNumber)                  \
({  register long dummy asm("L15");                \
						   \
   dummy = (long)ChipNumber;                       \
   asm volatile (RegisterErrorTrap                 \
		 : /* no outputs */                \
		 : "l" (dummy)                     \
		 : "L15");                         \
})

#define SetOwnTaskPointer(TaskPointer)
#define GetOwnTaskPointer(TaskPointer)
#define GetTaskWaitFlag(TaskPointer)    (WaitFlag)

/*==========================================================================*/
/* macro definitions for the set/clear m-flag, fetch                        */
/*==========================================================================*/

#define SetMFlag()   asm volatile ("ORI    SR, 16" :  : )
#define ClearMFlag() asm volatile ("ANDNI  SR, 16" :  : )
#define Fetch(NoHW)  asm volatile ("FETCH  %0"     :  : "i" (NoHW))

/*==========================================================================*/
/* macro definition for the GUARD                                           */
/*==========================================================================*/

#define Guard(Name, InitialGuardState)   \
       GuardType Name = {InitialGuardState}

extern void SetRedLed(void);
extern void SetGreenLed(void);
extern void ClearRedLed(void);
extern void ClearGreenLed(void);
extern void ToggleRedLed(void);
extern void ToggleGreenLed(void);
extern volatile unsigned int WaitFlag;

#endif   /* __HYRTK_H */


⌨️ 快捷键说明

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