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

📄 mcf5282_hi.c

📁 motorola自己开发的针对coldfire 5272的Dbug bootloader程序
💻 C
📖 第 1 页 / 共 3 页
字号:
	IRMD(GPTB,	GPTIOS,		GPTIOS,	8);
	IRMD(GPTB,	GPTCFORC,	GPTCFORC,	8);
	IRMD(GPTB,	GPTOC3M,	GPTOC3M,	8);
	IRMD(GPTB,	GPTOC3D,	GPTOC3D,	8);
	IRMD(GPTB,	GPTCNT,		GPTCNT,	16);
	IRMD(GPTB,	GPTSCR1,	GPTSCR1,	8);
	IRMD(GPTB,	GPTTOV,		GPTTOV,	8);
	IRMD(GPTB,	GPTCTL1,	GPTCTL1,	8);
	IRMD(GPTB,	GPTCTL2,	GPTCTL2,	8);
	IRMD(GPTB,	GPTIE,		GPTIE,	8);
	IRMD(GPTB,	GPTSCR2,	GPTSCR2,	8);
	IRMD(GPTB,	GPTFLG1,	GPTFLG1,	8);
	IRMD(GPTB,	GPTFLG2,	GPTFLG2,	8);
	IRMD(GPTB,	GPTC0,		GPTC0,	16);
	IRMD(GPTB,	GPTC1,		GPTC1,	16);
	IRMD(GPTB,	GPTC2,		GPTC2,	16);
	IRMD(GPTB,	GPTC3,		GPTC3,	16);
	IRMD(GPTB,	GPTPACTL,	GPTPACTL,	8);
	IRMD(GPTB,	GPTPAFLG,	GPTPAFLG,	8);
	IRMD(GPTB,	GPTPACNT,	GPTPACNT,	16);
	IRMD(GPTB,	GPTPORT,	GPTPORT,	8);
	IRMD(GPTB,	GPTDDR,		GPTDDR,	8);
		
	if (!display_all)
		printf(INVREG,reg);
}
/********************************************************************/
static void
irmd_reset (char *reg, int regread, uint32 value)
{
	IRMD(RESET,	RCR,	RCR,	8);
	IRMD(RESET,	RSR,	RSR,	8);
			
	if (!display_all)
		printf(INVREG,reg);
}
/********************************************************************/
static void
irmd_ccm (char *reg, int regread, uint32 value)
{
	IRMD(CCM,	CCR,	CCR,	16);
	IRMD(CCM,	RCON,	RCON,	16);
	IRMD(CCM,	CIR,	CIR,	16);
			
	if (!display_all)
		printf(INVREG,reg);
}
/********************************************************************/
static void
irmd_pmm (char *reg, int regread, uint32 value)
{
	IRMD(PMM,	LPICR,	LPICR,	8);
	IRMD(PMM,	LPCR,	LPCR,	8);
			
	if (!display_all)
		printf(INVREG,reg);
}
/********************************************************************/
static void
irmd_clock (char *reg, int regread, uint32 value)
{
	IRMD(CLOCK,	SYNCR,	SYNCR,	16);
	IRMD(CLOCK,	SYNSR,	SYNSR,	8);
			
	if (!display_all)
		printf(INVREG,reg);
}
/********************************************************************/
static void
irmd_eport (char *reg, int regread, uint32 value)
{
	IRMD(EPORT,	EPPAR,	EPPAR,	16);
	IRMD(EPORT,	EPDDR,	EPDDR,	8);
	IRMD(EPORT,	EPIER,	EPIER,	8);
	IRMD(EPORT,	EPDR,	EPDR,	8);
	IRMD(EPORT,	EPPDR,	EPPDR,	8);
	IRMD(EPORT,	EPFR,	EPFR,	8);
			
	if (!display_all)
		printf(INVREG,reg);
}
/********************************************************************/
static void
irmd_cfm (char *reg, int regread, uint32 value)
{
	IRMD(CFM,	CFMMCR,		CFMMCR,	16);
	IRMD(CFM,	CFMCLKD,	CFMCLKD,	8);
	IRMD(CFM,	CFMSEC,		CFMSEC,	32);
	IRMD(CFM,	CFMPROT,	CFMPROT,	32);
	IRMD(CFM,	CFMSACC,	CFMSACC,	32);
	IRMD(CFM,	CFMDACC,	CFMDACC,	32);
	IRMD(CFM,	CFMUSTAT,	CFMUSTAT,	8);
	IRMD(CFM,	CFMCMD,		CFMCMD,	8);
	IRMD(CFM,	CFMDISU,	CFMDISU,	16);
			
	if (!display_all)
		printf(INVREG,reg);
}
/********************************************************************/
static void
irmd_intc0 (char *reg, int regread, uint32 value)
{
	IRMD(INTC0,	IPRH,	IPRH,	32);
	IRMD(INTC0,	IPRL,	IPRL,	32);
	IRMD(INTC0,	IMRH,	IMRH,	32);
	IRMD(INTC0,	IMRL,	IMRL,	32);
	IRMD(INTC0,	INTFRCH,	INTFRCH,	32);
	IRMD(INTC0,	INTFRCL,	INTFRCL,	32);
	IRMD(INTC0,	IRLR,	IRLR,	8);
	IRMD(INTC0,	IACKLPR,	IACKLPR,	8);
	IRMD_NOWR(INTC0,	ICR1,	8);
	IRMD_NOWR(INTC0,	ICR2,	8);
	IRMD_NOWR(INTC0,	ICR3,	8);
	IRMD_NOWR(INTC0,	ICR4,	8);
	IRMD_NOWR(INTC0,	ICR5,	8);
	IRMD_NOWR(INTC0,	ICR6,	8);
	IRMD_NOWR(INTC0,	ICR7,	8);
	IRMD(INTC0,	ICR8,	ICR8,	8);
	IRMD(INTC0,	ICR9,	ICR9,	8);
	IRMD(INTC0,	ICR10,	ICR10,	8);
	IRMD(INTC0,	ICR11,	ICR11,	8);
	IRMD(INTC0,	ICR12,	ICR12,	8);
	IRMD(INTC0,	ICR13,	ICR13,	8);
	IRMD(INTC0,	ICR14,	ICR14,	8);
	IRMD(INTC0,	ICR15,	ICR15,	8);
	IRMD(INTC0,	ICR17,	ICR17,	8);
	IRMD(INTC0,	ICR18,	ICR18,	8);
	IRMD(INTC0,	ICR19,	ICR19,	8);
	IRMD(INTC0,	ICR20,	ICR20,	8);
	IRMD(INTC0,	ICR21,	ICR21,	8);
	IRMD(INTC0,	ICR22,	ICR22,	8);
	IRMD(INTC0,	ICR23,	ICR23,	8);
	IRMD(INTC0,	ICR24,	ICR24,	8);
	IRMD(INTC0,	ICR25,	ICR25,	8);
	IRMD(INTC0,	ICR26,	ICR26,	8);
	IRMD(INTC0,	ICR27,	ICR27,	8);
	IRMD(INTC0,	ICR28,	ICR28,	8);
	IRMD(INTC0,	ICR29,	ICR29,	8);
	IRMD(INTC0,	ICR30,	ICR30,	8);
	IRMD(INTC0,	ICR31,	ICR31,	8);
	IRMD(INTC0,	ICR32,	ICR32,	8);
	IRMD(INTC0,	ICR33,	ICR33,	8);
	IRMD(INTC0,	ICR34,	ICR34,	8);
	IRMD(INTC0,	ICR35,	ICR35,	8);
	IRMD(INTC0,	ICR36,	ICR36,	8);
	IRMD(INTC0,	ICR37,	ICR37,	8);
	IRMD(INTC0,	ICR38,	ICR38,	8);
	IRMD(INTC0,	ICR39,	ICR39,	8);
	IRMD(INTC0,	ICR40,	ICR40,	8);
	IRMD(INTC0,	ICR41,	ICR41,	8);
	IRMD(INTC0,	ICR42,	ICR42,	8);
	IRMD(INTC0,	ICR43,	ICR43,	8);
	IRMD(INTC0,	ICR44,	ICR44,	8);
	IRMD(INTC0,	ICR45,	ICR45,	8);
	IRMD(INTC0,	ICR46,	ICR46,	8);
	IRMD(INTC0,	ICR47,	ICR47,	8);
	IRMD(INTC0,	ICR48,	ICR48,	8);
	IRMD(INTC0,	ICR49,	ICR49,	8);
	IRMD(INTC0,	ICR50,	ICR50,	8);
	IRMD(INTC0,	ICR51,	ICR51,	8);
	IRMD(INTC0,	ICR52,	ICR52,	8);
	IRMD(INTC0,	ICR53,	ICR53,	8);
	IRMD(INTC0,	ICR54,	ICR54,	8);
	IRMD(INTC0,	ICR55,	ICR55,	8);
	IRMD(INTC0,	ICR56,	ICR56,	8);
	IRMD(INTC0,	ICR57,	ICR57,	8);
	IRMD(INTC0,	ICR58,	ICR58,	8);
	IRMD(INTC0,	ICR59,	ICR59,	8);
	IRMD(INTC0,	ICR60,	ICR60,	8);
	IRMD(INTC0,	ICR61,	ICR61,	8);
	IRMD(INTC0,	ICR62,	ICR62,	8);
	IRMD(INTC0,	SWIACK,	SWIACK,	8);
	IRMD(INTC0,	L1IACK,	L1IACK,	8);
	IRMD(INTC0,	L2IACK,	L2IACK,	8);
	IRMD(INTC0,	L3IACK,	L3IACK,	8);
	IRMD(INTC0,	L4IACK,	L4IACK,	8);
	IRMD(INTC0,	L5IACK,	L5IACK,	8);
	IRMD(INTC0,	L6IACK,	L6IACK,	8);
	IRMD(INTC0,	L7IACK,	L7IACK,	8);
				
	if (!display_all)
		printf(INVREG,reg);
}
/********************************************************************/
static void
irmd_intc1 (char *reg, int regread, uint32 value)
{
	IRMD(INTC1,	IPRH,	IPRH,	32);
	IRMD(INTC1,	IPRL,	IPRL,	32);
	IRMD(INTC1,	IMRH,	IMRH,	32);
	IRMD(INTC1,	IMRL,	IMRL,	32);
	IRMD(INTC1,	INTFRCH,	INTFRCH,	32);
	IRMD(INTC1,	INTFRCL,	INTFRCL,	32);
	IRMD(INTC1,	IRLR,	IRLR,	8);
	IRMD(INTC1,	IACKLPR,	IACKLPR,	8);
	IRMD(INTC1,	ICR08,	ICR08,	8);
	IRMD(INTC1,	ICR09,	ICR09,	8);
	IRMD(INTC1,	ICR10,	ICR10,	8);
	IRMD(INTC1,	ICR11,	ICR11,	8);
	IRMD(INTC1,	ICR12,	ICR12,	8);
	IRMD(INTC1,	ICR13,	ICR13,	8);
	IRMD(INTC1,	ICR14,	ICR14,	8);
	IRMD(INTC1,	ICR15,	ICR15,	8);
	IRMD(INTC1,	ICR16,	ICR16,	8);
	IRMD(INTC1,	ICR17,	ICR17,	8);
	IRMD(INTC1,	ICR18,	ICR18,	8);
	IRMD(INTC1,	ICR19,	ICR19,	8);
	IRMD(INTC1,	ICR20,	ICR20,	8);
	IRMD(INTC1,	ICR21,	ICR21,	8);
	IRMD(INTC1,	ICR22,	ICR22,	8);
	IRMD(INTC1,	ICR23,	ICR23,	8);
	IRMD(INTC1,	ICR24,	ICR24,	8);
	IRMD(INTC1,	ICR25,	ICR25,	8);
	IRMD(INTC1,	ICR26,	ICR26,	8);
	IRMD(INTC1,	SWIACK,	SWIACK,	8);
	IRMD(INTC1,	L1IACK,	L1IACK,	8);
	IRMD(INTC1,	L2IACK,	L2IACK,	8);
	IRMD(INTC1,	L3IACK,	L3IACK,	8);
	IRMD(INTC1,	L4IACK,	L4IACK,	8);
	IRMD(INTC1,	L5IACK,	L5IACK,	8);
	IRMD(INTC1,	L6IACK,	L6IACK,	8);
	IRMD(INTC1,	L7IACK,	L7IACK,	8);
				
	if (!display_all)
		printf(INVREG,reg);
}
/********************************************************************/
static const struct module_t
{
	char	*module;
	void	(*func)(char *, int, uint32);
} MODULE[] =
{

	{"SCM",		irmd_scm},
	{"CS",		irmd_cs},
	{"GPIO",	irmd_gpio},
	{"QSPI",	irmd_qspi},
	{"DMA0",	irmd_dma0},
	{"DMA1",	irmd_dma1},
	{"DMA2",	irmd_dma2},
	{"DMA3",	irmd_dma3},
	{"UART0",	irmd_uart0},
	{"UART1",	irmd_uart1},
	{"UART2",	irmd_uart2},
	{"SDRAMC",	irmd_sdramc},
	{"TIMER0",	irmd_dma_timer0},
	{"TIMER1",	irmd_dma_timer1},
	{"TIMER2",	irmd_dma_timer2},
	{"TIMER3",	irmd_dma_timer3},
	{"FEC",		irmd_fec},
	{"CAN",		irmd_can},
	{"I2C",		irmd_i2c},
	{"WTM",		irmd_wtm},
	{"PIT0",	irmd_pit0},
	{"PIT1",	irmd_pit1},
	{"PIT2",	irmd_pit2},
	{"PIT3",	irmd_pit3},
	{"QADC",	irmd_qadc},
	{"GPTA",	irmd_gpta},
	{"GPTB",	irmd_gptb},
	{"RESET",	irmd_reset},
	{"CCM",		irmd_ccm},
	{"PMM",		irmd_pmm},
	{"CLOCK",	irmd_clock},
	{"EPORT",	irmd_eport},
	{"CFM",		irmd_cfm},
	{"INTC0",	irmd_intc0},
	{"INTC1",		irmd_intc1}

} ;

