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

📄 mcf5204.h

📁 motorola自己开发的针对coldfire 5272的Dbug bootloader程序
💻 H
📖 第 1 页 / 共 2 页
字号:
#define MCF5204_SIM_PADDR_PA7			( 0x80)
#define MCF5204_SIM_PADDR_PA7_INPUT		(~0x80)
#define MCF5204_SIM_PADDR_PA7_OUTPUT	( 0x80)
#define MCF5204_SIM_PADDR_PA6			( 0x40)
#define MCF5204_SIM_PADDR_PA6_INPUT		(~0x40)
#define MCF5204_SIM_PADDR_PA6_OUTPUT	( 0x40)
#define MCF5204_SIM_PADDR_PA5			( 0x20)
#define MCF5204_SIM_PADDR_PA5_INPUT		(~0x20)
#define MCF5204_SIM_PADDR_PA5_OUTPUT	( 0x20)
#define MCF5204_SIM_PADDR_PA4			( 0x10)
#define MCF5204_SIM_PADDR_PA4_INPUT		(~0x10)
#define MCF5204_SIM_PADDR_PA4_OUTPUT	( 0x10)
#define MCF5204_SIM_PADDR_PA3			( 0x08)
#define MCF5204_SIM_PADDR_PA3_INPUT		(~0x08)
#define MCF5204_SIM_PADDR_PA3_OUTPUT	( 0x08)
#define MCF5204_SIM_PADDR_PA2			( 0x04)
#define MCF5204_SIM_PADDR_PA2_INPUT		(~0x04)
#define MCF5204_SIM_PADDR_PA2_OUTPUT	( 0x04)
#define MCF5204_SIM_PADDR_PA1			( 0x02)
#define MCF5204_SIM_PADDR_PA1_INPUT		(~0x02)
#define MCF5204_SIM_PADDR_PA1_OUTPUT	( 0x02)
#define MCF5204_SIM_PADDR_PA0			( 0x01)
#define MCF5204_SIM_PADDR_PA0_INPUT		(~0x01)
#define MCF5204_SIM_PADDR_PA0_OUTPUT	( 0x01)

#define MCF5204_SIM_PADAT_PA7			( 0x80)
#define MCF5204_SIM_PADAT_PA6			( 0x40)
#define MCF5204_SIM_PADAT_PA5			( 0x20)
#define MCF5204_SIM_PADAT_PA4			( 0x10)
#define MCF5204_SIM_PADAT_PA3			( 0x08)
#define MCF5204_SIM_PADAT_PA2			( 0x04)
#define MCF5204_SIM_PADAT_PA1			( 0x02)
#define MCF5204_SIM_PADAT_PA0			( 0x01)

#define MCF5204_SIM_CSAR_BASE(a)		((a)&0xFFFFFE00)

#define MCF5204_SIM_CSMR_MASK_4M		(0x003FFE00)
#define MCF5204_SIM_CSMR_MASK_2M		(0x001FFE00)
#define MCF5204_SIM_CSMR_MASK_1M		(0x000FFE00)
#define MCF5204_SIM_CSMR_MASK_1024K		(0x000FFE00)
#define MCF5204_SIM_CSMR_MASK_512K		(0x0007FE00)
#define MCF5204_SIM_CSMR_MASK_256K		(0x0003FE00)
#define MCF5204_SIM_CSMR_MASK_128K		(0x0001FE00)
#define MCF5204_SIM_CSMR_MASK_64K		(0x0000FE00)
#define MCF5204_SIM_CSMR_MASK_32K		(0x00007E00)
#define MCF5204_SIM_CSMR_MASK_16K		(0x00003E00)
#define MCF5204_SIM_CSMR_MASK_8K		(0x00001E00)
#define MCF5204_SIM_CSMR_MASK_4K		(0x00000E00)
#define MCF5204_SIM_CSMR_MASK_2K		(0x00000600)
#define MCF5204_SIM_CSMR_MASK_1K		(0x00000200)
#define MCF5204_SIM_CSMR_MASK_512B		(0x00000000)
#define MCF5204_SIM_CSMR_WP				(0x00000100)
#define MCF5204_SIM_CSMR_CI				(0x00000020)
#define MCF5204_SIM_CSMR_SC				(0x00000010)
#define MCF5204_SIM_CSMR_SD				(0x00000008)
#define MCF5204_SIM_CSMR_UC				(0x00000004)
#define MCF5204_SIM_CSMR_UD				(0x00000002)

