bsp/mpc55xx: New ECU508 BSPs

This commit is contained in:
Sebastian Huber
2012-07-17 17:00:16 +02:00
parent 64d72e8d4e
commit d740e601ab
12 changed files with 223 additions and 6 deletions

View File

@@ -30,6 +30,8 @@ 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.mpc5674f_ecu508_boot
dist_project_lib_DATA += startup/linkcmds.mpc5674f_ecu508_app
noinst_LIBRARIES += libbsp.a
libbsp_a_SOURCES =

View File

@@ -39,6 +39,7 @@ RTEMS_BSPOPTS_SET([BSP_INTERRUPT_HANDLER_TABLE_SIZE],[*],[63])
RTEMS_BSPOPTS_HELP([BSP_INTERRUPT_HANDLER_TABLE_SIZE],
[defines the maximum number of interrupt handlers])
RTEMS_BSPOPTS_SET([MPC55XX_ESCI_CONSOLE_MINOR],[mpc5674f_ecu508*],[2])
RTEMS_BSPOPTS_SET([MPC55XX_ESCI_CONSOLE_MINOR],[*],[0])
RTEMS_BSPOPTS_HELP([MPC55XX_ESCI_CONSOLE_MINOR],
[determines which eSCI device will be registered as /dev/console])
@@ -49,26 +50,26 @@ 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],[mpc5674fevb*],[40000000])
RTEMS_BSPOPTS_SET([MPC55XX_REFERENCE_CLOCK],[mpc5674f*],[40000000])
RTEMS_BSPOPTS_SET([MPC55XX_REFERENCE_CLOCK],[*],[8000000])
RTEMS_BSPOPTS_HELP([MPC55XX_REFERENCE_CLOCK],
[Must be defined to be the external reference clock (in Hz)
for clock generation])
RTEMS_BSPOPTS_SET([MPC55XX_FMPLL_CLK_OUT],[gwlcfm],[66000000])
RTEMS_BSPOPTS_SET([MPC55XX_FMPLL_CLK_OUT],[mpc5674fevb*],[264000000])
RTEMS_BSPOPTS_SET([MPC55XX_FMPLL_CLK_OUT],[mpc5674f*],[264000000])
RTEMS_BSPOPTS_SET([MPC55XX_FMPLL_CLK_OUT],[*] ,[128000000])
RTEMS_BSPOPTS_HELP([MPC55XX_FMPLL_CLK_OUT],
[Must be defined to be the PLL output clock (in Hz) for clock generation])
RTEMS_BSPOPTS_SET([MPC55XX_FMPLL_PREDIV],[gwlcfm],[10])
RTEMS_BSPOPTS_SET([MPC55XX_FMPLL_PREDIV],[mpc5674fevb*],[5])
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],[mpc5674fevb*],[66])
RTEMS_BSPOPTS_SET([MPC55XX_FMPLL_MFD],[mpc5674f*],[66])
RTEMS_BSPOPTS_SET([MPC55XX_FMPLL_MFD],[*] ,[12])
RTEMS_BSPOPTS_HELP([MPC55XX_FMPLL_MFD],
[Must be defined to be the PLL multiplication factor for clock generation])
@@ -106,7 +107,7 @@ RTEMS_BSPOPTS_HELP([SMSC9218I_EDMA_TX_CHANNEL],
[transmit eDMA channel for SMSC9218I network interface])
RTEMS_BSPOPTS_SET([MPC55XX_CLOCK_EMIOS_CHANNEL],[mpc5643l*],[])
RTEMS_BSPOPTS_SET([MPC55XX_CLOCK_EMIOS_CHANNEL],[mpc5674fevb*],[31])
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)])
@@ -141,6 +142,9 @@ RTEMS_BSPOPTS_HELP([MPC55XX_BOARD_MPC5566EVB],[if defined, use custom settings f
RTEMS_BSPOPTS_SET([MPC55XX_BOARD_GWLCFM],[gwlcfm],[1])
RTEMS_BSPOPTS_HELP([MPC55XX_BOARD_GWLCFM],[if defined, use custom settings for GWLCFM board])
RTEMS_BSPOPTS_SET([MPC55XX_BOARD_MPC5674F_ECU508],[mpc5674f_ecu508_boot],[1])
RTEMS_BSPOPTS_HELP([MPC55XX_BOARD_MPC5674F_ECU508],[if defined, use custom settings for ECU508 board])
RTEMS_BSPOPTS_SET([MPC55XX_BOARD_PHYCORE_MPC5554],[phycore_mpc5554],[1])
RTEMS_BSPOPTS_HELP([MPC55XX_BOARD_PHYCORE_MPC5554],[if defined, use custom settings for phyCORE MPC5554 board])
@@ -149,6 +153,7 @@ RTEMS_BSPOPTS_HELP([RTEMS_BSP_I2C_EEPROM_DEVICE_NAME],[EEPROM name for LibI2C])
RTEMS_BSPOPTS_SET([RTEMS_BSP_I2C_EEPROM_DEVICE_PATH],[gwlcfm],['"/dev/i2c1.eeprom"'])
RTEMS_BSPOPTS_HELP([RTEMS_BSP_I2C_EEPROM_DEVICE_PATH],[EEPROM device file path])
RTEMS_BSPOPTS_SET([MPC55XX_NEEDS_LOW_LEVEL_INIT],[mpc5674f_ecu508_app],[])
RTEMS_BSPOPTS_SET([MPC55XX_NEEDS_LOW_LEVEL_INIT],[*],[1])
RTEMS_BSPOPTS_HELP([MPC55XX_NEEDS_LOW_LEVEL_INIT],[if defined, do low level initialization])

View File

@@ -33,6 +33,9 @@
/* if defined, use custom settings for MPC5674FEVB board */
#undef MPC55XX_BOARD_MPC5674FEVB
/* if defined, use custom settings for ECU508 board */
#undef MPC55XX_BOARD_MPC5674F_ECU508
/* if defined, use custom settings for phyCORE MPC5554 board */
#undef MPC55XX_BOARD_PHYCORE_MPC5554

View File

@@ -0,0 +1,3 @@
CPU_CFLAGS_FLOAT ?= -mspe
include $(RTEMS_ROOT)/make/custom/mpc55xx.inc

View File

@@ -0,0 +1,3 @@
CPU_CFLAGS_FLOAT ?= -mspe
include $(RTEMS_ROOT)/make/custom/mpc55xx.inc

View File

@@ -93,6 +93,14 @@ $(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.mpc5674f_ecu508_boot: startup/linkcmds.mpc5674f_ecu508_boot $(PROJECT_LIB)/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_LIB)/linkcmds.mpc5674f_ecu508_boot
PREINSTALL_FILES += $(PROJECT_LIB)/linkcmds.mpc5674f_ecu508_boot
$(PROJECT_LIB)/linkcmds.mpc5674f_ecu508_app: startup/linkcmds.mpc5674f_ecu508_app $(PROJECT_LIB)/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_LIB)/linkcmds.mpc5674f_ecu508_app
PREINSTALL_FILES += $(PROJECT_LIB)/linkcmds.mpc5674f_ecu508_app
$(PROJECT_INCLUDE)/bsp.h: include/bsp.h $(PROJECT_INCLUDE)/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp.h

View File

@@ -0,0 +1,28 @@
MEMORY {
/* Let space for the binary image library header */
ROM : ORIGIN = 0x00100000, LENGTH = 3M - 4k
RAM : ORIGIN = 0x40000000, LENGTH = 256K - 16k
RAM_EXT : ORIGIN = 0x20000000, LENGTH = 512K
NOCACHE : ORIGIN = 0x4003c000, LENGTH = 16k
}
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_EXT);
REGION_ALIAS ("REGION_WORK", RAM_EXT);
REGION_ALIAS ("REGION_STACK", RAM);
REGION_ALIAS ("REGION_NOCACHE", NOCACHE);
REGION_ALIAS ("REGION_NOCACHE_LOAD", ROM);
INCLUDE linkcmds.mpc55xx