#define MODULE_SIZE (int)(sizeof(MODULE)/sizeof(struct module_t))

/********************************************************************/
void
mcf5282_ird (int argc, char **argv)
{
	/*
	 * Display Internal Memory Mapped register contents
	 */
	char *rstr;
	char mstr[20];
	int mi;

	(void)argc;

	display_all = FALSE;

	if (argv[1] == NULL)
	{
		printf("Internal Modules (IPSBAR = %#08X):",IPSBAR_ADDRESS);
		for (mi = 0; mi < MODULE_SIZE; ++mi)
		{
			if (!(mi % 9))
				printf("\n");
			printf("%s ",MODULE[mi].module);
		}
		printf("\n\n");
		return;
	}

	/*
	 * Pick out module name and point to register name
	 */
	mi = 0;
	rstr = argv[1];
	while (*rstr != '.')
	{
		mstr[mi++] = *rstr;
		if (*++rstr == '\0')
		{
			rstr = NULL;
			break;
		}
	}
	mstr[mi] = '\0';
	if (*rstr == '.')
		++rstr;

	/*
	 * Display the module contents
	 */
	for (mi = 0; mi < MODULE_SIZE; ++mi)
	{
		if (strcasecmp(MODULE[mi].module,mstr) == 0)
		{
			if (rstr == NULL)
			{
				display_all = TRUE;
				printf("Module: %s\n",MODULE[mi].module);
			}
			MODULE[mi].func(rstr, TRUE, 0);
			return;
		}
	}

	printf(INVMOD,argv[1]);
}

/********************************************************************/
void
mcf5282_irm (int argc, char **argv)
{
	/*
	 * Modify Internal Memory Mapped register contents
	 */
	uint32 value;
	int success;
	char *rstr;
	char mstr[20];
	int mi;

	(void)argc;

	display_all = FALSE;

	/*
	 * Pick out module name and point to register name
	 */
	mi = 0;
	rstr = argv[1];
	while (*rstr != '.')
	{
		mstr[mi++] = *rstr;
		if (*++rstr == '\0')
		{
			rstr = NULL;
			break;
		}
	}
	mstr[mi] = '\0';
	if (*rstr == '.')
		++rstr;

	/*
	* Get the new value
	*/

	value = get_value(argv[2],&success,16);
	if(success == 0)
	{
		printf(INVALUE,argv[2]);
		return;
	}

	/*
	 * Modify the module contents
	 */
	for (mi = 0; mi < MODULE_SIZE; ++mi)
	{
		if (strcasecmp(MODULE[mi].module,mstr) == 0)
		{
			MODULE[mi].func(rstr, FALSE, value);
			return;
		}
	}

	printf(INVMOD,argv[1]);
}

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

⌨️ 快捷键说明

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