#define MCF5204_SIM_CSCR_WS_MASK		(0x00001C00)
#define MCF5204_SIM_CSCR_WS(a)			(((a)&0x07)<<10)
#define MCF5204_SIM_CSCR_WS_0			(0x00000000)
#define MCF5204_SIM_CSCR_WS_1			(0x00000400)
#define MCF5204_SIM_CSCR_WS_2			(0x00000800)
#define MCF5204_SIM_CSCR_WS_3			(0x00000C00)
#define MCF5204_SIM_CSCR_WS_4			(0x00001000)
#define MCF5204_SIM_CSCR_WS_5			(0x00001400)
#define MCF5204_SIM_CSCR_WS_6			(0x00001800)
#define MCF5204_SIM_CSCR_WS_7			(0x00001C00)
#define MCF5204_SIM_CSCR_BRST			(0x00000200)
#define MCF5204_SIM_CSCR_AA				(0x00000100)
#define MCF5204_SIM_CSCR_PS_8			(0x00000040)
#define MCF5204_SIM_CSCR_PS_16			(0x00000000)
#define MCF5204_SIM_CSCR_BEM			(0x00000020)
#define MCF5204_SIM_CSCR_V				(0x00000001)

#define MCF5204_IACK_ADDRESS			(0xFFFFFFE0)
#define MCF5204_IACK_MASK				(MCF5204_SIM_CSMR_MASK_512B)

/***********************************************************************/

/*
 * Timer Module, TIMER
 */

/* Offsets of the registers from the MBAR */
#define MCF5204_TIMER_TMR1		(0x100)
#define MCF5204_TIMER_TRR1		(0x104)
#define MCF5204_TIMER_TCR1		(0x108)
#define MCF5204_TIMER_TCN1		(0x10C)
#define MCF5204_TIMER_TER1		(0x111)
#define MCF5204_TIMER_TMR2		(0x120)
#define MCF5204_TIMER_TRR2		(0x124)
#define MCF5204_TIMER_TCR2		(0x128)
#define MCF5204_TIMER_TCN2		(0x12C)
#define MCF5204_TIMER_TER2		(0x131)

/* Read access macros for general use */
#define MCF5204_RD_TIMER_TMR1(IMMP)	Mcf5204_iord(IMMP,MCF5204_TIMER_TMR1,16)
#define MCF5204_RD_TIMER_TRR1(IMMP)	Mcf5204_iord(IMMP,MCF5204_TIMER_TRR1,16)
#define MCF5204_RD_TIMER_TCR1(IMMP)	Mcf5204_iord(IMMP,MCF5204_TIMER_TCR1,16)
#define MCF5204_RD_TIMER_TCN1(IMMP)	Mcf5204_iord(IMMP,MCF5204_TIMER_TCN1,16)
#define MCF5204_RD_TIMER_TER1(IMMP)	Mcf5204_iord(IMMP,MCF5204_TIMER_TER1,16)
#define MCF5204_RD_TIMER_TMR2(IMMP)	Mcf5204_iord(IMMP,MCF5204_TIMER_TMR2,16)
#define MCF5204_RD_TIMER_TRR2(IMMP)	Mcf5204_iord(IMMP,MCF5204_TIMER_TRR2,16)
#define MCF5204_RD_TIMER_TCR2(IMMP)	Mcf5204_iord(IMMP,MCF5204_TIMER_TCR2,16)
#define MCF5204_RD_TIMER_TCN2(IMMP)	Mcf5204_iord(IMMP,MCF5204_TIMER_TCN2,16)
#define MCF5204_RD_TIMER_TER2(IMMP)	Mcf5204_iord(IMMP,MCF5204_TIMER_TER2,16)

/* Write access macros for general use */
#define MCF5204_WR_TIMER_TMR1(IMMP,DATA)	\
	Mcf5204_iowr(IMMP,MCF5204_TIMER_TMR1,16,DATA)
#define MCF5204_WR_TIMER_TRR1(IMMP,DATA)	\
	Mcf5204_iowr(IMMP,MCF5204_TIMER_TRR1,16,DATA)
#define MCF5204_WR_TIMER_TCR1(IMMP,DATA)	\
	Mcf5204_iowr(IMMP,MCF5204_TIMER_TCR1,16,DATA)
#define MCF5204_WR_TIMER_TCN1(IMMP,DATA)	\
	Mcf5204_iowr(IMMP,MCF5204_TIMER_TCN1,16,DATA)