View File

@@ -0,0 +1,26 @@
MEMORY {
ROM : ORIGIN = 0x0, LENGTH = 1M
RAM : ORIGIN = 0x40000000, LENGTH = 256K - 16k
RAM_EXT : ORIGIN = 0x20000000, LENGTH = 512K
NOCACHE : ORIGIN = 0x4003c000, LENGTH = 16k
}
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_EXT);
REGION_ALIAS ("REGION_WORK", RAM_EXT);
REGION_ALIAS ("REGION_STACK", RAM);
REGION_ALIAS ("REGION_NOCACHE", NOCACHE);
REGION_ALIAS ("REGION_NOCACHE_LOAD", ROM);
INCLUDE linkcmds.mpc55xx

View File

@@ -75,6 +75,102 @@ BSP_START_TEXT_SECTION const struct EBI_CAL_CS_tag
}
}
}
#elif defined(MPC55XX_BOARD_MPC5674F_ECU508)
/* D_CS0 for external SRAM */
{
.BR = {
.B = {
.BA = 0x20000000 >> 15,
.PS = 0,
.AD_MUX = 1,
.BL = 1,
.WEBS = 0,
.TBDIP = 1,
.SETA = 0,
.BI = 0,
.V = 1
}
},
.OR = {
.B = {
.AM = 0xffe00000 >> 15,
.SCY = 0,
.BSCY = 0
}
}
},
/* D_CS1 for Ethernet Controller */
{
.BR = {
.B = {
.BA = 0x3fff8000 >> 15,
.PS = 0,
.AD_MUX = 1,
.BL = 0,
.WEBS = 0,
.TBDIP = 0,
.SETA = 0,
.BI = 1,
.V = 1
}
},
.OR = {
.B = {
.AM = 0xffff8000 >> 15,
.SCY = 0,
.BSCY = 0
}
}
},
/* D_CS2 unused */
{
.BR = {
.B = {
.BA = 0x20000000 >> 15,
.PS = 0,
.AD_MUX = 1,
.BL = 0,
.WEBS = 0,
.TBDIP = 0,
.SETA = 0,
.BI = 1,
.V = 0
}
},
.OR = {
.B = {
.AM = 0xfff80000 >> 15,
.SCY = 0,
.BSCY = 0
}
}
},
/* D_CS3 for MRAM, ARCNET */
{
.BR = {
.B = {
.BA = 0x3ff80000 >> 15,
.PS = 1,
.AD_MUX = 1,
.BL = 0,
.WEBS = 1,
.TBDIP = 0,
.SETA = 0,
.BI = 1,
.V = 1
}
},
.OR = {
.B = {
.AM = 0xfff80000 >> 15,
.SCY = 1,
.BSCY = 0
}
}
}
#endif
};

