mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-09-01 20:03:50 -04:00
Add MCF52259 demo.
This commit is contained in:
parent
8981a8539a
commit
fe73d24184
60 changed files with 10188 additions and 0 deletions
153
Demo/ColdFire_MCF52259_CodeWarrior/cpu/mcf5225x_lo.s
Normal file
153
Demo/ColdFire_MCF52259_CodeWarrior/cpu/mcf5225x_lo.s
Normal file
|
@ -0,0 +1,153 @@
|
|||
/*
|
||||
* File: mcf5225x_lo.s
|
||||
* Purpose: Low-level routines for the MCF5225x.
|
||||
*
|
||||
* Notes:
|
||||
*
|
||||
* License: All software covered by license agreement in -
|
||||
* docs/Freescale_Software_License.pdf
|
||||
*/
|
||||
|
||||
#define mcf5225x_init _mcf5225x_init
|
||||
#define common_startup _common_startup
|
||||
#define cpu_startup _cpu_startup
|
||||
#define main _main
|
||||
#define __IPSBAR ___IPSBAR
|
||||
#define __SRAM ___SRAM
|
||||
#define __FLASH ___FLASH
|
||||
#define __SP_INIT ___SP_INIT
|
||||
|
||||
.extern __IPSBAR
|
||||
.extern __SRAM
|
||||
.extern __FLASH
|
||||
.extern __SP_INIT
|
||||
.extern mcf5225x_init
|
||||
.extern common_startup
|
||||
.extern cpu_startup
|
||||
.extern main
|
||||
|
||||
.global asm_startmeup
|
||||
.global _asm_startmeup
|
||||
.global d0_reset
|
||||
.global _d0_reset
|
||||
.global d1_reset
|
||||
.global _d1_reset
|
||||
|
||||
.data
|
||||
|
||||
d0_reset:
|
||||
_d0_reset: .long 0
|
||||
d1_reset:
|
||||
_d1_reset: .long 0
|
||||
|
||||
.text
|
||||
|
||||
/********************************************************************
|
||||
*
|
||||
* This is the main entry point upon hard reset. The memory map is
|
||||
* setup based on linker file definitions, then the higher level
|
||||
* system initialization routine is called. Finally, we jump to the
|
||||
* "main" process.
|
||||
*/
|
||||
asm_startmeup:
|
||||
_asm_startmeup:
|
||||
|
||||
move.w #0x2700,sr
|
||||
|
||||
/* Save off reset values of D0 and D1 */
|
||||
move.l d0,d6
|
||||
move.l d1,d7
|
||||
|
||||
/* Initialize RAMBAR1: locate SRAM and validate it */
|
||||
move.l #__SRAM,d0
|
||||
andi.l #0xFFFF0000,d0
|
||||
add.l #0x21,d0
|
||||
movec d0,RAMBAR1
|
||||
|
||||
/* Locate Stack Pointer */
|
||||
move.l #__SP_INIT,sp
|
||||
|
||||
/* Initialize IPSBAR */
|
||||
move.l #__IPSBAR,d0
|
||||
add.l #0x1,d0
|
||||
move.l d0,0x40000000
|
||||
|
||||
/* Initialize FLASHBAR */
|
||||
move.l #__FLASH,d0
|
||||
cmp.l #0x00000000,d0
|
||||
bne change_flashbar
|
||||
add.l #0x61,d0
|
||||
movec d0,RAMBAR0
|
||||
|
||||
_continue_startup:
|
||||
|
||||
/* Locate Stack Pointer */
|
||||
move.l #__SP_INIT,sp
|
||||
|
||||
/* Initialize the system */
|
||||
jsr mcf5225x_init
|
||||
|
||||
/* Common startup code */
|
||||
//jsr common_startup
|
||||
|
||||
/* Save off intial D0 and D1 to RAM */
|
||||
move.l d6,d0_reset
|
||||
move.l d7,d1_reset
|
||||
|
||||
/* CPU specific startup code */
|
||||
//jsr cpu_startup
|
||||
|
||||
/* Jump to the main process */
|
||||
jsr main
|
||||
|
||||
bra .
|
||||
nop
|
||||
nop
|
||||
halt
|
||||
|
||||
change_flashbar:
|
||||
/*
|
||||
* The following sequence is used to set FLASHBAR. Since we may
|
||||
* be executing from Flash, we must put the routine into SRAM for
|
||||
* execution and then jump back to Flash using the new address.
|
||||
*
|
||||
* The following instructions are coded into the SRAM:
|
||||
*
|
||||
* move.l #(__FLASH + 0x21),d0
|
||||
* movec d0, RAMBAR0
|
||||
* jmp _continue_startup
|
||||
*
|
||||
* An arbitrary SRAM address is chosen until the real address
|
||||
* can be loaded.
|
||||
*
|
||||
* This routine is not necessary if the default Flash address
|
||||
* (0x00000000) is used.
|
||||
*
|
||||
* If running in SRAM, change_flashbar should not be executed
|
||||
*/
|
||||
|
||||
move.l #__SRAM,a0
|
||||
|
||||
/* Code "move.l #(__FLASH + 0x21),d0" into SRAM */
|
||||
move.w #0x203C,d0
|
||||
move.w d0,(a0)+
|
||||
move.l #__FLASH,d0
|
||||
add.l #0x21,d0
|
||||
move.l d0,(a0)+
|
||||
|
||||
/* Code "movec d0,FLASHBAR" into SRAM */
|
||||
move.l #0x4e7b0C04,d0
|
||||
move.l d0,(a0)+
|
||||
|
||||
/* Code "jmp _continue_startup" into SRAM */
|
||||
move.w #0x4EF9,d0
|
||||
move.w d0,(a0)+
|
||||
move.l #_continue_startup,d0
|
||||
move.l d0,(a0)+
|
||||
|
||||
/* Jump to code segment in internal SRAM */
|
||||
jmp __SRAM
|
||||
|
||||
/********************************************************************/
|
||||
|
||||
.end
|
Loading…
Add table
Add a link
Reference in a new issue