IMPLEMENTATION mpc5643l { /* Add the source and the handler of the counter */ COUNTER [] { IDENTIFIER SOURCE; UINT32 FREQUENCY = 120000; /* Default : 120000000Hz = 1ms */ }; /* TODO : Use Vle * VLE's source code must be separated in another directory. * The chosen code must then be picked from the right directory * following this flag state. */ OS [] { BOOLEAN USEVLE; BOOLEAN HASFLOAT = TRUE; STRUCT { UINT32 CORE; IDENTIFIER SOURCE; UINT32 FREQUENCY = 120000; } TIMINGPROTECTION_WATCHDOG []; BOOLEAN [ TRUE { INTERRUPT_TYPE SHAREDSOURCE; UINT32 FREQUENCY = 120000; STRUCT { UINT32 CORE; INTERRUPT_TYPE SOURCE; } SLAVESOURCE []; }, FALSE ] OPTIMIZETICKS = FALSE; }; TASK [] { UINT32 WITH_AUTO ID; }; ISR [] { UINT32 WITH_AUTO ID; }; /* For the MPC5643L, Software interrupts must be cleared in the SSCIR as * well. */ INTERRUPT [] { ENUM [ SOFTWARE, HARDWARE ] TYPE = HARDWARE; }; }; /* * Interrupt sources for MPC551° */ CPU mpc5643l_interrupt { INTERRUPT_COUNT nb_it { IT_TABLE_SIZE = 256; }; /* Software interrupts */ INTERRUPT IRQ0 { ID = 0; TYPE = SOFTWARE; }; INTERRUPT IRQ1 { ID = 1; TYPE = SOFTWARE; }; INTERRUPT IRQ2 { ID = 2; TYPE = SOFTWARE; }; INTERRUPT IRQ3 { ID = 3; TYPE = SOFTWARE; }; INTERRUPT IRQ4 { ID = 4; TYPE = SOFTWARE; }; INTERRUPT IRQ5 { ID = 5; TYPE = SOFTWARE; }; INTERRUPT IRQ6 { ID = 6; TYPE = SOFTWARE; }; INTERRUPT IRQ7 { ID = 7; TYPE = SOFTWARE; }; /* Intercore Reserved in multicore */ /* Hardware timer interrupts */ INTERRUPT pit_ch0 { ID = 59; }; INTERRUPT pit_ch1 { ID = 60; }; INTERRUPT pit_ch2 { ID = 61; }; INTERRUPT pit_ch3 { ID = 127; }; INTERRUPT decrementer { ID = 999;}; /* FIXME : The decrementer has no ID */ //======= Monocore Version // XXX : Better use the multicore version, even in monocore. // // PLATFORM_FILES ppc { // PATH = "ppc"; // CFILE = "tpl_call_trusted_fct.S"; // CFILE = "tpl_ctx_switch.S"; // CFILE = "tpl_dispatch.S"; // CFILE = "tpl_init.S"; // CFILE = "tpl_it_handler.S"; // CFILE = "tpl_os_it.S"; // CFILE = "tpl_start.S"; // CFILE = "tpl_init_term.c"; // CFILE = "tpl_protection.S"; // // }; // PLATFORM_FILES mpc5643l { // PATH = "ppc/multicore_mpc5643l/mpc5643l"; // }; // PLATFORM_FILES others { // PATH = "ppc/multicore_mpc5643l"; // }; //======== PLATFORM_FILES ppc { PATH = "ppc/multicore"; CFILE = "tpl_machine_ppc.c"; CFILE = "tpl_init_term.c"; CFILE = "tpl_timers.c"; CFILE = "tpl_call_trusted_fct.s"; CFILE = "tpl_ctx_switch.s"; CFILE = "tpl_dispatch.s"; CFILE = "tpl_exceptions.s"; CFILE = "tpl_init.s"; CFILE = "tpl_it_handler.s"; CFILE = "tpl_it_management.s"; CFILE = "tpl_memory_protection.s"; /* FIXME : If memory_protection */ CFILE = "tpl_os_it.s"; CFILE = "tpl_protection.s"; CFILE = "tpl_tick.s"; }; PLATFORM_FILES mpc5643l { PATH = "ppc/mpc5643l"; CFILE = "tpl_boot.s"; CFILE = "tpl_boot_utils.c"; CFILE = "Bam.c"; CFILE = "tpl_led.c"; /* FIXME: Should be added in debug mode only */ }; };