View File

@@ -121,6 +121,32 @@ BSP_START_TEXT_SECTION const struct MMU_tag
MPC55XX_MMU_TAG_INITIALIZER(14, 0x4003c000, MPC55XX_MMU_16K, 0, 1, 1, 1),
/* External Ethernet controller */
MPC55XX_MMU_TAG_INITIALIZER(15, 0x3fff8000, MPC55XX_MMU_64K, 0, 1, 1, 1)
#elif defined(MPC55XX_BOARD_MPC5674F_ECU508)
/* Arguments macro: idx, addr, size, x, w, r, io */
/* Internal flash 4M */
MPC55XX_MMU_TAG_INITIALIZER(1, 0x00000000, MPC55XX_MMU_64K, 1, 0, 1, 0), /* first 64k unused, to detect null-pointer access */
MPC55XX_MMU_TAG_INITIALIZER(5, 0x00010000, MPC55XX_MMU_64K, 1, 0, 1, 0),
MPC55XX_MMU_TAG_INITIALIZER(6, 0x00020000, MPC55XX_MMU_128K, 1, 0, 1, 0),
MPC55XX_MMU_TAG_INITIALIZER(7, 0x00040000, MPC55XX_MMU_256K, 1, 0, 1, 0),
MPC55XX_MMU_TAG_INITIALIZER(8, 0x00080000, MPC55XX_MMU_512K, 1, 0, 1, 0),
MPC55XX_MMU_TAG_INITIALIZER(9, 0x00100000, MPC55XX_MMU_1M, 1, 0, 1, 0),
MPC55XX_MMU_TAG_INITIALIZER(10, 0x00200000, MPC55XX_MMU_2M, 1, 0, 1, 0),
/* External SRAM 2M */
MPC55XX_MMU_TAG_INITIALIZER(2, 0x20000000, MPC55XX_MMU_2M, 0, 1, 1, 0),
/* Internal SRAM 256k */
MPC55XX_MMU_TAG_INITIALIZER(3, 0x40000000 + 0 * 1024, MPC55XX_MMU_256K, 0, 1, 1, 0),
MPC55XX_MMU_TAG_INITIALIZER(11, 0x40000000 + 128 * 1024, MPC55XX_MMU_64K, 0, 1, 1, 0),
MPC55XX_MMU_TAG_INITIALIZER(12, 0x40000000 + 192 * 1024, MPC55XX_MMU_32K, 0, 1, 1, 0),
MPC55XX_MMU_TAG_INITIALIZER(13, 0x40000000 + 224 * 1024, MPC55XX_MMU_16K, 0, 1, 1, 0),
MPC55XX_MMU_TAG_INITIALIZER(14, 0x40000000 + 240 * 1024, MPC55XX_MMU_16K, 0, 1, 1, 1), // used as cache-inhibited area (ADC, DSPI queues)
/* External Ethernet controller */
MPC55XX_MMU_TAG_INITIALIZER(15, 0x3fff8000, MPC55XX_MMU_1K, 0, 1, 1, 1),
/* External MRAM 128k */
MPC55XX_MMU_TAG_INITIALIZER(16, 0x3ffa0000, MPC55XX_MMU_128K, 0, 1, 1, 0),
/* External ARCNET controller */
MPC55XX_MMU_TAG_INITIALIZER(17, 0x3ffc0000, MPC55XX_MMU_1K, 0, 1, 1, 1)
/* Peripheral Bridge A-Registers on MMU-table pos 4 */
/* Peripheral Bridge B-Registers on MMU-table pos 0 */
#elif MPC55XX_CHIP_TYPE / 10 == 564
/* Internal flash 1M */
MPC55XX_MMU_TAG_INITIALIZER(0, 0x00000000, MPC55XX_MMU_1M, 1, 0, 1, 0),