#define MCF5204_WR_TIMER_TER1(IMMP,DATA)	\
	Mcf5204_iowr(IMMP,MCF5204_TIMER_TER1,16,DATA)
#define MCF5204_WR_TIMER_TMR2(IMMP,DATA)	\
	Mcf5204_iowr(IMMP,MCF5204_TIMER_TMR2,16,DATA)
#define MCF5204_WR_TIMER_TRR2(IMMP,DATA)	\
	Mcf5204_iowr(IMMP,MCF5204_TIMER_TRR2,16,DATA)
#define MCF5204_WR_TIMER_TCR2(IMMP,DATA)	\
	Mcf5204_iowr(IMMP,MCF5204_TIMER_TCR2,16,DATA)
#define MCF5204_WR_TIMER_TCN2(IMMP,DATA)	\
	Mcf5204_iowr(IMMP,MCF5204_TIMER_TCN2,16,DATA)
#define MCF5204_WR_TIMER_TER2(IMMP,DATA)	\
	Mcf5204_iowr(IMMP,MCF5204_TIMER_TER2,16,DATA)

#if 0
typedef volatile struct
{
	uint32	reserved1[64];
	uint16	TMR1;
	uint16	reserved2;
	uint16	TRR1;
	uint16	reserved3;
	uint16	TCR1;
	uint16	reserved4;
	uint16	TCN1;
	uint16	reserved5;
	uint8	reserved6;
	uint8	TER1;
	uint16	reserved7;
	uint32	reserved8;
	uint32	reserved9;
	uint32	reserved10;
	uint16	TMR2;
	uint16	reserved11;
	uint16	TRR2;
	uint16	reserved12;
	uint16	TCR2;
	uint16	reserved13;
	uint16	TCN2;
	uint16	reserved14;
	uint8	reserved15;
	uint8	TER2;
	uint16	reserved16;
} MCF5204_TIMER;
#endif

#define MCF5204_TIMER_TMR_PS(a)		(((a)&0x00FF)<<8)
#define MCF5204_TIMER_TMR_CE		(0x00C0)
#define MCF5204_TIMER_TMR_CE_ANY	(0x00C0)
#define MCF5204_TIMER_TMR_CE_RISE	(0x0080)
#define MCF5204_TIMER_TMR_CE_FALL	(0x0040)
#define MCF5204_TIMER_TMR_CE_NONE	(0x0000)
#define MCF5204_TIMER_TMR_OM		(0x0020)
#define MCF5204_TIMER_TMR_ORI		(0x0010)
#define MCF5204_TIMER_TMR_FRR		(0x0008)
#define MCF5204_TIMER_TMR_CLK		(0x0006)
#define MCF5204_TIMER_TMR_CLK_TIN	(0x0006)
#define MCF5204_TIMER_TMR_CLK_DIV16	(0x0004)
#define MCF5204_TIMER_TMR_CLK_MSCLK	(0x0002)
#define MCF5204_TIMER_TMR_CLK_STOP	(0x0000)
#define MCF5204_TIMER_TMR_RST		(0x0001)

#define MCF5204_TIMER_TER_REF		(0x02)
#define MCF5204_TIMER_TER_CAP		(0x01)

/***********************************************************************/

/*
 * UART Module, UART
 */

#define MCF5204_UART_UMR	(0x140)
#define MCF5204_UART_USR	(0x144)
#define MCF5204_UART_UCSR	(0x144)
#define MCF5204_UART_UCR	(0x148)
#define MCF5204_UART_URB	(0x14C)
#define MCF5204_UART_UTB	(0x14C)
#define MCF5204_UART_UIPCR	(0x150)
#define MCF5204_UART_UACR	(0x150)
#define MCF5204_UART_UISR	(0x154)
#define MCF5204_UART_UIMR	(0x154)
#define MCF5204_UART_UBG1	(0x158)
#define MCF5204_UART_UBG2	(0x15C)
#define MCF5204_UART_UIVR	(0x170)
#define MCF5204_UART_UIP	(0x174)
#define MCF5204_UART_UOP1	(0x178)
#define MCF5204_UART_UOP0	(0x17C)

