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

📄 syslib.c.bak

📁 miceteck_MPC860_BSP源码,基于VXWORK
💻 BAK
📖 第 1 页 / 共 2 页
字号:
	* SCCR(immrVal) &= ~SCCR_TBS;

	/* un-freeze the Time Base clock */

	* TBSCR(immrVal) = TBSCR_TBE ;

	configured = TRUE;
	}
    }

/******************************************************************************
*
* sysProcNumGet - get the processor number
*
* This routine returns the processor number for the CPU board, which is
* set with sysProcNumSet().
* 
* RETURNS: The processor number for the CPU board.
*
* SEE ALSO: sysProcNumSet()
*/

int sysProcNumGet (void)
    {
    return (sysProcNum);
    }

/******************************************************************************
*
* sysProcNumSet - set the processor number
*
* This routine sets the processor number for the CPU board.  Processor numbers
* should be unique on a single backplane.
*
* Not applicable for the busless 860DAB.
*
* RETURNS: N/A
*
* SEE ALSO: sysProcNumGet()
*
*/

void sysProcNumSet
    (
    int 	procNum			/* processor number */
    )
    {
    sysProcNum = procNum;
    }

/******************************************************************************
*
* sysLocalToBusAdrs - convert a local address to a bus address
*
* This routine gets the VMEbus address that accesses a specified local
* memory address.
*
* Not applicable for the 860DAB
*
* RETURNS: ERROR, always.
*
* SEE ALSO: sysBusToLocalAdrs()
*/
 
STATUS sysLocalToBusAdrs
    (
    int 	adrsSpace,	/* bus address space where busAdrs resides */
    char *	localAdrs,	/* local address to convert */ 
    char **	pBusAdrs	/* where to return bus address */ 
    )
    {
    return (ERROR);
    }

/******************************************************************************
*
* sysBusToLocalAdrs - convert a bus address to a local address
*
* This routine gets the local address that accesses a specified VMEbus
* physical memory address.
*
* Not applicable for the 860DAB
*
* RETURNS: ERROR, always.
*
* SEE ALSO: sysLocalToBusAdrs()
*/

STATUS sysBusToLocalAdrs
    (
     int  	adrsSpace, 	/* bus address space where busAdrs resides */
     char *	busAdrs,   	/* bus address to convert */
     char **	pLocalAdrs 	/* where to return local address */
    )
    {
    return (ERROR);
    }

/******************************************************************************
*
* sysBusTas - test and set a location across the bus
*
* This routine does an atomic test-and-set operation across the backplane.
*
* Not applicable for the 860DAB.
*
* RETURNS: FALSE, always.
*
* SEE ALSO: vxTas()
*/

BOOL sysBusTas
    (
     char *	adrs		/* address to be tested-and-set */
    )
    {
    return (FALSE);
    }

/******************************************************************************
*
* sysBusClearTas - test and clear 
*
* This routine is a null function.
*
* RETURNS: N/A
*/

void sysBusClearTas
    (
     volatile char * address	/* address to be tested-and-cleared */
    )
    {
    } 

/*******************************************************************************
*
* sysCpmEnetDisable - disable the Ethernet controller
*
* This routine is expected to perform any target specific functions required
* to disable the Ethernet controller.  This usually involves disabling the
* Transmit Enable (TENA) signal.
*
* RETURNS: N/A
*/

void sysCpmEnetDisable
    (
    int         unit    /* not used - only slave SCC1 is wired to port */
    )
    {

/*    *PADAT(vxImmrGet()) |= 0x0008;*/
    *PBPAR(vxImmrGet()) |= 0x00020000; /* PB14 as PIO */
    *PBDIR(vxImmrGet()) |= 0x00020000; /* PB14 set as output */
    *PBDIR(vxImmrGet()) &= ~(0x00020000); /* PB14 = 0 to set LED/(PDN#) to power down mode*/
    
    *PBPAR(vxImmrGet()) &= ~(0x1000);    /* set port B -> RTS1 = *TENA */
    }

