You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
87 lines
2.0 KiB
C
87 lines
2.0 KiB
C
17 years ago
|
/*
|
||
|
* File: mcf52221_sysinit.c
|
||
|
* Purpose: Power-on Reset configuration of the MCF52221.
|
||
|
*
|
||
|
* Notes:
|
||
|
*
|
||
|
*/
|
||
|
#include "support_common.h"
|
||
|
#include "exceptions.h"
|
||
|
|
||
|
|
||
|
|
||
|
/********************************************************************/
|
||
|
static void pll_init(void)
|
||
|
{
|
||
|
|
||
|
MCF_CLOCK_CCHR =0x05; // The PLL pre divider - 48MHz / 6 = 8MHz
|
||
|
|
||
|
/* The PLL pre-divider affects this!!!
|
||
|
* Multiply 8Mhz reference crystal /CCHR by 10 to acheive system clock of 80Mhz
|
||
|
*/
|
||
|
|
||
|
MCF_CLOCK_SYNCR = MCF_CLOCK_SYNCR_MFD(3) | MCF_CLOCK_SYNCR_CLKSRC| MCF_CLOCK_SYNCR_PLLMODE | MCF_CLOCK_SYNCR_PLLEN ;
|
||
|
|
||
|
while (!(MCF_CLOCK_SYNSR & MCF_CLOCK_SYNSR_LOCK))
|
||
|
{
|
||
|
}
|
||
|
}
|
||
|
/********************************************************************/
|
||
|
static void scm_init(void)
|
||
|
{
|
||
|
/*
|
||
|
* Enable on-chip modules to access internal SRAM
|
||
|
*/
|
||
|
MCF_SCM_RAMBAR = (0
|
||
|
| MCF_SCM_RAMBAR_BA(RAMBAR_ADDRESS)
|
||
|
| MCF_SCM_RAMBAR_BDE);
|
||
|
}
|
||
|
|
||
|
/********************************************************************/
|
||
|
|
||
|
/*
|
||
|
* Out of reset, the low-level assembly code calls this routine to
|
||
|
* initialize the mcf5206e for this board. A temporary stack has been
|
||
|
* setup in the internal SRAM, and the stack pointer will be changed
|
||
|
* to point to DRAM once this routine returns.
|
||
|
*/
|
||
|
void __initialize_hardware(void)
|
||
|
{
|
||
|
/*******************************************************
|
||
|
* Out of reset, the low-level assembly code calls this
|
||
|
* routine to initialize the MCF52221 modules for the
|
||
|
* M522223EVB board.
|
||
|
********************************************************/
|
||
|
|
||
|
|
||
|
asm
|
||
|
{
|
||
|
/* Initialize IPSBAR */
|
||
|
move.l #__IPSBAR,d0
|
||
|
andi.l #0xC0000000,d0 // need to mask
|
||
|
add.l #0x1,d0
|
||
|
move.l d0,0x40000000
|
||
|
|
||
|
|
||
|
|
||
|
/* Initialize FLASHBAR */
|
||
|
move.l #__FLASHBAR,d0
|
||
|
andi.l #0xFFF80000,d0 // need to mask
|
||
|
add.l #0x61,d0
|
||
|
movec d0,FLASHBAR
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
/* Set real time clock freq */
|
||
|
MCF_CLOCK_RTCDR = 48000000;
|
||
|
|
||
|
pll_init();
|
||
|
scm_init();
|
||
|
|
||
|
initialize_exceptions();
|
||
|
}
|
||
|
|
||
|
|
||
|
|