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

📄 mcf532x_hi.c

📁 motorola 针对coldfire 5275 评估板的Dbug bootloader源程序
💻 C
📖 第 1 页 / 共 4 页
字号:
/*
 * File:        MCF_hi.c
 * Purpose:     Register display/modify routines for MCF modules.
 *
 * Notes:
 *
 */

#include "src/include/dbug.h"
#include "src/uif/cpu.h"

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

/*
 * CPU name string and source code version for display at boot-up.
 */
const char CPU_STR[] = "ColdFire MCF532x";

const int  CPU_VER_MAJOR   = 1;
const char CPU_VER_MINOR   = 'a';

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

static const char FORMAT8[]  = "%15s : %02X\n";
static const char FORMAT16[] = "%15s : %04X\n";
static const char FORMAT32[] = "%15s : %08X\n";
static const char INVMOD[] = "Error: Invalid Module: %s\n";

#define IRMD(MOD,REG,SIZE)  \
if (regread)                                            \
{              	                                         \
    if (( reg == NULL ) || display_all || (strcasecmp(#REG,reg) == 0))     \
    {                                                   \
        rdata = MCF_ ## MOD ## _ ## REG;                \
        printf(FORMAT ## SIZE, #REG, rdata);            \
                                                        \
        pause(&displayed);                              \
                                                        \
        if (!display_all) return;                       \
    }                                                   \
}                                                       \
else                                                    \
{                                                       \
    if (strcasecmp(#REG,reg) == 0)                      \
    {                                                   \
        MCF_ ## MOD ## _ ## REG = (uint ## SIZE) value; \
        return;                                         \
    }                                                   \
}

static int display_all;
static int displayed;
static uint32 rdata;

/********************************************************************/
static void
irmd_scm (char *reg, int regread, uint32 value)
{
    IRMD(SCM,  MPR0,  	32);
    IRMD(SCM,  MPR1,  	32);
    IRMD(SCM,  BMT0,  	32);
    IRMD(SCM,  BMT1,  	32);
	IRMD(SCM,  PACRA,  	32);
    IRMD(SCM,  PACRB,  	32);
    IRMD(SCM,  PACRC,  	32);
    IRMD(SCM,  PACRD,  	32);
    IRMD(SCM,  PACRE,  	32);
    IRMD(SCM,  PACRF,  	32);
    IRMD(SCM,  PACRG,  	32);
    IRMD(SCM,  PACRH,  	32);
    IRMD(SCM,  CWCR,  	32);
    IRMD(SCM,  CWSR,  	32);
    IRMD(SCM,  CWIR,  	32);
    IRMD(SCM,  BCR,  	32);    
    IRMD(SCM,  CFADR,  	32);
    IRMD(SCM,  CFIER,  	32);
    IRMD(SCM,  CFLOC,  	32);
    IRMD(SCM,  CFATR,  	32);
    IRMD(SCM,  CFDTRH, 	32);

    if (!display_all)
        printf(INVREG,reg);
    
}

/********************************************************************/
static void
irmd_fbcs (char *reg, int regread, uint32 value)
{
    IRMD(FBCS, CSAR(0), 32);
    IRMD(FBCS, CSMR(0), 32);
    IRMD(FBCS, CSCR(0), 32);
    IRMD(FBCS, CSAR(1), 32);
    IRMD(FBCS, CSMR(1), 32);
    IRMD(FBCS, CSCR(1), 32);
    IRMD(FBCS, CSAR(2), 32);
    IRMD(FBCS, CSMR(2), 32);
    IRMD(FBCS, CSCR(2), 32);
    IRMD(FBCS, CSAR(3), 32);
    IRMD(FBCS, CSMR(3), 32);
    IRMD(FBCS, CSCR(3), 32);
    IRMD(FBCS, CSAR(4), 32);
    IRMD(FBCS, CSMR(4), 32);
    IRMD(FBCS, CSCR(4), 32);
    IRMD(FBCS, CSAR(5), 32);
    IRMD(FBCS, CSMR(5), 32);
    IRMD(FBCS, CSCR(5), 32);

    if (!display_all)
        printf(INVREG,reg);
}

/********************************************************************/
static void
irmd_fec (char *reg, int regread, uint32 value)
{
    IRMD(FEC,   EIR,   32);
    IRMD(FEC,   EIMR,  32);
    IRMD(FEC,   RDAR,  32);
    IRMD(FEC,   TDAR,  32);
    IRMD(FEC,   ECR,   32);
    IRMD(FEC,   MMFR,  32);
    IRMD(FEC,   MSCR,  32);
    IRMD(FEC,   MIBC,  32);
    IRMD(FEC,   RCR,   32);
    IRMD(FEC,   TCR,   32);
    IRMD(FEC,   PALR,  32);
    IRMD(FEC,   PAUR,  32);
    IRMD(FEC,   OPD,   32);
    IRMD(FEC,   IAUR,  32);
    IRMD(FEC,   IALR,  32);
    IRMD(FEC,   GAUR,  32);
    IRMD(FEC,   GALR,  32);
    IRMD(FEC,   TFWR,  32);
    IRMD(FEC,   FRBR,  32);
    IRMD(FEC,   FRSR,  32);
    IRMD(FEC,   ERDSR, 32);
    IRMD(FEC,   ETDSR, 32);
    IRMD(FEC,   EMRBR, 32);
    
    if (!display_all)
        printf(INVREG,reg);
}

/********************************************************************/
static void
irmd_edma (char *reg, int regread, uint32 value)
{

    IRMD(EDMA,  CR,   32);
    IRMD(EDMA,  ES,   32);
    IRMD(EDMA,  ERQ,  16);
    IRMD(EDMA,  EEI,  16);
    IRMD(EDMA,  SERQ,  8);
    IRMD(EDMA,  CERQ,  8);
    IRMD(EDMA,  SEEI,  8);
    IRMD(EDMA,  CEEI,  8);
    IRMD(EDMA,  CINT,  8);
    IRMD(EDMA,  CERR,  8);
    IRMD(EDMA,  SSRT,  8);
    IRMD(EDMA,  CDNE,  8);
    IRMD(EDMA,  INT,   16);
    IRMD(EDMA,  ERR,   16);
    IRMD(EDMA,  DCHPRI0,8);
    IRMD(EDMA,  DCHPRI1,8);
    IRMD(EDMA,  DCHPRI2,8);
    IRMD(EDMA,  DCHPRI3,8);
    IRMD(EDMA,  DCHPRI4,8);
    IRMD(EDMA,  DCHPRI5,8);
    IRMD(EDMA,  DCHPRI6,8);
    IRMD(EDMA,  DCHPRI7,8);
    IRMD(EDMA,  DCHPRI8,8);
    IRMD(EDMA,  DCHPRI9,8);
    IRMD(EDMA,  DCHPRI10,8);
    IRMD(EDMA,  DCHPRI11,8);
    IRMD(EDMA,  DCHPRI12,8);
    IRMD(EDMA,  DCHPRI13,8);
    IRMD(EDMA,  DCHPRI14,8);
    IRMD(EDMA,  DCHPRI15,8);
    
    if (!display_all)
        printf(INVREG,reg);
}

/********************************************************************/
static void
irmd_edma_tcd0 (char *reg, int regread, uint32 value)
{

    IRMD(EDMA,  TCD0_SADDR,   32);
    IRMD(EDMA,  TCD0_ATTR,    16);
    IRMD(EDMA,  TCD0_SOFF,    16);
    IRMD(EDMA,  TCD0_NBYTES,  32);
    IRMD(EDMA,  TCD0_SLAST,   32);
    IRMD(EDMA,  TCD0_DADDR,   32);
    IRMD(EDMA,  TCD0_CITER,   16);
    IRMD(EDMA,  TCD0_DOFF,    16);
    IRMD(EDMA,  TCD0_DLAST_SGA,   32);
    IRMD(EDMA,  TCD0_BITER,   16);
    IRMD(EDMA,  TCD0_CSR,     16);

    if (!display_all)
        printf(INVREG,reg);
}
/********************************************************************/
static void
irmd_edma_tcd1 (char *reg, int regread, uint32 value)
{

    IRMD(EDMA,  TCD1_SADDR,   32);
    IRMD(EDMA,  TCD1_ATTR,    16);
    IRMD(EDMA,  TCD1_SOFF,    16);
    IRMD(EDMA,  TCD1_NBYTES,  32);
    IRMD(EDMA,  TCD1_SLAST,   32);
    IRMD(EDMA,  TCD1_DADDR,   32);
    IRMD(EDMA,  TCD1_CITER,   16);
    IRMD(EDMA,  TCD1_DOFF,    16);
    IRMD(EDMA,  TCD1_DLAST_SGA,   32);
    IRMD(EDMA,  TCD1_BITER,   16);
    IRMD(EDMA,  TCD1_CSR,     16);

    if (!display_all)
        printf(INVREG,reg);
}
/********************************************************************/
static void
irmd_edma_tcd2 (char *reg, int regread, uint32 value)
{

    IRMD(EDMA,  TCD2_SADDR,   32);
    IRMD(EDMA,  TCD2_ATTR,    16);
    IRMD(EDMA,  TCD2_SOFF,    16);
    IRMD(EDMA,  TCD2_NBYTES,  32);
    IRMD(EDMA,  TCD2_SLAST,   32);
    IRMD(EDMA,  TCD2_DADDR,   32);
    IRMD(EDMA,  TCD2_CITER,   16);
    IRMD(EDMA,  TCD2_DOFF,    16);
    IRMD(EDMA,  TCD2_DLAST_SGA,   32);
    IRMD(EDMA,  TCD2_BITER,   16);
    IRMD(EDMA,  TCD2_CSR,     16);

    if (!display_all)
        printf(INVREG,reg);
}
/********************************************************************/
static void
irmd_edma_tcd3 (char *reg, int regread, uint32 value)
{

    IRMD(EDMA,  TCD3_SADDR,   32);
    IRMD(EDMA,  TCD3_ATTR,    16);
    IRMD(EDMA,  TCD3_SOFF,    16);
    IRMD(EDMA,  TCD3_NBYTES,  32);
    IRMD(EDMA,  TCD3_SLAST,   32);
    IRMD(EDMA,  TCD3_DADDR,   32);
    IRMD(EDMA,  TCD3_CITER,   16);
    IRMD(EDMA,  TCD3_DOFF,    16);
    IRMD(EDMA,  TCD3_DLAST_SGA,   32);
    IRMD(EDMA,  TCD3_BITER,   16);
    IRMD(EDMA,  TCD3_CSR,     16);

    if (!display_all)
        printf(INVREG,reg);
}
/********************************************************************/
static void
irmd_edma_tcd4 (char *reg, int regread, uint32 value)
{

    IRMD(EDMA,  TCD4_SADDR,   32);
    IRMD(EDMA,  TCD4_ATTR,    16);
    IRMD(EDMA,  TCD4_SOFF,    16);
    IRMD(EDMA,  TCD4_NBYTES,  32);
    IRMD(EDMA,  TCD4_SLAST,   32);
    IRMD(EDMA,  TCD4_DADDR,   32);
    IRMD(EDMA,  TCD4_CITER,   16);
    IRMD(EDMA,  TCD4_DOFF,    16);
    IRMD(EDMA,  TCD4_DLAST_SGA,   32);
    IRMD(EDMA,  TCD4_BITER,   16);
    IRMD(EDMA,  TCD4_CSR,     16);

    if (!display_all)
        printf(INVREG,reg);
}
/********************************************************************/
static void
irmd_edma_tcd5 (char *reg, int regread, uint32 value)
{

    IRMD(EDMA,  TCD5_SADDR,   32);
    IRMD(EDMA,  TCD5_ATTR,    16);
    IRMD(EDMA,  TCD5_SOFF,    16);
    IRMD(EDMA,  TCD5_NBYTES,  32);
    IRMD(EDMA,  TCD5_SLAST,   32);
    IRMD(EDMA,  TCD5_DADDR,   32);
    IRMD(EDMA,  TCD5_CITER,   16);
    IRMD(EDMA,  TCD5_DOFF,    16);
    IRMD(EDMA,  TCD5_DLAST_SGA,   32);
    IRMD(EDMA,  TCD5_BITER,   16);
    IRMD(EDMA,  TCD5_CSR,     16);

    if (!display_all)
        printf(INVREG,reg);
}
/********************************************************************/
static void
irmd_edma_tcd6 (char *reg, int regread, uint32 value)
{

    IRMD(EDMA,  TCD6_SADDR,   32);
    IRMD(EDMA,  TCD6_ATTR,    16);
    IRMD(EDMA,  TCD6_SOFF,    16);
    IRMD(EDMA,  TCD6_NBYTES,  32);
    IRMD(EDMA,  TCD6_SLAST,   32);
    IRMD(EDMA,  TCD6_DADDR,   32);
    IRMD(EDMA,  TCD6_CITER,   16);
    IRMD(EDMA,  TCD6_DOFF,    16);
    IRMD(EDMA,  TCD6_DLAST_SGA,   32);
    IRMD(EDMA,  TCD6_BITER,   16);
    IRMD(EDMA,  TCD6_CSR,     16);

    if (!display_all)
        printf(INVREG,reg);
}
/********************************************************************/
static void
irmd_edma_tcd7 (char *reg, int regread, uint32 value)
{

    IRMD(EDMA,  TCD7_SADDR,   32);
    IRMD(EDMA,  TCD7_ATTR,    16);
    IRMD(EDMA,  TCD7_SOFF,    16);
    IRMD(EDMA,  TCD7_NBYTES,  32);
    IRMD(EDMA,  TCD7_SLAST,   32);
    IRMD(EDMA,  TCD7_DADDR,   32);
    IRMD(EDMA,  TCD7_CITER,   16);
    IRMD(EDMA,  TCD7_DOFF,    16);
    IRMD(EDMA,  TCD7_DLAST_SGA,   32);
    IRMD(EDMA,  TCD7_BITER,   16);
    IRMD(EDMA,  TCD7_CSR,     16);

    if (!display_all)
        printf(INVREG,reg);
}
/********************************************************************/
static void
irmd_edma_tcd8 (char *reg, int regread, uint32 value)
{

    IRMD(EDMA,  TCD8_SADDR,   32);
    IRMD(EDMA,  TCD8_ATTR,    16);
    IRMD(EDMA,  TCD8_SOFF,    16);
    IRMD(EDMA,  TCD8_NBYTES,  32);
    IRMD(EDMA,  TCD8_SLAST,   32);
    IRMD(EDMA,  TCD8_DADDR,   32);
    IRMD(EDMA,  TCD8_CITER,   16);
    IRMD(EDMA,  TCD8_DOFF,    16);
    IRMD(EDMA,  TCD8_DLAST_SGA,   32);
    IRMD(EDMA,  TCD8_BITER,   16);
    IRMD(EDMA,  TCD8_CSR,     16);

    if (!display_all)
        printf(INVREG,reg);
}
/********************************************************************/
static void
irmd_edma_tcd9 (char *reg, int regread, uint32 value)
{

    IRMD(EDMA,  TCD9_SADDR,   32);
    IRMD(EDMA,  TCD9_ATTR,    16);
    IRMD(EDMA,  TCD9_SOFF,    16);
    IRMD(EDMA,  TCD9_NBYTES,  32);
    IRMD(EDMA,  TCD9_SLAST,   32);
    IRMD(EDMA,  TCD9_DADDR,   32);
    IRMD(EDMA,  TCD9_CITER,   16);
    IRMD(EDMA,  TCD9_DOFF,    16);
    IRMD(EDMA,  TCD9_DLAST_SGA,   32);
    IRMD(EDMA,  TCD9_BITER,   16);
    IRMD(EDMA,  TCD9_CSR,     16);

    if (!display_all)
        printf(INVREG,reg);
}
/********************************************************************/
static void
irmd_edma_tcd10 (char *reg, int regread, uint32 value)
{

    IRMD(EDMA,  TCD10_SADDR,   32);
    IRMD(EDMA,  TCD10_ATTR,    16);
    IRMD(EDMA,  TCD10_SOFF,    16);
    IRMD(EDMA,  TCD10_NBYTES,  32);
    IRMD(EDMA,  TCD10_SLAST,   32);
    IRMD(EDMA,  TCD10_DADDR,   32);
    IRMD(EDMA,  TCD10_CITER,   16);
    IRMD(EDMA,  TCD10_DOFF,    16);
    IRMD(EDMA,  TCD10_DLAST_SGA,   32);
    IRMD(EDMA,  TCD10_BITER,   16);
    IRMD(EDMA,  TCD10_CSR,     16);

    if (!display_all)
        printf(INVREG,reg);
}
/********************************************************************/
static void
irmd_edma_tcd11 (char *reg, int regread, uint32 value)
{

    IRMD(EDMA,  TCD11_SADDR,   32);
    IRMD(EDMA,  TCD11_ATTR,    16);

⌨️ 快捷键说明

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