/* Read access macros for general use */
#define MCF5204_RD_UART_UMR(IMMP)	Mcf5204_iord(IMMP,MCF5204_UART_UMR,8)
#define MCF5204_RD_UART_USR(IMMP)	Mcf5204_iord(IMMP,MCF5204_UART_USR,8)
#define MCF5204_RD_UART_URB(IMMP)	Mcf5204_iord(IMMP,MCF5204_UART_URB,8)
#define MCF5204_RD_UART_UIPCR(IMMP)	Mcf5204_iord(IMMP,MCF5204_UART_UIPCR,8)
#define MCF5204_RD_UART_UISR(IMMP)	Mcf5204_iord(IMMP,MCF5204_UART_UISR,8)
#define MCF5204_RD_UART_UIVR(IMMP)	Mcf5204_iord(IMMP,MCF5204_UART_UIVR,8)
#define MCF5204_RD_UART_UIP(IMMP)	Mcf5204_iord(IMMP,MCF5204_UART_UIP,8)

/* Write access macros for general use */
#define MCF5204_WR_UART_UMR(IMMP,DATA)	\
	Mcf5204_iowr(IMMP,MCF5204_UART_UMR,8,DATA)
#define MCF5204_WR_UART_UCSR(IMMP,DATA)	\
	Mcf5204_iowr(IMMP,MCF5204_UART_UCSR,8,DATA)
#define MCF5204_WR_UART_UCR(IMMP,DATA)	\
	Mcf5204_iowr(IMMP,MCF5204_UART_UCR,8,DATA)
#define MCF5204_WR_UART_UTB(IMMP,DATA)	\
	Mcf5204_iowr(IMMP,MCF5204_UART_UTB,8,DATA)
#define MCF5204_WR_UART_UACR(IMMP,DATA)	\
	Mcf5204_iowr(IMMP,MCF5204_UART_UACR,8,DATA)
#define MCF5204_WR_UART_UIMR(IMMP,DATA)	\
	Mcf5204_iowr(IMMP,MCF5204_UART_UIMR,8,DATA)
#define MCF5204_WR_UART_UBG1(IMMP,DATA)	\
	Mcf5204_iowr(IMMP,MCF5204_UART_UBG1,8,DATA)
#define MCF5204_WR_UART_UBG2(IMMP,DATA)	\
	Mcf5204_iowr(IMMP,MCF5204_UART_UBG2,8,DATA)
#define MCF5204_WR_UART_UIVR(IMMP,DATA)	\
	Mcf5204_iowr(IMMP,MCF5204_UART_UIVR,8,DATA)
#define MCF5204_WR_UART_UOP1(IMMP,DATA)	\
	Mcf5204_iowr(IMMP,MCF5204_UART_UOP1,8,DATA)
#define MCF5204_WR_UART_UOP0(IMMP,DATA)	\
	Mcf5204_iowr(IMMP,MCF5204_UART_UOP0,8,DATA)

#if 0
typedef volatile struct
{
	uint32	reserved1[80];
	uint8	UMR;
	uint8	reserved2;
	uint8	reserved3;
	uint8	reserved4;
	uint8	USR;
	uint8	reserved5;
	uint8	reserved6;
	uint8	reserved7;
	uint8	UCR;
	uint8	reserved8;
	uint8	reserved9;
	uint8	reserved10;
	uint8	UBUF;
	uint8	reserved11;
	uint8	reserved12;
	uint8	reserved13;
	uint8	UACR;
	uint8	reserved14;
	uint8	reserved15;
	uint8	reserved16;
	uint8	UIR;
	uint8	reserved17;
	uint8	reserved18;
	uint8	reserved19;
	uint8	UBG1;
	uint8	reserved20;
	uint8	reserved21;
	uint8	reserved22;
	uint8	UBG2;
	uint32	reserved23[4];
	uint8	UIVR;
	uint8	reserved24;
	uint8	reserved25;
	uint8	reserved26;
	uint8	UIP;
	uint8	reserved27;
	uint8	reserved28;
	uint8	reserved29;
	uint8	UOP1;
	uint8	reserved30;
	uint8	reserved31;
	uint8	reserved32;
	uint8	UOP0;
} MCF5204_UART;
#endif

#define MCF5204_UART_UMR1_RXRTS				(0x80)
#define MCF5204_UART_UMR1_RXIRQ				(0x40)
#define MCF5204_UART_UMR1_ERR				(0x20)
#define MCF5204_UART_UMR1_PM				(0x1C)
#define MCF5204_UART_UMR1_PM_MULTI_ADDR		(0x1C)
#define MCF5204_UART_UMR1_PM_MULTI_DATA		(0x18)
#define MCF5204_UART_UMR1_PM_NONE			(0x10)
#define MCF5204_UART_UMR1_PM_FORCE_HI		(0x0C)
#define MCF5204_UART_UMR1_PM_FORCE_LO		(0x08)
#define MCF5204_UART_UMR1_PM_ODD			(0x04)
#define MCF5204_UART_UMR1_PM_EVEN			(0x00)
#define MCF5204_UART_UMR1_BC				(0x03)
#define MCF5204_UART_UMR1_BC_5				(0x00)
#define MCF5204_UART_UMR1_BC_6				(0x01)
#define MCF5204_UART_UMR1_BC_7				(0x02)
#define MCF5204_UART_UMR1_BC_8				(0x03)

