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

📄 arch.h

📁 56f8300E系列dsp的BOOTloader
💻 H
字号:
#ifndef ARCH_H
#define ARCH_H
/*******************************************************************************
*
* Motorola Inc.
* (c) Copyright 2002 Motorola, Inc.
* ALL RIGHTS RESERVED.
*
* $Element: /project/dsp568_sdk/sdk/src/dsp56838evm/nos/include/arch.h $ 
* $Author: saa $ 
* $Revision: /main/3 $ 
* $VOB: /project/dsp568_sdk $ 
* $OS: solaris $ 
*
* Description:  Interface to DSP archtecture-specific features
*
* Notes:     "arch" offsets are tested with corresponded drivers only     
*
******************************************************************************/


#include "port.h"
#include "bsp.h"



#ifdef __cplusplus
extern "C" {
#endif

/*******************************************************
* Architecture Dependent Declarations
*******************************************************/

typedef volatile struct{
    UWord16 Control1Reg;
    UWord16 Control2Reg;
    UWord16 ZeroCrossControlReg;
    UWord16 ChannelList1Reg;
    UWord16 ChannelList2Reg;
    UWord16 DisableReg;
    UWord16 StatusReg;
    UWord16 LimitStatusReg;
    UWord16 ZeroCrossStatusReg;
    UWord16 ResultReg[8];
    UWord16 LowLimitReg[8];
    UWord16 HighLimitReg[8];
    UWord16 OffsetReg[8];
    UWord16 PowerControl;
    } arch_sADC;

typedef volatile struct{
    UWord16 IdReg0;
    UWord16 IdReg1;
    UWord16 IdReg2;
    UWord16 IdReg3;
    UWord16 DataSegReg[8];
    UWord16 DataLengthReg;

    union{
        UWord16 TxBufferPriorityReg;
        UWord16 Reserved1;
        } U;

    UWord16 Reserved2[2];
    } arch_sMSCANBuffer;

typedef volatile struct{
    UWord16                     Control0Reg;
    UWord16                     Control1Reg;
    UWord16                     BusTiming0Reg;
    UWord16                     BusTiming1Reg;
    UWord16                     RxFlagReg;
    UWord16                     RxIntEnableReg;
    UWord16                     TxFlagReg;
    UWord16                     TxControlReg;
    UWord16                     IdControlReg;
    UWord16                     Reserved1[5];
    UWord16                     RxErrorCountReg;
    UWord16                     TxErrorCountReg;
    UWord16                     IdAcceptReg0;
    UWord16                     IdAcceptReg1;
    UWord16                     IdAcceptReg2;
    UWord16                     IdAcceptReg3;
    UWord16                     IdMaskReg0;
    UWord16                     IdMaskReg1;
    UWord16                     IdMaskReg2;
    UWord16                     IdMaskReg3;
    UWord16                     IdAcceptReg4;
    UWord16                     IdAcceptReg5;
    UWord16                     IdAcceptReg6;
    UWord16                     IdAcceptReg7;
    UWord16                     IdMaskReg4;
    UWord16                     IdMaskReg5;
    UWord16                     IdMaskReg6;
    UWord16                     IdMaskReg7;
    
    UWord16                     Reserved2[32];
    
    arch_sMSCANBuffer           RxBuffer;
    arch_sMSCANBuffer           TxBuffer[3];
    } arch_sMSCAN;

typedef volatile struct{
    UWord16 ControlReg;
    UWord16 TimeoutReg;
    UWord16 ServiceReg;
    UWord16 Reserved[13];
    } arch_sCOP;

typedef volatile struct{
    UWord16 ControlReg;
    UWord16 FilterIntervalReg;
    UWord16 WatchdogTimeoutReg;
    Word16  PositionDifferenceReg; 
    Word16  PositionDifferenceHoldReg;
    Word16  RevolutionCounterReg; 
    Word16  RevolutionHoldReg;  
    Word16  UpperPositionCounterReg;
    UWord16 LowerPositionCounterReg;
    Word16  UpperPositionHoldReg;  
    UWord16 LowerPositionHoldReg;
    Word16  UpperInitializationReg;  
    UWord16 LowerInitializationReg;
    UWord16 InputMonitorReg;
    UWord16 TestReg;
    UWord16 Reserved;
    } arch_sDecoder;

typedef volatile struct{
    UWord16 MatchReg;
    UWord16 VectorAddrLoReg;
    UWord16 VectorAddrHiReg;
    } arch_sFastIntRegs;

typedef volatile struct{
    UWord16 IntPriorityReg[10];
    UWord16 VectorBaseAddrReg;
    arch_sFastIntRegs FastInt0;
    arch_sFastIntRegs FastInt1;
    UWord16 IRQPendingReg[5];
    UWord16 TestIRQSourceReg[5];
    UWord16 ControlReg;
    UWord16 TestControlReg;
    UWord16 Reserved1[67];
    } arch_sIntCntrl;

typedef volatile struct{
    UWord16 ClockDividerReg;
    UWord16 ModuleControlReg;
    UWord16 Reserved1;
    UWord16 SecurityHiReg;
    UWord16 SecurityLoReg;
    UWord16 Reserved2[11];
    UWord16 ProtectionReg;
    UWord16 ProtectionBootReg;
    UWord16 Reserved3;
    UWord16 UserStatusReg;
    UWord16 CommandReg;
    UWord16 Reserved4[235];
    } arch_sFlash;

typedef volatile struct{
    UWord16 CtlStatusReg;
    UWord16 IdRegHi;
    UWord16 IdRegLo;
    UWord16 DataSegReg[4];
    UWord16 TestFileReg;
    } arch_sFlexCANBuffer;

typedef volatile struct{
    UWord16             ConfigReg;
    UWord16             TestConfigReg;
    UWord16             Reserved1;
    UWord16             Control0Reg;
    UWord16             Control1Reg;
    UWord16             TimerReg;
    UWord16             MaxMBReg;
    UWord16             IntMask2Reg;
    UWord16             RxGlobalMaskHiReg;
    UWord16             RxGlobalMaskLoReg;
    UWord16             Rx14MaskHiReg;
    UWord16             Rx14MaskLoReg;
    UWord16             Rx15MaskHiReg;
    UWord16             Rx15MaskLoReg;
    UWord16             Reserved2[2];
    UWord16             StatusReg;
    UWord16             IntMask1Reg;
    UWord16             IntFlags1Reg;
    UWord16             ErrorCounterReg;
    UWord16             Test1Reg[7];    /* MCntrl SCntrl*/
    UWord16             IntFlags2Reg;
    UWord16             Reserved3[2];
    UWord16             Test2Reg[2];
    UWord16             Reserved4[32];
    arch_sFlexCANBuffer Buffer[32]; /* last 16 buffers are not available yet */
    } arch_sFlexCAN;

typedef volatile struct{
    UWord16 ControlReg;
    UWord16 StatusReg;
    UWord16 TestReg;
    UWord16 Reserved[13];
    } arch_sLVI;

typedef volatile struct{
    UWord16 ControlReg;
    UWord16 DivideReg;
    UWord16 StatusReg;
    UWord16 TestReg;
    UWord16 SelectReg;
    UWord16 OscControlReg;
    UWord16 Reserved[10];
    } arch_sPLL;

typedef volatile struct{
    UWord16 PullUpReg;
    UWord16 DataReg;
    UWord16 DataDirectionReg;
    UWord16 PeripheralReg;
    UWord16 IntAssertReg;
    UWord16 IntEnableReg;
    UWord16 IntPolarityReg;
    UWord16 IntPendingReg;
    UWord16 IntEdgeSensReg;
    UWord16 Reserved1;
    UWord16 RawDataInputReg;
    UWord16 Reserved[5];
    } arch_sPort;

typedef volatile struct{
    UWord16 ControlReg;
    UWord16 FaultControlReg;
    UWord16 FaultStatusReg;
    UWord16 OutputControlReg;
    UWord16 CounterReg;
    UWord16 CounterModuloReg;
    Word16 ValueReg[6]; 
    UWord16 DeadtimeReg;
    UWord16 DisableMapping1Reg;
    UWord16 DisableMapping2Reg;
    UWord16 ConfigReg;
    UWord16 ChannelControlReg;
    UWord16 PortReg;
    UWord16 Reserved[14];
    } arch_sPWM;

typedef volatile struct{
    UWord16 BaudRateReg;
    UWord16 ControlReg;
    UWord16 Reserved1;
    UWord16 StatusReg;
    UWord16 DataReg;
    UWord16 Reserved2[11];
    } arch_sSCI;

typedef volatile struct{
    UWord16 ControlReg;
    UWord16 StatusReg;
    UWord16 SoftwareControlReg[4];
    UWord16 MostSignificantHalfJTAGIDReg;
    UWord16 LeastSignificantHalfJTAGIDReg;
    UWord16 PullupDisableReg;
    UWord16 TestReg;
    UWord16 ClockSelectReg;
    UWord16 GPSReg;
    UWord16 PCEReg;
    UWord16 ISALHReg;
    UWord16 ISALLReg;
    UWord16 Reserved;
    } arch_sSIM;

typedef volatile struct{
    UWord16 ControlReg;
    UWord16 DataSizeReg;
    UWord16 DataRxReg;
    UWord16 DataTxReg;
    UWord16 Reserved[12];
    } arch_sSPI;

typedef volatile struct{
    UWord16 ControlReg;
    UWord16 StatusReg;
    UWord16 Reserved1[4];
    UWord16 MostSignificantHalfJTAGIDReg;
    UWord16 LeastSignificantHalfJTAGIDReg;
    UWord16 Reserved2[16];
    UWord16 TestReg[5];
    UWord16 Reserved3[3];
    } arch_sSYS; /* ??? */

typedef volatile struct{
    UWord16 BaseAddressReg0;
    UWord16 BaseAddressReg1;
    UWord16 BaseAddressReg2;
    UWord16 BaseAddressReg3;    
    UWord16 BaseAddressReg4;
    UWord16 BaseAddressReg5;
    UWord16 BaseAddressReg6;    
    UWord16 BaseAddressReg7;
    UWord16 OptionReg0;
    UWord16 OptionReg1;
    UWord16 OptionReg2;
    UWord16 OptionReg3;
    UWord16 OptionReg4;
    UWord16 OptionReg5;
    UWord16 OptionReg6;
    UWord16 OptionReg7;
    UWord16 ControlReg;
    UWord16 Reserved[15];
} arch_sEMI;


typedef volatile struct{
    UWord16 ControlReg;
    UWord16 Reserved[15];
    } arch_sTempSensor;


#if defined(DSP56838EVM)
typedef volatile struct{
    UWord16 CompareReg1;
    UWord16 CompareReg2;
    UWord16 CaptureReg;
    UWord16 LoadReg;
    UWord16 HoldReg;
    UWord16 CounterReg;
    UWord16 ControlReg;
    UWord16 StatusControlReg;
    } arch_sTimerChannel;

typedef volatile struct{
    arch_sTimerChannel Channel0;
    arch_sTimerChannel Channel1;
    arch_sTimerChannel Channel2;
    arch_sTimerChannel Channel3;
    UWord16 Reserved[32];
    } arch_sTimer;

#else /* defined(DSP56838EVM) */

typedef volatile struct{
	UWord16 CompareReg1;
	UWord16 CompareReg2;
	UWord16 CaptureReg;
	UWord16 LoadReg;
	UWord16 HoldReg;
	UWord16 CounterReg;
	UWord16 ControlReg;
	UWord16 StatusControlReg;
	UWord16 ComparatorLoadReg1;          
	UWord16 ComparatorLoadReg2;         
	UWord16 ComparatorStatusControlReg;  
	UWord16 Reserved[5];
} arch_sTimerChannel;

typedef volatile struct{
    arch_sTimerChannel Channel0;
    arch_sTimerChannel Channel1;
    arch_sTimerChannel Channel2;
    arch_sTimerChannel Channel3;
    } arch_sTimer;

#endif /* defined(DSP56838EVM) */



#if defined(DSP56838EVM)
typedef volatile struct{
    arch_sSYS                   Sys;
    arch_sEMI                   Semi;  /* SEMI module (External memory interface) */
    arch_sTimer                 TimerA;
    UWord16                     Reserved2[sizeof(arch_sTimer)/sizeof(UWord16)]; /* Timer B unavailable */
    arch_sTimer                 TimerC;
    arch_sTimer                 TimerD;
    arch_sPWM                   PwmA;
    arch_sPWM                   PwmB;
    arch_sDecoder               Decoder0;
    UWord16                     Reserved[sizeof(arch_sDecoder)/sizeof(UWord16)];
    arch_sIntCntrl              IntCtrl;
    arch_sADC                   AdcA;
    UWord16                     Reserved_a[22];
    arch_sADC                   AdcB;
    UWord16                     Reserved_b[6];
    arch_sTempSensor            TempSensor;
    arch_sSCI                   Sci0;
    arch_sSCI                   Sci1;
    arch_sSPI                   Spi0;
    arch_sSPI                   Spi1;
    arch_sCOP                   Cop;
    arch_sPLL                   Pll;
    arch_sPort                  PortA;
    UWord16                     Reserved3[16]; /* additional hole after port A */
    arch_sPort                  PortB;
    arch_sPort                  PortC;
    arch_sPort                  PortD;
    arch_sPort                  PortE;
    arch_sSIM                   Sim;
    arch_sLVI                   Lvi;
    UWord16                     Reserved4[160]; /* additional hole after LVI module */
    arch_sFlash                 Flash;
    UWord16                     Reserved5[768];
    UWord16                     ReservedCAN[sizeof(arch_sFlexCAN)/2];
    UWord16                     Reserved6[192];
    arch_sMSCAN                 CAN; /* MSCAN module - for prototype  */
    } arch_sIO;

#else /* defined(DSP56838EVM) */


typedef volatile struct{
    UWord16           Reserved0[0x20];
    arch_sEMI         Semi; /* SEMI module (System bus External Memory Interface) */
    arch_sTimer       TimerA;
    arch_sTimer       TimerB;
    arch_sTimer       TimerC;
    arch_sTimer       TimerD;
    arch_sPWM         PwmA;
    arch_sPWM         PwmB;
    arch_sDecoder     Decoder0;
    arch_sDecoder     Decoder1;
    arch_sIntCntrl    IntCtrl;
//    UWord16           Reserved1[0x40]; /* additional hole after Interrupt Controller */
    arch_sADC         AdcA;
    UWord16           Reserved2[0x16]; /* additional hole after A/D A */
    arch_sADC         AdcB;
    UWord16           Reserved2_1[0x6]; /* additional hole after A/D A */
    arch_sTempSensor  TempSensor;
    arch_sSCI         Sci0;
    arch_sSCI         Sci1;
    arch_sSPI         Spi0;
    arch_sSPI         Spi1;
    arch_sCOP         Cop;
    arch_sPLL         Pll;
    arch_sPort        PortA;
    UWord16           Reserved3[0x10]; /* additional hole after port A */
    arch_sPort        PortB;
    arch_sPort        PortC;
    arch_sPort        PortD;
    arch_sPort        PortE;
    arch_sPort        PortF;
    arch_sSIM         Sim;
    arch_sLVI         Lvi;
    UWord16           Reserved4[0x90]; /* additional hole after LVI module */
    arch_sFlash       Flash;
    UWord16           Reserved5[0x300];
    arch_sFlexCAN     CAN; /* FlexCAN module */
    UWord16           Reserved6[0x6C0];
  } arch_sIO;

#endif /* defined(DSP56838EVM) */


typedef volatile struct{
    UWord16              Reserved1[0x79];
    UWord16              BusControlReg;
    UWord16              Reserved2;
    UWord16              InterruptPriorityReg;
    UWord16              Reserved3[3];
    UWord16              BusTransferReg;    
    } arch_sCore;

/* The location of the following structures is defined in linker.cmd */


#if defined(DSP56838EVM)

#if defined(BSP_FARPTR_PATCH)
#define ArchIO (*(volatile arch_sIO*) 0)
#else
#define ArchIO (*(volatile arch_sIO*) 0xFFF000)
#endif 

#else /* defined DSP56838EVM */

#define ArchIO (*(volatile arch_sIO*) 0xF000)

#define archoff_FlexCAN_length 0xC0
#define archoff_PortA_length 0xB
#define archoff_Sci0_length 0x5
#define archoff_Sci1_length 0x5
#define archoff_TimerA0_length 0x20
#define archoff_TimerB0_length 0x20
#define archoff_TimerC0_length 0x20
#define archoff_TimerD0_length 0x20
#define archoff_Flash_length 0x19

#define archoff_registers_num 9

typedef volatile struct{
    UWord16              StartAddress;
    UWord16              length;
    } arch_PeriphRegState;




#endif

/*******************************************************
* Architecture Routines
*******************************************************/

void archStart(void);
void Dispatcher(void);


#ifdef __cplusplus
}
#endif

#endif

⌨️ 快捷键说明

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