diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2013-07-02 10:37:13 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2013-07-15 11:57:13 +0200 |
commit | c8d78ee5101b5ed0b13c3ed9b21ebbca3720ac91 (patch) | |
tree | d819559716f094b59094a681cb1db8f2c50333a2 /c/src/lib/libbsp/powerpc/mpc55xxevb | |
parent | bsp/rtl22xx: Use IRQ extensions API (diff) | |
download | rtems-c8d78ee5101b5ed0b13c3ed9b21ebbca3720ac91.tar.bz2 |
bsp/mpc55xx: Add MPC5668G support
Diffstat (limited to 'c/src/lib/libbsp/powerpc/mpc55xxevb')
10 files changed, 66 insertions, 7 deletions
diff --git a/c/src/lib/libbsp/powerpc/mpc55xxevb/Makefile.am b/c/src/lib/libbsp/powerpc/mpc55xxevb/Makefile.am index d98d0f6b59..ad1f92e9cb 100644 --- a/c/src/lib/libbsp/powerpc/mpc55xxevb/Makefile.am +++ b/c/src/lib/libbsp/powerpc/mpc55xxevb/Makefile.am @@ -30,6 +30,7 @@ dist_project_lib_DATA += startup/linkcmds.mpc5643l_dpu dist_project_lib_DATA += startup/linkcmds.mpc5674fevb dist_project_lib_DATA += startup/linkcmds.mpc5674fevb_spe dist_project_lib_DATA += startup/linkcmds.phycore_mpc5554 +dist_project_lib_DATA += startup/linkcmds.mpc5668g dist_project_lib_DATA += startup/linkcmds.mpc5674f_ecu508 dist_project_lib_DATA += startup/linkcmds.mpc5674f_ecu508_boot dist_project_lib_DATA += startup/linkcmds.mpc5674f_ecu508_app diff --git a/c/src/lib/libbsp/powerpc/mpc55xxevb/clock/clock-config.c b/c/src/lib/libbsp/powerpc/mpc55xxevb/clock/clock-config.c index 5134d80d28..48c592245b 100644 --- a/c/src/lib/libbsp/powerpc/mpc55xxevb/clock/clock-config.c +++ b/c/src/lib/libbsp/powerpc/mpc55xxevb/clock/clock-config.c @@ -7,10 +7,10 @@ */ /* - * Copyright (c) 2009-2011 embedded brains GmbH. All rights reserved. + * Copyright (c) 2009-2013 embedded brains GmbH. All rights reserved. * * embedded brains GmbH - * Obere Lagerstr. 30 + * Dornierstr. 4 * 82178 Puchheim * Germany * <rtems@embedded-brains.de> @@ -25,6 +25,8 @@ #include <mpc55xx/regs.h> +void Clock_isr(void *arg); + static uint64_t mpc55xx_clock_factor; #if defined(MPC55XX_CLOCK_EMIOS_CHANNEL) diff --git a/c/src/lib/libbsp/powerpc/mpc55xxevb/configure.ac b/c/src/lib/libbsp/powerpc/mpc55xxevb/configure.ac index e9bd974d56..b217fb72dd 100644 --- a/c/src/lib/libbsp/powerpc/mpc55xxevb/configure.ac +++ b/c/src/lib/libbsp/powerpc/mpc55xxevb/configure.ac @@ -67,6 +67,7 @@ RTEMS_BSPOPTS_HELP([MPC55XX_ESCI_USE_INTERRUPTS], RTEMS_BSPOPTS_SET([MPC55XX_REFERENCE_CLOCK],[gwlcfm],[40000000]) RTEMS_BSPOPTS_SET([MPC55XX_REFERENCE_CLOCK],[mpc5643l_evb*],[40000000]) +RTEMS_BSPOPTS_SET([MPC55XX_REFERENCE_CLOCK],[mpc5668g*],[25000000]) RTEMS_BSPOPTS_SET([MPC55XX_REFERENCE_CLOCK],[mpc5674f*],[40000000]) RTEMS_BSPOPTS_SET([MPC55XX_REFERENCE_CLOCK],[*],[8000000]) RTEMS_BSPOPTS_HELP([MPC55XX_REFERENCE_CLOCK], @@ -74,18 +75,21 @@ RTEMS_BSPOPTS_HELP([MPC55XX_REFERENCE_CLOCK], for clock generation]) RTEMS_BSPOPTS_SET([MPC55XX_SYSTEM_CLOCK],[gwlcfm],[66000000]) +RTEMS_BSPOPTS_SET([MPC55XX_SYSTEM_CLOCK],[mpc5668g*],[116000000]) RTEMS_BSPOPTS_SET([MPC55XX_SYSTEM_CLOCK],[mpc5674f*],[264000000]) RTEMS_BSPOPTS_SET([MPC55XX_SYSTEM_CLOCK],[*] ,[128000000]) RTEMS_BSPOPTS_HELP([MPC55XX_SYSTEM_CLOCK], [The system clock frequency in Hz.]) RTEMS_BSPOPTS_SET([MPC55XX_FMPLL_PREDIV],[gwlcfm],[10]) +RTEMS_BSPOPTS_SET([MPC55XX_FMPLL_PREDIV],[mpc5668g*],[6]) RTEMS_BSPOPTS_SET([MPC55XX_FMPLL_PREDIV],[mpc5674f*],[5]) RTEMS_BSPOPTS_SET([MPC55XX_FMPLL_PREDIV],[*] ,[1]) RTEMS_BSPOPTS_HELP([MPC55XX_FMPLL_PREDIV], [Must be defined to be the PLL predivider factor for clock generation]) RTEMS_BSPOPTS_SET([MPC55XX_FMPLL_MFD],[gwlcfm],[99]) +RTEMS_BSPOPTS_SET([MPC55XX_FMPLL_MFD],[mpc5668g*],[111]) RTEMS_BSPOPTS_SET([MPC55XX_FMPLL_MFD],[mpc5674f*],[66]) RTEMS_BSPOPTS_SET([MPC55XX_FMPLL_MFD],[*] ,[12]) RTEMS_BSPOPTS_HELP([MPC55XX_FMPLL_MFD], @@ -109,6 +113,7 @@ RTEMS_BSPOPTS_HELP([MPC55XX_EMIOS_PRESCALER], RTEMS_BSPOPTS_SET([MPC55XX_NULL_POINTER_PROTECTION],[mpc5566*],[1]) RTEMS_BSPOPTS_SET([MPC55XX_NULL_POINTER_PROTECTION],[mpc5674f*],[1]) +RTEMS_BSPOPTS_SET([MPC55XX_NULL_POINTER_PROTECTION],[*],[]) RTEMS_BSPOPTS_HELP([MPC55XX_NULL_POINTER_PROTECTION], [enable NULL pointer protection]) @@ -147,12 +152,14 @@ RTEMS_BSPOPTS_HELP([SMSC9218I_IRQ_PIN], [IRQ pin for SMSC9218I network interface]) RTEMS_BSPOPTS_SET([MPC55XX_CLOCK_EMIOS_CHANNEL],[mpc5643l*],[]) +RTEMS_BSPOPTS_SET([MPC55XX_CLOCK_EMIOS_CHANNEL],[mpc5668g*],[]) RTEMS_BSPOPTS_SET([MPC55XX_CLOCK_EMIOS_CHANNEL],[mpc5674f*],[31]) RTEMS_BSPOPTS_SET([MPC55XX_CLOCK_EMIOS_CHANNEL],[*],[23]) RTEMS_BSPOPTS_HELP([MPC55XX_CLOCK_EMIOS_CHANNEL], [selects the eMIOS channel for the RTEMS system tick (the default is the last channel)]) RTEMS_BSPOPTS_SET([MPC55XX_CLOCK_PIT_CHANNEL],[mpc5643l*],[3]) +RTEMS_BSPOPTS_SET([MPC55XX_CLOCK_PIT_CHANNEL],[mpc5668g*],[8]) RTEMS_BSPOPTS_SET([MPC55XX_CLOCK_PIT_CHANNEL],[*],[]) RTEMS_BSPOPTS_HELP([MPC55XX_CLOCK_PIT_CHANNEL], [selects the PIT channel for the RTEMS system tick (the default is the last channel)]) @@ -160,6 +167,7 @@ RTEMS_BSPOPTS_HELP([MPC55XX_CLOCK_PIT_CHANNEL], RTEMS_BSPOPTS_SET([MPC55XX_CHIP_TYPE],[gwlcfm],[5516]) RTEMS_BSPOPTS_SET([MPC55XX_CHIP_TYPE],[mpc5566*],[5566]) RTEMS_BSPOPTS_SET([MPC55XX_CHIP_TYPE],[mpc5643l*],[5643]) +RTEMS_BSPOPTS_SET([MPC55XX_CHIP_TYPE],[mpc5668g*],[5668]) RTEMS_BSPOPTS_SET([MPC55XX_CHIP_TYPE],[mpc5674f*],[5674]) RTEMS_BSPOPTS_SET([MPC55XX_CHIP_TYPE],[*],[5554]) RTEMS_BSPOPTS_HELP([MPC55XX_CHIP_TYPE], diff --git a/c/src/lib/libbsp/powerpc/mpc55xxevb/make/custom/mpc5668g.cfg b/c/src/lib/libbsp/powerpc/mpc55xxevb/make/custom/mpc5668g.cfg new file mode 100644 index 0000000000..b0cb600143 --- /dev/null +++ b/c/src/lib/libbsp/powerpc/mpc55xxevb/make/custom/mpc5668g.cfg @@ -0,0 +1 @@ +include $(RTEMS_ROOT)/make/custom/mpc55xx.inc diff --git a/c/src/lib/libbsp/powerpc/mpc55xxevb/preinstall.am b/c/src/lib/libbsp/powerpc/mpc55xxevb/preinstall.am index ae8b1f3056..50714c31d7 100644 --- a/c/src/lib/libbsp/powerpc/mpc55xxevb/preinstall.am +++ b/c/src/lib/libbsp/powerpc/mpc55xxevb/preinstall.am @@ -93,6 +93,10 @@ $(PROJECT_LIB)/linkcmds.phycore_mpc5554: startup/linkcmds.phycore_mpc5554 $(PROJ $(INSTALL_DATA) $< $(PROJECT_LIB)/linkcmds.phycore_mpc5554 PREINSTALL_FILES += $(PROJECT_LIB)/linkcmds.phycore_mpc5554 +$(PROJECT_LIB)/linkcmds.mpc5668g: startup/linkcmds.mpc5668g $(PROJECT_LIB)/$(dirstamp) + $(INSTALL_DATA) $< $(PROJECT_LIB)/linkcmds.mpc5668g +PREINSTALL_FILES += $(PROJECT_LIB)/linkcmds.mpc5668g + $(PROJECT_LIB)/linkcmds.mpc5674f_ecu508: startup/linkcmds.mpc5674f_ecu508 $(PROJECT_LIB)/$(dirstamp) $(INSTALL_DATA) $< $(PROJECT_LIB)/linkcmds.mpc5674f_ecu508 PREINSTALL_FILES += $(PROJECT_LIB)/linkcmds.mpc5674f_ecu508 diff --git a/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/bspstart.c b/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/bspstart.c index 32899ee342..2d7debef1d 100644 --- a/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/bspstart.c +++ b/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/bspstart.c @@ -118,7 +118,10 @@ void bsp_start(void) /* Initialize interrupts */ bsp_interrupt_initialize(); - mpc55xx_edma_init(); + #if MPC55XX_CHIP_FAMILY != 566 + mpc55xx_edma_init(); + #endif + #ifdef MPC55XX_EMIOS_PRESCALER mpc55xx_emios_initialize(MPC55XX_EMIOS_PRESCALER); #endif diff --git a/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/linkcmds.mpc5668g b/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/linkcmds.mpc5668g new file mode 100644 index 0000000000..6c8e5a64f1 --- /dev/null +++ b/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/linkcmds.mpc5668g @@ -0,0 +1,29 @@ +MEMORY { + ROM : ORIGIN = 0x0, LENGTH = 2M + RAM : ORIGIN = 0x40000000, LENGTH = 256K - 16k + NOCACHE : ORIGIN = 0x4003c000, LENGTH = 16k + EMPTY : ORIGIN = 0x0, LENGTH = 0 +} + +REGION_ALIAS ("RAM_EXT", RAM); + +REGION_ALIAS ("REGION_START", ROM); +REGION_ALIAS ("REGION_FAST_TEXT", RAM); +REGION_ALIAS ("REGION_FAST_TEXT_LOAD", ROM); +REGION_ALIAS ("REGION_TEXT", ROM); +REGION_ALIAS ("REGION_TEXT_LOAD", ROM); +REGION_ALIAS ("REGION_RODATA", ROM); +REGION_ALIAS ("REGION_RODATA_LOAD", ROM); +REGION_ALIAS ("REGION_FAST_DATA", RAM); +REGION_ALIAS ("REGION_FAST_DATA_LOAD", ROM); +REGION_ALIAS ("REGION_DATA", RAM); +REGION_ALIAS ("REGION_DATA_LOAD", ROM); +REGION_ALIAS ("REGION_BSS", RAM); +REGION_ALIAS ("REGION_RWEXTRA", RAM); +REGION_ALIAS ("REGION_WORK", RAM); +REGION_ALIAS ("REGION_STACK", RAM); +REGION_ALIAS ("REGION_NOCACHE", NOCACHE); +REGION_ALIAS ("REGION_NOCACHE_LOAD", ROM); +REGION_ALIAS ("REGION_NVRAM", EMPTY); + +INCLUDE linkcmds.mpc55xx diff --git a/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/start-clock.c b/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/start-clock.c index 19f71ac4fa..f99efa22a5 100644 --- a/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/start-clock.c +++ b/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/start-clock.c @@ -74,7 +74,7 @@ BSP_START_TEXT_SECTION void mpc55xx_start_clock(void) fmpll->ESYNCR2.R; fmpll_wait_for_lock(); - #if MPC55XX_CHIP_FAMILY == 551 + #if MPC55XX_CHIP_FAMILY == 551 || MPC55XX_CHIP_FAMILY == 566 /* System clock supplied by PLL */ SIU.SYSCLK.B.SYSCLKSEL = 2; #endif diff --git a/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/start-config-mmu-early.c b/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/start-config-mmu-early.c index 5eb5330d88..b092511543 100644 --- a/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/start-config-mmu-early.c +++ b/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/start-config-mmu-early.c @@ -7,10 +7,10 @@ */ /* - * Copyright (c) 2011-2012 embedded brains GmbH. All rights reserved. + * Copyright (c) 2011-2013 embedded brains GmbH. All rights reserved. * * embedded brains GmbH - * Obere Lagerstr. 30 + * Dornierstr. 4 * 82178 Puchheim * Germany * <rtems@embedded-brains.de> @@ -44,6 +44,15 @@ const struct MMU_tag mpc55xx_start_config_mmu_early [] = { /* Internal SRAM 64k + 64k */ MPC55XX_MMU_TAG_INITIALIZER(3, 0x40000000, MPC55XX_MMU_64K, 1, 1, 1, 0), MPC55XX_MMU_TAG_INITIALIZER(4, 0x50000000, MPC55XX_MMU_64K, 0, 1, 1, 0) +#elif MPC55XX_CHIP_FAMILY == 566 + /* Internal flash 2M */ + MPC55XX_MMU_TAG_INITIALIZER(1, 0x00000000, MPC55XX_MMU_1M, 1, 0, 1, 0), + MPC55XX_MMU_TAG_INITIALIZER(4, 0x00100000, MPC55XX_MMU_1M, 1, 0, 1, 0), + /* IO */ + MPC55XX_MMU_TAG_INITIALIZER(2, 0xc3f00000, MPC55XX_MMU_1M, 0, 1, 1, 1), + /* Internal SRAM 512k */ + MPC55XX_MMU_TAG_INITIALIZER(3, 0x40000000, MPC55XX_MMU_256K, 1, 1, 1, 0), + MPC55XX_MMU_TAG_INITIALIZER(5, 0x40040000, MPC55XX_MMU_256K, 1, 1, 1, 0) #elif MPC55XX_CHIP_FAMILY == 567 /* Internal SRAM 256k */ MPC55XX_MMU_TAG_INITIALIZER(3, 0x40000000, MPC55XX_MMU_256K, 1, 1, 1, 0) diff --git a/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/start-flash.S b/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/start-flash.S index 974102c90c..abad385897 100644 --- a/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/start-flash.S +++ b/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/start-flash.S @@ -38,7 +38,9 @@ * @warning Code will be copied and executed on the stack. */ GLOBAL_FUNCTION mpc55xx_start_flash -#if !defined(MPC55XX_NEEDS_LOW_LEVEL_INIT) || MPC55XX_CHIP_FAMILY == 564 +#if !defined(MPC55XX_NEEDS_LOW_LEVEL_INIT) \ + || MPC55XX_CHIP_FAMILY == 564 \ + || MPC55XX_CHIP_FAMILY == 566 blr #else .equ stack_size, 20 |