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

📄 system.h.bak

📁 An complete pmp solution for mattel juicebox player. Using crossworks for arm.
💻 BAK
字号:
// Function prototypes for core system functions in system.c
#ifndef __SYSTEM_H
#define __SYSTEM_H


#include "stdint.h"
#include "malloc.h"
#include "s3c44b0x.h"
#include "font.h"
#include "ff.h"
#include "bitmap.h"

#define aHandlerSWI swi_handler_address
  
#define aHandlerIRQ irq_handler_address
  
#define aHandlerFIQ fiq_handler_address
  

extern void *HandlerUndef; //; 0x04
extern void *aHandlerSWI; //; 0x08
extern void *HandlerPabort; //; 0x0c
extern void *HandlerDabort; //; 0x10
extern void *aHandlerIRQ; //; 0x18
extern void *aHandlerFIQ; //; 0x1c
extern void *HandlerEINT0; //; 0x20
extern void *HandlerEINT1;
extern void *HandlerEINT2;
extern void *HandlerEINT3;
extern void *HandlerEINT4567;
extern void *HandlerTICK; //; 0x34
extern void *HandlerZDMA0; //; 0x40
extern void *HandlerZDMA1;
extern void *HandlerBDMA0;
extern void *HandlerBDMA1;
extern void *HandlerWDT;
extern void *HandlerUERR01; //; 0x54
extern void *HandlerTIMER0; //; 0x60
extern void *HandlerTIMER1;
extern void *HandlerTIMER2;
extern void *HandlerTIMER3;
extern void *HandlerTIMER4;
extern void *HandlerTIMER5; //; 0x74
extern void *HandlerURXD0; //; 0x80
extern void *HandlerURXD1;
extern void *HandlerIIC;
extern void *HandlerSIO;
extern void *HandlerUTXD0;
extern void *HandlerUTXD1; //; 0x94
extern void *HandlerRTC; //; 0xa0
extern void *HandlerADC; //; 0xb4


/*===========================================================*/
/*-----                     System                      -----*/
void wCPUInit();
void wDelayMs(u32 delay);
void wDelayCycles(u32 delay);

/*===========================================================*/
/*-----                   Interrupts                    -----*/

//Interrupts
#define portIntADC       0
#define portIntRTC       1
#define portIntUTXD1     2
#define portIntUTXD0     3
#define portIntSIO       4
#define portIntIIC       5
#define portIntURXD1     6
#define portIntURXD0     7
#define portIntTIMER5    8
#define portIntTIMER4    9
#define portIntTIMER3    10
#define portIntTIMER2    11
#define portIntTIMER1    12
#define portIntTIMER0    13
#define portIntUERR01    14
#define portIntWDT       15
#define portIntBDMA1     16
#define portIntBDMA0     17
#define portIntZDMA1     18
#define portIntZDMA0     19
#define portIntTICK      20
#define portIntEINT4567  21
#define portIntEINT3     22
#define portIntEINT2     23
#define portIntEINT1     24
#define portIntEINT0     25

#define portIntSWI       26
#define portIntIRQ		 27
#define portIntFIQ		 28
//--------------------
/* Initializes interrupt controller*/
void wInterruptInit();      
/* Initializes interrupt handler */
void wInterruptHandlerInit (u32 uxInterrupt, void *vFunction);

/* Enables specified interrupt*/
#define dwInterruptEnable(uxInterrupt)                    \
{                                                         \
  *intmsk &= ~(1<<uxInterrupt);                           \
}

/* Disables specified interrupt*/
#define dwInterruptDisable (uxInterrupt)                  \
{                                                         \
  *intmsk &= (1<<uxInterrupt);                            \
}

/* Clears interrupt flag */
#define dwInterruptClear(uxInterrupt)                     \
{                                                         \
  *i_ispc &= ~(1<<uxInterrupt);                           \
}

/*===========================================================*/
/*-----                  Timers                         -----*/

typedef i32 xTPortHardware;
#define portNoHW   (-1)
#define portTimer0  0
#define portTimer1  1
#define portTimer2  2
#define portTimer3  3
#define portTimer4  4
#define portTimer5  5

void wTimersInit (u32 ulPrescaler01, u32 ulPrescaler23, u32 ulPrescaler45, u32 ulDeadzone);
void wTimerConf (xTPortHardware xTimer, u32 ulSource, u32 ulCount, u32 ulCompare);
void wTimerRun (xTPortHardware xTimer, u32 uxSettings);
void wTimerStop (xTPortHardware xTimer);

/*===========================================================*/
/*-----                      DMA                        -----*/

#define portZDMA0   0
#define portZDMA1   1
#define portBDMA0   2
#define portBDMA1   3


typedef i32 xTDMAStatus;
#define portDMAStatusUnknown (-1)
#define portDMAStatusReady    0
#define portDMAStatusTransfer 1
#define portDMAStatusEnded    2

xTPortHardware wZDMARun (void *pvSrc, void *pvDest, u32 uxSettings, void *pvInterrupt);
xTDMAStatus wDMAInspect (xTPortHardware xDMA, u32 *uCurrSrc, u32 *uCurrDest, u32 *uCurrCnt);
xTPortHardware wBDMA0Run (void *pvSrc, void *pvDest, u32 uxSettings, void *pvInterrupt);
xTPortHardware wBDMA1Run (void *pvSrc, void *pvDest, u32 uxSettings, void *pvInterrupt);
void wDMAStop (xTPortHardware xDMA);

/*===========================================================*/
/*-----             Inter-IC Sound (IIS)                -----*/
void wIISInit();
i32 wIISDMATransferInit (u32 *pvBufferAddress, u32 ulBufferSize, u32 uxSettings);
u32 wIISBufferStatusInspect();
void wIISDMATransferStop ();

/*===========================================================*/
/*-----                Inter-IC Connect (IIC)           -----*/

void wIICInit(u32 uxSettings, void *pvInterrupt);
void wIICWrite (u08 usAddress, u08 usData);
void wIICRead (u08 usAddress, u08 *usData);

/*===========================================================*/
/*-----                 LCD Controller                  -----*/

/* Returns pointer to framebuffer start */
void *wFramebufferStart();
/* Initializes LCD controller */
void wLCDInit();
/* Sets framebuffer start */
void wSetFramebufferStart(u32 *addr);
void wLCDBitmapInit(xTBitmap *pxBitmap);
void wFontInit(xTFont *pxFont);

/*===========================================================*/
/*-----                    MACROS                       -----*/
#ifndef sbi
#define sbi(x,y)	x|=(1 << (y))
#endif

#ifndef cbi 
#define cbi(x,y)	x&=~(1 << (y))
#endif

#ifndef tstb
#define tstb(x,y)	(x & (1 << (y)) ? 1 : 0)
#endif

#ifndef toggle 
#define toggle(x,y)	x^=(1 << (y))
#endif

#ifndef BIT
#define BIT(x)	(1 << (x))
#endif



#define dwConfigReg(vReg, ulValue, ulPos, ulLength)                          \
{                                                                            \
   *(vReg) &= ~( (0xFFFFFFFF >> (32-ulLength)) << ulPos);                    \
   *(vReg) |= (ulValue << ulPos)&( (0xFFFFFFFF >> (32-ulLength)) << ulPos);  \
}


#endif

⌨️ 快捷键说明

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