View File

@@ -112,6 +112,23 @@ BSP_START_TEXT_SECTION const mpc55xx_siu_pcr_config
{ 294, 6, 0, { .B = { .PA = 1, .DSC = 1 } } }, /* D_RD_WR, D_WE0, D_WE1, D_OE, D_TS, D_ALE */
{ 301, 1, 0, { .B = { .PA = 1, .DSC = 1 } } }, /* D_CS1 */
{ 302, 6, 0, { .B = { .PA = 1, .DSC = 1 } } } /* D_BDIP, D_WE2, D_WE3, D_ADD9 .. D_ADD11 */
#elif defined(MPC55XX_BOARD_MPC5674F_ECU508)
{ 196, 2, 0, { .B = { .PA = 0, .OBE = 1, .WPE = 0 } } }, /* EMIOS17 .. EMIOS18 (5VS_EN, 80V_EN) */
{ 200, 4, 0, { .B = { .PA = 0, .OBE = 1, .WPE = 0 } } }, /* EMIOS21 .. EMIOS24 (\KS_RST, \LS_RST, \IGNINJ_RST, \INJDI_RST) */
{ 204, 1, 1, { .B = { .PA = 0, .OBE = 1, .WPE = 0 } } }, /* EMIOS25 (HBR12_RST) */
{ 244, 2, 0, { .B = { .PA = 1 } } }, /* ESCI_C */
{ 256, 1, 0, { .B = { .PA = 1, .DSC = 0 } } }, /* D_CS0 */
{ 257, 1, 0, { .B = { .PA = 2, .DSC = 1 } } }, /* D_ADD_DAT31 */
{ 258, 1, 0, { .B = { .PA = 1, .DSC = 0 } } }, /* D_CS3 */
{ 259, 4, 0, { .B = { .PA = 1, .DSC = 0 } } }, /* D_ADD12 .. D_ADD15 */
{ 263, 15, 0, { .B = { .PA = 2, .DSC = 1 } } }, /* D_ADD_DAT16 .. D_ADD_DAT30 */
{ 278, 16, 0, { .B = { .PA = 1, .DSC = 0 } } }, /* D_ADD_DAT0 .. D_ADD_DAT15 */
{ 294, 6, 0, { .B = { .PA = 1, .DSC = 0 } } }, /* D_RD_WR, D_WE0, D_WE1, D_OE, D_TS, D_ALE */
{ 301, 1, 0, { .B = { .PA = 1, .DSC = 0 } } }, /* D_CS1 */
{ 302, 3, 0, { .B = { .PA = 1, .DSC = 0 } } }, /* D_BDIP, D_WE2, D_WE3 */
{ 305, 3, 0, { .B = { .PA = 1, .DSC = 0 } } }, /* D_ADD9 .. D_ADD11 */
{ 432, 1, 1, { .B = { .PA = 0, .OBE = 1, .WPE = 0 } } }, /* EMIOS26 (HBR34_RST) */
{ 433, 1, 0, { .B = { .PA = 0, .OBE = 1, .WPE = 0 } } } /* EMIOS27 (\ETH_RST) */
#endif
};

View File

@@ -174,7 +174,7 @@ static BSP_START_TEXT_SECTION void mpc55xx_start_ebi(void)
EBI.MCR.B.D16_31 = 1; /* use lower AD bus */
SIU.ECCR.B.EBDF = 3; /* use CLK/4 as bus clock */
#elif defined(MPC55XX_BOARD_MPC5674FEVB)
#elif defined(MPC55XX_BOARD_MPC5674FEVB) || defined(MPC55XX_BOARD_MPC5674F_ECU508)
struct EBI_tag ebi = {
.MCR = {
.B = {