#define MCF5204_UART_UMR2_CM				(0xC0)
#define MCF5204_UART_UMR2_CM_NORMAL			(0x00)
#define MCF5204_UART_UMR2_CM_ECHO			(0x40)
#define MCF5204_UART_UMR2_CM_LOCAL_LOOP		(0x80)
#define MCF5204_UART_UMR2_CM_REMOTE_LOOP	(0xC0)
#define MCF5204_UART_UMR2_TXRTS				(0x20)
#define MCF5204_UART_UMR2_TXCTS				(0x10)
#define MCF5204_UART_UMR2_STOP_BITS			(0x0F)
#define MCF5204_UART_UMR2_STOP_BITS_1		(0x07)
#define MCF5204_UART_UMR2_STOP_BITS_15		(0x08)
#define MCF5204_UART_UMR2_STOP_BITS_2		(0x0F)

#define MCF5204_UART_USR_RB					(0x80)
#define MCF5204_UART_USR_FE					(0x40)
#define MCF5204_UART_USR_PE					(0x20)
#define MCF5204_UART_USR_OE					(0x10)
#define MCF5204_UART_USR_TXEMP				(0x08)
#define MCF5204_UART_USR_TXRDY				(0x04)
#define MCF5204_UART_USR_FFULL				(0x02)
#define MCF5204_UART_USR_RXRDY				(0x01)

#define MCF5204_UART_UCSR_9600_BPS			(0xBB)
#define MCF5204_UART_UCSR_19200_BPS			(0xCC)

#define MCF5204_UART_UCR_NONE				(0x00)
#define MCF5204_UART_UCR_STOP_BREAK			(0x70)
#define MCF5204_UART_UCR_START_BREAK		(0x60)
#define MCF5204_UART_UCR_RESET_BKCHGINT		(0x50)
#define MCF5204_UART_UCR_RESET_ERROR		(0x40)
#define MCF5204_UART_UCR_RESET_TX			(0x30)
#define MCF5204_UART_UCR_RESET_RX			(0x20)
#define MCF5204_UART_UCR_RESET_MR			(0x10)
#define MCF5204_UART_UCR_TX_DISABLED		(0x08)
#define MCF5204_UART_UCR_TX_ENABLED			(0x04)
#define MCF5204_UART_UCR_RX_DISABLED		(0x02)
#define MCF5204_UART_UCR_RX_ENABLED			(0x01)

#define MCF5204_UART_UIPCR_COS				(0x10)
#define MCF5204_UART_UIPCR_CTS				(0x01)

#define MCF5204_UART_UACR_BRG				(0x80)
#define MCF5204_UART_UACR_CTMS_TIMER		(0x60)
#define MCF5204_UART_UACR_IEC				(0x01)

#define MCF5204_UART_UISR_COS				(0x80)
#define MCF5204_UART_UISR_DB				(0x04)
#define MCF5204_UART_UISR_RXRDY				(0x02)
#define MCF5204_UART_UISR_TXRDY				(0x01)

#define MCF5204_UART_UIMR_COS				(0x80)
#define MCF5204_UART_UIMR_DB				(0x04)
#define MCF5204_UART_UIMR_FFULL				(0x02)
#define MCF5204_UART_UIMR_TXRDY				(0x01)

/***********************************************************************/
#if 0
/*
 * Put the modules together to overlay the internal peripherals.
 * Assuming compiler keeps data structures in the exact order
 * provided above, an example acess to the UMR register in the
 * UART is:
 *
 *  immp->uart.UMR
 *
 * where 'immp' is a pointer to the internal peripherals, MCF5204_IMM *
 */
typedef volatile union
{
	MCF5204_SIM		sim;
	MCF5204_UART	uart;
	MCF5204_TIMER	timer;
} MCF5204_IMM;
#endif

/***********************************************************************/

#endif	/* _CPU_MCF5204_H */

⌨️ 快捷键说明

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