/*******************************************************************************
*
* sysCpmEnetIntDisable - disable the Ethernet interface interrupt
*
* This routine disable the interrupt for the Ethernet interface specified
* by <unit>.
*
* RETURNS: N/A.
*/

void sysCpmEnetIntDisable
    (
    int		unit
    )
    {
    *CIMR(vxImmrGet()) &= ~CIMR_SCC1;
    }

#ifdef	INCLUDE_CPM
/*******************************************************************************
*
* sysCpmEnetEnable - enable the Ethernet controller
*
* This routine is expected to perform any target specific functions required
* to enable the Ethernet controller.  These functions typically include
* enabling the Transmit Enable signal (TENA) and connecting the transmit
* and receive clocks to the SCC.
*
* RETURNS: OK, or ERROR if the Ethernet controller cannot be enabled.
*/

STATUS sysCpmEnetEnable
    (
    int		unit    /* not used - only slave SCC1 is wired to port */
    )
    {
    int immrVal = vxImmrGet();

    *PAPAR(immrVal) |= 0x0a03; /* *PAPAR(immrVal) |= 0x0303; */
    *PADIR(immrVal) &= ~(0x0a03); /* *PADIR(immrVal) &= ~(0x0303); */

    *PCPAR(immrVal) &= ~(0x0a00); /* *PCPAR(immrVal) &= ~(0x0030);*/
    *PCDIR(immrVal) &= ~(0x0a00); /* *PCDIR(immrVal) &= ~(0x0030);*/
    *PCSO(immrVal)  |= 0x0030;
    *PCSO(immrVal)  &= ~(0x0a00); /* add code */

    *PCDIR(immrVal) |= 0x0a00;
    
    *PCDAT(immrVal) |= 0x0200;
    *PCDAT(immrVal) &= ~(0x0800);

    *SICR(immrVal)  |= 0x2f; /**SICR(immrVal)  |= 0x2c;*/		/* connect SCC1 clocks */
    *SICR(immrVal)  &= ~(0x40);		/* NMSI mode */

    *PADAT(immrVal) &= ~(0x0008);
    
    *PBPAR(immrVal) |= 0x00001000;   /* set port B -> *RTS1 = TENA */
    *PBDIR(immrVal) |= 0x00001000;

    return (OK);
    }

/*******************************************************************************
*
* sysCpmEnetAddrGet - get the hardware Ethernet address
*
* This routine provides the six byte Ethernet hardware address that will be
* used by each individual Ethernet device unit.  This routine must copy
* the six byte address to the space provided by <addr>.
*
* RETURNS: OK, or ERROR if the Ethernet address cannot be returned.
*/

STATUS sysCpmEnetAddrGet
    (
    int		unit,   /* not used - only slave SCC1 is wired to port */
    UINT8 *	addr
    )
    {
    bcopy ((char *) sysCpmEnetAddr, (char *) addr, sizeof (sysCpmEnetAddr));

    return (OK);
    }

/*******************************************************************************
*
* sysCpmEnetCommand - issue a command to the Ethernet interface controller
*
* RETURNS: OK, or ERROR if the Ethernet controller could not be restarted.
*/

STATUS sysCpmEnetCommand
    (
    int		unit,
    UINT16	command
    )
    {
    int	immrVal = vxImmrGet();

    while (*CPCR(immrVal) & CPM_CR_FLG);
        *CPCR(immrVal) = CPM_CR_CHANNEL_SCC1 | command | CPM_CR_FLG;
    while (*CPCR(immrVal) & CPM_CR_FLG);

    return (OK);
    }

/*******************************************************************************
*
* sysCpmEnetIntEnable - enable the Ethernet interface interrupt
*
* This routine enable the interrupt for the Ethernet interface specified
* by <unit>.
*
* RETURNS: N/A.
*/

void sysCpmEnetIntEnable
    (
    int		unit
    )
    {
    *CIMR(vxImmrGet()) |= CIMR_SCC1;
    }

