📄 arch.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 + -