/*******************************************************************************
*
* sysCpmEnetIntClear - clear the Ethernet interface interrupt
*
* This routine clears the interrupt for the Ethernet interface specified
* by <unit>.
*
* RETURNS: N/A.
*/

void sysCpmEnetIntClear
    (
    int		unit
    )
    {
    *CISR(vxImmrGet()) = CISR_SCC1;
    }
#endif	/* INCLUDE_CPM */


#ifdef INCLUDE_MOT_FEC

/*******************************************************************************
*
* sysFecEnetEnable - enable the MII interface of the Fast Ethernet controller
*
* This routine is expected to perform any target specific functions required
* to enable the Ethernet device and the MII interface of the Fast Ethernet 
* controller. These functions include setting the MII-compliant signals on 
* Port D and disabling the IRQ7 signal.
*
* This routine does not enable the 7-wire serial interface.
*
* RETURNS: OK, or ERROR if the Fast Ethernet controller cannot be enabled.
*/

STATUS sysFecEnetEnable
    (
    UINT32	motCpmAddr	/* base address of the on-chip RAM */
    )
    {
    int intLevel = intLock();

    /* enable the Ethernet device for the FEC */

/*    *BCSR4 |= (BCSR4_FETH_RST | BCSR4_FETH_CFG0 
	       | BCSR4_FETH_FDE); 
   *BCSR4 &= ~BCSR4_UUFDIS;		*/

    /* introduce a little delay */

    taskDelay (sysClkRateGet ());

    /* mask IRQ7 off, as it is shared with MII_TX_CLK */

    *SIMASK (motCpmAddr) &= ~SIMASK_IRM7;

    /* also clear any pending interrupt */

    *SIPEND (motCpmAddr) |= SIPEND_IRQ7;

    /* 
     * set the arbitration level for the FEC. Do not enable
     * FEC aggressive mode.
     */

    *SDCR (motCpmAddr) |= SDCR_FAID_BR6;

    /* set Port D to use MII signals */

    *PDPAR (motCpmAddr) = 0x1fff;


    *PDDIR (motCpmAddr) = 0x1fff;

    /**PDDIR (motCpmAddr) = 0x1c58;*/


    intUnlock (intLevel);

    return (OK);
    }

/*******************************************************************************
*
* sysFecEnetDisable - disable MII interface to the Fast Ethernet controller
*
* This routine is expected to perform any target specific functions required
* to disable the Ethernet device and the MII interface to the Fast Ethernet 
* controller.  This involves restoring the default values for all the Port 
* D signals.
*
* RETURNS: OK, always.
*/

STATUS sysFecEnetDisable
    (
    UINT32	motCpmAddr	/* base address of the on-chip RAM */
    )
    {
    int intLevel = intLock();

    /* disable the Ethernet device for the FEC */

/*    *BCSR4 |= BCSR4_UUFDIS;*/

    /* configure all Port D pins as general purpose input pins */

    *PDPAR (motCpmAddr) = 0x0;
    *PDDIR (motCpmAddr) = 0x0;

    intUnlock (intLevel);

    return (OK);
    }

/*******************************************************************************
*
* sysFecEnetAddrGet - get the hardware Ethernet address
*
* This routine provides the six byte Ethernet hardware address that will be
* used by each individual Fast Ethernet device unit.  This routine must copy
* the six byte address to the space provided by <addr>.
*
* RETURNS: OK, or ERROR if the Ethernet address cannot be returned.
*/

STATUS sysFecEnetAddrGet
    (
    UINT32	motCpmAddr,	/* base address of the on-chip RAM */
    UCHAR *	addr		/* where to copy the Ethernet address */
    )
    {
    bcopy ((char *) sysFecEnetAddr, (char *) addr, sizeof (sysFecEnetAddr));

    return (OK);
    }

#endif /* INCLUDE_MOT_FEC */

⌨️ 快捷键说明

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