Add KBOOT.
This commit is contained in:
143
targets/MKV11Z7/src/bootloader_config.h
Normal file
143
targets/MKV11Z7/src/bootloader_config.h
Normal file
@@ -0,0 +1,143 @@
|
||||
/*
|
||||
* Copyright (c) 2014-2015, Freescale Semiconductor, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* o Redistributions of source code must retain the above copyright notice, this list
|
||||
* of conditions and the following disclaimer.
|
||||
*
|
||||
* o Redistributions in binary form must reproduce the above copyright notice, this
|
||||
* list of conditions and the following disclaimer in the documentation and/or
|
||||
* other materials provided with the distribution.
|
||||
*
|
||||
* o Neither the name of Freescale Semiconductor, Inc. nor the names of its
|
||||
* contributors may be used to endorse or promote products derived from this
|
||||
* software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
#ifndef __BOOTLOADER_CONFIG_H__
|
||||
#define __BOOTLOADER_CONFIG_H__
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Definitions
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//
|
||||
// Bootloader configuration options
|
||||
//
|
||||
|
||||
//! @name Peripheral configuration macros
|
||||
//@{
|
||||
|
||||
#if !defined(BL_CONFIG_UART)
|
||||
#define BL_CONFIG_UART (1)
|
||||
#endif
|
||||
#if !defined(BL_CONFIG_I2C)
|
||||
#define BL_CONFIG_I2C (1)
|
||||
#endif
|
||||
#if !defined(BL_CONFIG_DSPI)
|
||||
#define BL_CONFIG_DSPI (1)
|
||||
#endif
|
||||
#if !defined(BL_CONFIG_CAN)
|
||||
#define BL_CONFIG_CAN (1)
|
||||
#endif
|
||||
|
||||
//@}
|
||||
|
||||
#if !defined(BL_TARGET_FLASH) && !defined(BL_TARGET_RAM)
|
||||
#define BL_TARGET_FLASH (1)
|
||||
#endif
|
||||
|
||||
#if defined(BL_TARGET_RAM)
|
||||
#define BL_FEATURE_FLASH_SECURITY (0)
|
||||
#else
|
||||
#define BL_FEATURE_FLASH_SECURITY (1)
|
||||
#endif
|
||||
|
||||
#if !defined(BL_TARGET_RAM)
|
||||
#define BL_FEATURE_CRC_CHECK (1)
|
||||
#define BL_FEATURE_FILL_MEMORY (1)
|
||||
#else
|
||||
#define BL_FEATURE_TIMEOUT (1)
|
||||
#define BL_FEATURE_NO_FLASH_SECURITY (1)
|
||||
#define BL_FEATURE_FILL_MEMORY (0)
|
||||
#endif
|
||||
|
||||
#define BL_FEATURE_QSPI_MODULE (0)
|
||||
|
||||
#define BL_FEATURE_ENCRYPTION (0)
|
||||
|
||||
#define BL_FEATURE_UART_AUTOBAUD_IRQ (1)
|
||||
|
||||
#define BL_FEATURE_CAN (BL_CONFIG_CAN)
|
||||
|
||||
#define BL_FEATURE_READ_MEMORY (1)
|
||||
|
||||
#define BL_FEATURE_MIN_PROFILE (1)
|
||||
|
||||
// Bootloader peripheral detection default timeout in milliseconds
|
||||
// After coming out of reset the bootloader will spin in a peripheral detection
|
||||
// loop for this amount of time. A zero value means no time out.
|
||||
#if DEBUG
|
||||
#define BL_DEFAULT_PERIPHERAL_DETECT_TIMEOUT 0
|
||||
#else
|
||||
#define BL_DEFAULT_PERIPHERAL_DETECT_TIMEOUT 5000
|
||||
#endif // DEBUG
|
||||
|
||||
#define BL_FEATURE_POWERDOWN (0)
|
||||
|
||||
// Bootloader powerdown timeout in milliseconds
|
||||
// The bootloader enters a low power mode after waiting for this amount of time. A zero value means // no time out. Only
|
||||
// applicable if BL_FEATURE_POWERDOWN is enabled.
|
||||
#if DEBUG
|
||||
#define BL_DEFAULT_POWERDOWN_TIMEOUT 10000
|
||||
#else
|
||||
#define BL_DEFAULT_POWERDOWN_TIMEOUT 600000
|
||||
#endif // DEBUG
|
||||
|
||||
// The bootloader will check this address for the application vector table upon startup.
|
||||
#if !defined(BL_APP_VECTOR_TABLE_ADDRESS)
|
||||
#define BL_APP_VECTOR_TABLE_ADDRESS 0xa000
|
||||
#endif
|
||||
|
||||
/* Serial Port Info */
|
||||
|
||||
/**************************************************************************
|
||||
* Note:
|
||||
*
|
||||
* Because of the changes to the UART modules, we can no longer define
|
||||
* the TERM_PORT as a base pointer. The uart functions have been modified
|
||||
* accommodate this change. Now, TERM_PORT_NUM must be defined as the
|
||||
* number of the UART port desired to use
|
||||
*
|
||||
* TERM_PORT_NUM = 0 -- This allows you to use UART0; default pins are
|
||||
* PTA14 and PTA15
|
||||
*
|
||||
* TERM_PORT_NUM = 1 -- This allows you to use UART1; default pins are
|
||||
* PTC3 and PTC4
|
||||
*
|
||||
* TERM_PORT_NUM = 2 -- This allows you to use UART2; default pins are
|
||||
* PTD2 and PTD3
|
||||
*
|
||||
*************************************************************************/
|
||||
#define TERM_PORT_NUM 0
|
||||
|
||||
#define TERMINAL_BAUD 19200
|
||||
#undef HW_FLOW_CONTROL
|
||||
|
||||
#endif // __BOOTLOADER_CONFIG_H__
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// EOF
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
122
targets/MKV11Z7/src/clock_config_KV11Z7.c
Normal file
122
targets/MKV11Z7/src/clock_config_KV11Z7.c
Normal file
@@ -0,0 +1,122 @@
|
||||
/*
|
||||
* Copyright (c) 2014-2015, Freescale Semiconductor, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* o Redistributions of source code must retain the above copyright notice, this list
|
||||
* of conditions and the following disclaimer.
|
||||
*
|
||||
* o Redistributions in binary form must reproduce the above copyright notice, this
|
||||
* list of conditions and the following disclaimer in the documentation and/or
|
||||
* other materials provided with the distribution.
|
||||
*
|
||||
* o Neither the name of Freescale Semiconductor, Inc. nor the names of its
|
||||
* contributors may be used to endorse or promote products derived from this
|
||||
* software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include "bootloader_common.h"
|
||||
#include "bootloader/bl_context.h"
|
||||
#include "property/property.h"
|
||||
#include "fsl_device_registers.h"
|
||||
#include <assert.h>
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Declarations
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Code
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// See bootloader_common.h for documentation on this function.
|
||||
void configure_clocks(bootloader_clock_option_t option)
|
||||
{
|
||||
#if BL_TARGET_FLASH
|
||||
|
||||
static uint32_t s_defaultClockDivider;
|
||||
if (option == kClockOption_EnterBootloader)
|
||||
{
|
||||
s_defaultClockDivider = SIM->CLKDIV1;
|
||||
|
||||
// General procedure to be implemented:
|
||||
// 1. Read clock flags and divider from bootloader config in property store
|
||||
bootloader_configuration_data_t *config = &g_bootloaderContext.propertyInterface->store->configurationData;
|
||||
uint8_t options = config->clockFlags;
|
||||
|
||||
// 2. If NOT High Speed, do nothing (use reset clock config)
|
||||
if (options & kClockFlag_HighSpeed)
|
||||
{
|
||||
// High speed flag is set (meaning disabled), so just use default clocks.
|
||||
uint32_t coreClockDivider = (((SIM->CLKDIV1 & SIM_CLKDIV1_OUTDIV1_MASK) >> SIM_CLKDIV1_OUTDIV1_SHIFT) + 1);
|
||||
SystemCoreClock = kDefaultClock / coreClockDivider;
|
||||
return;
|
||||
}
|
||||
|
||||
// 3. Set OUTDIV1 based on divider in config. OUTDIV4 starts out at /1.
|
||||
// The divider values are masked by the maximum bits per divider.
|
||||
uint32_t div1 = ((~config->clockDivider) & (SIM_CLKDIV1_OUTDIV1_MASK >> SIM_CLKDIV1_OUTDIV1_SHIFT)) + 1;
|
||||
|
||||
// 4. Get MCGOUTCLK
|
||||
uint32_t McgOutClk = kDefaultClock;
|
||||
|
||||
// 5. Keep core clock up kMinCoreClockWithUsbSupport if usb is supported.
|
||||
uint32_t freq = McgOutClk;
|
||||
|
||||
// 6. Keep core clock below kMaxCoreClock
|
||||
while ((freq / div1) > kMaxCoreClock)
|
||||
{
|
||||
++div1;
|
||||
}
|
||||
|
||||
assert((div1 >= kDivider_Min) && (div1 <= kDivider_Max));
|
||||
|
||||
uint32_t div4 = ((SIM->CLKDIV1 & SIM_CLKDIV1_OUTDIV4_MASK) >> SIM_CLKDIV1_OUTDIV4_SHIFT) + 1;
|
||||
|
||||
// 7. Keep bus freq/falsh freq below max.
|
||||
//
|
||||
// The bus/flash clock is (MCGOUTCLK/OUTDIV1/)OUTDIV4:
|
||||
// MCGOUTCLK /div1 -> OUTDIV4 -> bus_clk
|
||||
freq = McgOutClk / div1;
|
||||
while ((freq / div4) > kMaxBusClock)
|
||||
{
|
||||
// Increase bus clock divider.
|
||||
++div4;
|
||||
}
|
||||
assert((div4 >= kDivider_Min) && (div4 <= (kDivider_Max / 2)));
|
||||
|
||||
if ((div1 == 1) && (div4 > 8))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// 9. Now set the dividers
|
||||
SIM->CLKDIV1 = SIM_CLKDIV1_OUTDIV1(div1 - 1) | SIM_CLKDIV1_OUTDIV4(div4 - 1); // Update system prescalers
|
||||
|
||||
// 10. Update SystemCoreClock global.
|
||||
SystemCoreClock = McgOutClk / div1;
|
||||
}
|
||||
else if (option == kClockOption_ExitBootloader)
|
||||
{
|
||||
SIM->CLKDIV1 = s_defaultClockDivider;
|
||||
}
|
||||
|
||||
#endif // BL_TARGET_FLASH
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// EOF
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
157
targets/MKV11Z7/src/hardware_init_KV11Z7.c
Normal file
157
targets/MKV11Z7/src/hardware_init_KV11Z7.c
Normal file
@@ -0,0 +1,157 @@
|
||||
/*
|
||||
* Copyright (c) 2013-2015, Freescale Semiconductor, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* o Redistributions of source code must retain the above copyright notice, this list
|
||||
* of conditions and the following disclaimer.
|
||||
*
|
||||
* o Redistributions in binary form must reproduce the above copyright notice, this
|
||||
* list of conditions and the following disclaimer in the documentation and/or
|
||||
* other materials provided with the distribution.
|
||||
*
|
||||
* o Neither the name of Freescale Semiconductor, Inc. nor the names of its
|
||||
* contributors may be used to endorse or promote products derived from this
|
||||
* software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include "bootloader_common.h"
|
||||
#include "bootloader/bl_context.h"
|
||||
#include "fsl_device_registers.h"
|
||||
#include "uart/fsl_uart.h"
|
||||
#include "utilities/kinetis_family.h"
|
||||
#include "smc/smc.h"
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Definitions
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#define BOOT_PIN_NUMBER 7
|
||||
#define BOOT_PIN_PORT PORTC
|
||||
#define BOOT_PIN_GPIO GPIOC
|
||||
#define BOOT_PIN_ALT_MODE 1
|
||||
|
||||
#define BOOT_PIN_DEBOUNCE_READ_COUNT 500
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Variables
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Code
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
void init_hardware(void)
|
||||
{
|
||||
#if defined(BL_TARGET_FLASH)
|
||||
exit_vlpr();
|
||||
#endif
|
||||
|
||||
// Enable all the ports
|
||||
SIM->SCGC5 |= (SIM_SCGC5_PORTA_MASK | SIM_SCGC5_PORTB_MASK | SIM_SCGC5_PORTC_MASK | SIM_SCGC5_PORTD_MASK |
|
||||
SIM_SCGC5_PORTE_MASK);
|
||||
}
|
||||
|
||||
void deinit_hardware(void)
|
||||
{
|
||||
SIM->SCGC5 &= (uint32_t) ~(SIM_SCGC5_PORTA_MASK | SIM_SCGC5_PORTB_MASK | SIM_SCGC5_PORTC_MASK |
|
||||
SIM_SCGC5_PORTD_MASK | SIM_SCGC5_PORTE_MASK);
|
||||
}
|
||||
|
||||
uint32_t get_bus_clock(void)
|
||||
{
|
||||
uint32_t busClockDivider = ((SIM->CLKDIV1 & SIM_CLKDIV1_OUTDIV4_MASK) >> SIM_CLKDIV1_OUTDIV4_SHIFT) + 1;
|
||||
return (SystemCoreClock / busClockDivider);
|
||||
}
|
||||
|
||||
uint32_t get_fast_peripheral_clock(void)
|
||||
{
|
||||
uint32_t busClockDivider = ((SIM->CLKDIV1 & SIM_CLKDIV1_OUTDIV1_MASK) >> SIM_CLKDIV1_OUTDIV1_SHIFT) + 1;
|
||||
return (SystemCoreClock / busClockDivider);
|
||||
}
|
||||
|
||||
uint32_t get_uart_clock(uint32_t instance)
|
||||
{
|
||||
switch (instance)
|
||||
{
|
||||
case 0:
|
||||
// UART0 uses the system clock
|
||||
return SystemCoreClock;
|
||||
case 1:
|
||||
// UART1 uses bus clock
|
||||
return get_bus_clock();
|
||||
case 2:
|
||||
case 3:
|
||||
case 4:
|
||||
case 5:
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
bool is_boot_pin_asserted(void)
|
||||
{
|
||||
#ifdef BL_TARGET_FLASH
|
||||
// Initialize boot pin for GPIO
|
||||
BOOT_PIN_PORT->PCR[BOOT_PIN_NUMBER] = PORT_PCR_MUX(BOOT_PIN_ALT_MODE);
|
||||
// Set boot pin as an input
|
||||
BOOT_PIN_GPIO->PDDR &= (uint32_t) ~(1 << BOOT_PIN_NUMBER);
|
||||
// Set boot pin pullup enabled, pullup select, filter enable
|
||||
BOOT_PIN_PORT->PCR[BOOT_PIN_NUMBER] |= (PORT_PCR_PE_MASK | PORT_PCR_PS_MASK | PORT_PCR_PFE_MASK);
|
||||
|
||||
uint32_t readCount = 0;
|
||||
|
||||
// Sample the pin a number of times
|
||||
for (uint32_t i = 0; i < BOOT_PIN_DEBOUNCE_READ_COUNT; i++)
|
||||
{
|
||||
readCount += ((BOOT_PIN_GPIO->PDIR) >> BOOT_PIN_NUMBER) & 1;
|
||||
}
|
||||
|
||||
// boot pin is pulled high so we are measuring lows, make sure most of our measurements
|
||||
// registered as low
|
||||
return (readCount < (BOOT_PIN_DEBOUNCE_READ_COUNT / 2));
|
||||
#else
|
||||
// Boot pin for Flash only target
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
void debug_init(void)
|
||||
{
|
||||
}
|
||||
|
||||
#if __ICCARM__
|
||||
|
||||
size_t __write(int handle, const unsigned char *buf, size_t size)
|
||||
{
|
||||
return size;
|
||||
}
|
||||
|
||||
#endif // __ICCARM__
|
||||
|
||||
void update_available_peripherals()
|
||||
{
|
||||
uint8_t k_family_id = (SIM->SDID & SIM_SDID_SUBFAMID_MASK) >> SIM_SDID_SUBFAMID_SHIFT;
|
||||
|
||||
// CAN module not in the K0x family
|
||||
if (k_family_id == kFAMID_K0x)
|
||||
{
|
||||
g_bootloaderContext.propertyInterface->store->configurationData.enabledPeripherals &= ~kPeripheralType_CAN;
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// EOF
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
53
targets/MKV11Z7/src/memory_map_KV11Z7.c
Normal file
53
targets/MKV11Z7/src/memory_map_KV11Z7.c
Normal file
@@ -0,0 +1,53 @@
|
||||
/*
|
||||
* Copyright (c) 2013, Freescale Semiconductor, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* o Redistributions of source code must retain the above copyright notice, this list
|
||||
* of conditions and the following disclaimer.
|
||||
*
|
||||
* o Redistributions in binary form must reproduce the above copyright notice, this
|
||||
* list of conditions and the following disclaimer in the documentation and/or
|
||||
* other materials provided with the distribution.
|
||||
*
|
||||
* o Neither the name of Freescale Semiconductor, Inc. nor the names of its
|
||||
* contributors may be used to endorse or promote products derived from this
|
||||
* software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include "bootloader/bl_context.h"
|
||||
#include "memory/memory.h"
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Variables
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//! @brief Memory map for KV11Z7
|
||||
//!
|
||||
//! This map is not const because it is updated at runtime with the actual sizes of
|
||||
//! flash and RAM for the chip we're running on.
|
||||
memory_map_entry_t g_memoryMap[] = {
|
||||
{ 0x00000000, 0x0001ffff, kMemoryIsExecutable, &g_flashMemoryInterface }, // Flash array (128KB)
|
||||
{ 0x1ffff000, 0x20002fff, kMemoryIsExecutable, &g_normalMemoryInterface }, // SRAM (16KB)
|
||||
{ 0x40000000, 0x4007ffff, kMemoryNotExecutable, &g_deviceMemoryInterface }, // AIPS peripherals
|
||||
{ 0x400ff000, 0x400fffff, kMemoryNotExecutable, &g_deviceMemoryInterface }, // GPIO
|
||||
{ 0xe0000000, 0xe00fffff, kMemoryNotExecutable, &g_deviceMemoryInterface }, // M4 private peripherals
|
||||
{ 0 } // Terminator
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// EOF
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
92
targets/MKV11Z7/src/peripherals_KV11Z7.c
Normal file
92
targets/MKV11Z7/src/peripherals_KV11Z7.c
Normal file
@@ -0,0 +1,92 @@
|
||||
/*
|
||||
* Copyright (c) 2013-2015, Freescale Semiconductor, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* o Redistributions of source code must retain the above copyright notice, this list
|
||||
* of conditions and the following disclaimer.
|
||||
*
|
||||
* o Redistributions in binary form must reproduce the above copyright notice, this
|
||||
* list of conditions and the following disclaimer in the documentation and/or
|
||||
* other materials provided with the distribution.
|
||||
*
|
||||
* o Neither the name of Freescale Semiconductor, Inc. nor the names of its
|
||||
* contributors may be used to endorse or promote products derived from this
|
||||
* software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include "bootloader/bl_context.h"
|
||||
#include "bootloader/bl_peripheral_interface.h"
|
||||
#include "packet/serial_packet.h"
|
||||
|
||||
extern void uart_pinmux_config(uint32_t instance, pinmux_type_t pinmux);
|
||||
extern void i2c_pinmux_config(uint32_t instance, pinmux_type_t pinmux);
|
||||
extern void spi_pinmux_config(uint32_t instance, pinmux_type_t pinmux);
|
||||
extern void can_pinmux_config(uint32_t instance, pinmux_type_t pinmux);
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Variables
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#if !BL_CONFIG_UART && !BL_CONFIG_I2C && !BL_CONFIG_DSPI && !BL_CONFIG_CAN
|
||||
#error At least one peripheral must be enabled!
|
||||
#endif
|
||||
|
||||
//! @brief Peripheral array for K22F5256.
|
||||
const peripheral_descriptor_t g_peripherals[] = {
|
||||
#if BL_CONFIG_UART
|
||||
// UART0
|
||||
{.typeMask = kPeripheralType_UART,
|
||||
.instance = 0,
|
||||
.pinmuxConfig = uart_pinmux_config,
|
||||
.controlInterface = &g_uartControlInterface,
|
||||
.byteInterface = &g_uartByteInterface,
|
||||
.packetInterface = &g_framingPacketInterface },
|
||||
#endif // BL_CONFIG_UART
|
||||
#if BL_CONFIG_I2C
|
||||
// I2C0
|
||||
{.typeMask = kPeripheralType_I2CSlave,
|
||||
.instance = 0,
|
||||
.pinmuxConfig = i2c_pinmux_config,
|
||||
.controlInterface = &g_i2cControlInterface,
|
||||
.byteInterface = &g_i2cByteInterface,
|
||||
.packetInterface = &g_framingPacketInterface },
|
||||
#endif // BL_CONFIG_I2C
|
||||
#if BL_CONFIG_DSPI
|
||||
// SPI0
|
||||
{.typeMask = kPeripheralType_SPISlave,
|
||||
.instance = 0,
|
||||
.pinmuxConfig = spi_pinmux_config,
|
||||
.controlInterface = &g_dspiControlInterface,
|
||||
.byteInterface = &g_dspiByteInterface,
|
||||
.packetInterface = &g_framingPacketInterface },
|
||||
#endif // BL_CONFIG_DSPI
|
||||
#if BL_CONFIG_CAN
|
||||
// CAN0
|
||||
{.typeMask = kPeripheralType_CAN,
|
||||
.instance = 0,
|
||||
.pinmuxConfig = can_pinmux_config,
|
||||
.controlInterface = &g_flexcanControlInterface,
|
||||
.byteInterface = &g_flexcanByteInterface,
|
||||
.packetInterface = &g_framingPacketInterface },
|
||||
#endif // BL_CONFIG_CAN
|
||||
|
||||
{ 0 } // Terminator
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// EOF
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
101
targets/MKV11Z7/src/peripherals_pinmux.h
Normal file
101
targets/MKV11Z7/src/peripherals_pinmux.h
Normal file
@@ -0,0 +1,101 @@
|
||||
/*
|
||||
* Copyright (c) 2014, Freescale Semiconductor, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* o Redistributions of source code must retain the above copyright notice, this list
|
||||
* of conditions and the following disclaimer.
|
||||
*
|
||||
* o Redistributions in binary form must reproduce the above copyright notice, this
|
||||
* list of conditions and the following disclaimer in the documentation and/or
|
||||
* other materials provided with the distribution.
|
||||
*
|
||||
* o Neither the name of Freescale Semiconductor, Inc. nor the names of its
|
||||
* contributors may be used to endorse or promote products derived from this
|
||||
* software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include "fsl_device_registers.h"
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Definitions
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//! peripheral enable configurations
|
||||
#define BL_ENABLE_PINMUX_UART0 (BL_CONFIG_UART)
|
||||
#define BL_ENABLE_PINMUX_SPI0 (BL_CONFIG_DSPI)
|
||||
#define BL_ENABLE_PINMUX_I2C0 (BL_CONFIG_I2C)
|
||||
#define BL_ENABLE_PINMUX_CAN0 (BL_CONFIG_CAN)
|
||||
|
||||
#if defined(TOWER)
|
||||
//! UART pinmux configurations - For TWR board bootloader
|
||||
#define UART0_RX_PORT_BASE PORTB
|
||||
#define UART0_RX_GPIO_BASE GPIOB
|
||||
#define UART0_RX_GPIO_PIN_NUM 16 // PIN 16 in the PTB group
|
||||
#define UART0_RX_FUNC_ALT_MODE kPORT_MuxAlt3 // ALT mode for UART0 RX
|
||||
#define UART0_RX_GPIO_ALT_MODE kPORT_MuxAsGpio // ALT mdoe for GPIO
|
||||
#define UART0_RX_GPIO_IRQn PORTB_PORTC_PORTD_PORTE_IRQn
|
||||
#define UART0_RX_GPIO_IRQHandler PORTB_PORTC_PORTD_PORTE_IRQHandler
|
||||
#define UART0_TX_PORT_BASE PORTB
|
||||
#define UART0_TX_GPIO_PIN_NUM 17 // PIN 17 in the PTD group
|
||||
#define UART0_TX_FUNC_ALT_MODE kPORT_MuxAlt3 // ALT mode for UART0 TX
|
||||
#else
|
||||
//! UART pinmux configurations - For flashloader
|
||||
#define UART0_RX_PORT_BASE PORTD
|
||||
#define UART0_RX_GPIO_BASE GPIOD
|
||||
#define UART0_RX_GPIO_PIN_NUM 6 // PIN 6 in the PTD group
|
||||
#define UART0_RX_FUNC_ALT_MODE kPORT_MuxAlt3 // ALT mode for UART0 RX
|
||||
#define UART0_RX_GPIO_ALT_MODE kPORT_MuxAsGpio // ALT mdoe for GPIO
|
||||
#define UART0_RX_GPIO_IRQn PORTB_PORTC_PORTD_PORTE_IRQn
|
||||
#define UART0_RX_GPIO_IRQHandler PORTB_PORTC_PORTD_PORTE_IRQHandler
|
||||
#define UART0_TX_PORT_BASE PORTD
|
||||
#define UART0_TX_GPIO_PIN_NUM 7 // PIN 7 in the PTD group
|
||||
#define UART0_TX_FUNC_ALT_MODE kPORT_MuxAlt3 // ALT mode for UART0 TX
|
||||
#endif // defined TOWER
|
||||
|
||||
//! I2C pinmux configurations
|
||||
#define I2C0_SCL_PORT_BASE PORTB
|
||||
#define I2C0_SCL_GPIO_PIN_NUM 0 // PIN 0 in the PTB group
|
||||
#define I2C0_SCL_FUNC_ALT_MODE kPORT_MuxAlt2 // ALT mode for I2C0 SCL
|
||||
#define I2C0_SDA_PORT_BASE PORTB
|
||||
#define I2C0_SDA_GPIO_PIN_NUM 1 // PIN 1 in the PTB group
|
||||
#define I2C0_SDA_FUNC_ALT_MODE kPORT_MuxAlt2 // ALT mode for I2C0 SDA
|
||||
|
||||
//! SPI pinmux configurations
|
||||
#define SPI0_PCS_PORT_BASE PORTE
|
||||
#define SPI0_PCS_GPIO_PIN_NUM 16 // PIN 16 in the PTE group
|
||||
#define SPI0_PCS_FUNC_ALT_MODE kPORT_MuxAlt2 // ALT mode for SPI0 PCS
|
||||
#define SPI0_SCK_PORT_BASE PORTE
|
||||
#define SPI0_SCK_GPIO_PIN_NUM 17 // PIN 17 in the PTE group
|
||||
#define SPI0_SCK_FUNC_ALT_MODE kPORT_MuxAlt2 // ALT mode for SPI0 SCK
|
||||
#define SPI0_SOUT_PORT_BASE PORTE
|
||||
#define SPI0_SOUT_GPIO_PIN_NUM 18 // PIN 18 in the PTE group
|
||||
#define SPI0_SOUT_FUNC_ALT_MODE kPORT_MuxAlt2 // ALT mode for SPI0 SOUT
|
||||
#define SPI0_SIN_PORT_BASE PORTE
|
||||
#define SPI0_SIN_GPIO_PIN_NUM 19 // PIN 19 in the PTE group
|
||||
#define SPI0_SIN_FUNC_ALT_MODE kPORT_MuxAlt2 // ALT mode for SPI0 SIN
|
||||
|
||||
//! CAN pinmux configurations
|
||||
#define CAN0_RX_PORT_BASE PORTE
|
||||
#define CAN0_RX_GPIO_PIN_NUM 25 // PIN 25 in the PTE group
|
||||
#define CAN0_RX_FUNC_ALT_MODE kPORT_MuxAlt2 // ALT mode for CAN0 RX
|
||||
#define CAN0_TX_PORT_BASE PORTE
|
||||
#define CAN0_TX_GPIO_PIN_NUM 24 // PIN 24 in the PTE group
|
||||
#define CAN0_TX_FUNC_ALT_MODE kPORT_MuxAlt2 // ALT mode for CAN0 TX
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// EOF
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
603
targets/MKV11Z7/src/startup/arm/startup_MKV11Z7.s
Normal file
603
targets/MKV11Z7/src/startup/arm/startup_MKV11Z7.s
Normal file
File diff suppressed because it is too large
Load Diff
240
targets/MKV11Z7/src/startup/gcc/startup_MKV11Z7.S
Normal file
240
targets/MKV11Z7/src/startup/gcc/startup_MKV11Z7.S
Normal file
@@ -0,0 +1,240 @@
|
||||
/* ---------------------------------------------------------------------------------------*/
|
||||
/* @file: startup_MKV11Z7.s */
|
||||
/* @purpose: CMSIS Cortex-M0P Core Device Startup File */
|
||||
/* MKV11Z7 */
|
||||
/* @version: 1.0 */
|
||||
/* @date: 2014-12-14 */
|
||||
/* @build: b150202 */
|
||||
/* ---------------------------------------------------------------------------------------*/
|
||||
/* */
|
||||
/* Copyright (c) 1997 - 2015 , Freescale Semiconductor, Inc. */
|
||||
/* All rights reserved. */
|
||||
/* */
|
||||
/* Redistribution and use in source and binary forms, with or without modification, */
|
||||
/* are permitted provided that the following conditions are met: */
|
||||
/* */
|
||||
/* o Redistributions of source code must retain the above copyright notice, this list */
|
||||
/* of conditions and the following disclaimer. */
|
||||
/* */
|
||||
/* o Redistributions in binary form must reproduce the above copyright notice, this */
|
||||
/* list of conditions and the following disclaimer in the documentation and/or */
|
||||
/* other materials provided with the distribution. */
|
||||
/* */
|
||||
/* o Neither the name of Freescale Semiconductor, Inc. nor the names of its */
|
||||
/* contributors may be used to endorse or promote products derived from this */
|
||||
/* software without specific prior written permission. */
|
||||
/* */
|
||||
/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND */
|
||||
/* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED */
|
||||
/* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */
|
||||
/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR */
|
||||
/* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES */
|
||||
/* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */
|
||||
/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON */
|
||||
/* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT */
|
||||
/* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS */
|
||||
/* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
|
||||
/*****************************************************************************/
|
||||
/* Version: GCC for ARM Embedded Processors */
|
||||
/*****************************************************************************/
|
||||
.syntax unified
|
||||
.arch armv6-m
|
||||
|
||||
.section .isr_vector, "a"
|
||||
.align 2
|
||||
.globl __isr_vector
|
||||
__isr_vector:
|
||||
.long __StackTop /* Top of Stack */
|
||||
.long Reset_Handler /* Reset Handler */
|
||||
.long NMI_Handler /* NMI Handler*/
|
||||
.long HardFault_Handler /* Hard Fault Handler*/
|
||||
.long 0 /* Reserved*/
|
||||
.long 0 /* Reserved*/
|
||||
.long 0 /* Reserved*/
|
||||
.long 0 /* Reserved*/
|
||||
.long 0 /* Reserved*/
|
||||
.long 0 /* Reserved*/
|
||||
.long 0 /* Reserved*/
|
||||
.long SVC_Handler /* SVCall Handler*/
|
||||
.long 0 /* Reserved*/
|
||||
.long 0 /* Reserved*/
|
||||
.long PendSV_Handler /* PendSV Handler*/
|
||||
.long SysTick_Handler /* SysTick Handler*/
|
||||
|
||||
/* External Interrupts*/
|
||||
.long DMA0_DMA4_IRQHandler /* DMA channel 0 and 4 transfer complete*/
|
||||
.long DMA1_DMA5_IRQHandler /* DMA channel 1 and 5 transfer complete*/
|
||||
.long DMA2_DMA6_IRQHandler /* DMA channel 2 and 6 transfer complete*/
|
||||
.long DMA3_DMA7_IRQHandler /* DMA channel 2 and 7 transfer complete*/
|
||||
.long DMA_Error_IRQHandler /* DMA error interrupt channels 0-7*/
|
||||
.long FTFA_IRQHandler /* FTFA command complete and read collision*/
|
||||
.long LVD_LVW_IRQHandler /* Low-voltage detect, low-voltage warning*/
|
||||
.long LLW_IRQHandler /* Low Leakage Wakeup*/
|
||||
.long I2C0_IRQHandler /* I2C0 interrupt*/
|
||||
.long Reserved25_IRQHandler /* Reserved interrupt*/
|
||||
.long SPI0_IRQHandler /* SPI0 single interrupt vector for all sources*/
|
||||
.long Reserved27_IRQHandler /* Reserved interrupt*/
|
||||
.long UART0_IRQHandler /* UART0 status and error*/
|
||||
.long UART1_IRQHandler /* UART1 status and error*/
|
||||
.long CAN0_IRQHandler /* CAN0 interrupt*/
|
||||
.long ADC0_IRQHandler /* ADC0 interrupt*/
|
||||
.long ADC1_IRQHandler /* ADC1 interrupt*/
|
||||
.long FTM0_IRQHandler /* FTM0 single interrupt vector for all sources*/
|
||||
.long FTM1_IRQHandler /* FTM1 single interrupt vector for all sources*/
|
||||
.long FTM2_IRQHandler /* FTM2 single interrupt vector for all sources*/
|
||||
.long CMP0_IRQHandler /* CMP0 interrupt*/
|
||||
.long CMP1_IRQHandler /* CMP1 interrupt*/
|
||||
.long FTM3_IRQHandler /* FTM3 single interrupt vector for all sources*/
|
||||
.long WDOG_EWM_IRQHandler /* Single interrupt vector for WDOG and EWM*/
|
||||
.long FTM4_IRQHandler /* FTM4 single interrupt vector for all sources*/
|
||||
.long DAC0_IRQHandler /* DAC0 interrupt*/
|
||||
.long FTM5_IRQHandler /* FTM5 single interrupt vector for all sources*/
|
||||
.long MCG_IRQHandler /* MCG interrupt*/
|
||||
.long LPTMR0_IRQHandler /* LPTMR0 interrupt*/
|
||||
.long PDB0_PDB1_IRQHandler /* Single interrupt vector for PDB0 and PDB1*/
|
||||
.long PORTA_IRQHandler /* PORTA pin detect*/
|
||||
.long PORTB_PORTC_PORTD_PORTE_IRQHandler /* Single interrupt vector for PORTB, PORTC, PORTD and PORTE pin detect*/
|
||||
|
||||
.size __isr_vector, . - __isr_vector
|
||||
|
||||
/* Bootloader Config Area */
|
||||
.section .BootloaderConfig, "a"
|
||||
#ifdef BL_HAS_BOOTLOADER_CONFIG
|
||||
|
||||
//__bootloaderConfigurationArea ; 0x3c0
|
||||
// .long 'kcfg' // [00:03] tag - Tag value used to validate the bootloader configuration data. Must be set to 'kcfg'
|
||||
.long 0x6766636b
|
||||
.long 0xFFFFFFFF // [04:07] crcStartAddress
|
||||
.long 0xFFFFFFFF // [08:0b] crcByteCount
|
||||
.long 0xFFFFFFFF // [0c:0f] crcExpectedValue
|
||||
.byte 0xFF // [10:10] enabledPeripherals
|
||||
.byte 0xFF // [11:11] i2cSlaveAddress
|
||||
.short 5000 // [12:13] peripheralDetectionTimeoutMs - Timeout in milliseconds for peripheral detection before jumping to application code
|
||||
.short 0xFFFF // [14:15] usbVid
|
||||
.short 0xFFFF // [16:17] usbPid
|
||||
.long 0xFFFFFFFF // [18:1b] usbStringsPointer
|
||||
.byte 0xFF // [1c:1c] clockFlags - High Speed and other clock options
|
||||
.byte 0xFF // [1d:1d] clockDivider - One's complement of clock divider, zero divider is divide by 1
|
||||
.short 0xFFFF // [1e:1f] reserved
|
||||
// Fill to align with flash configuration field.
|
||||
.long 0xFFFFFFFF
|
||||
.long 0xFFFFFFFF
|
||||
.long 0xFFFFFFFF
|
||||
.long 0xFFFFFFFF
|
||||
.long 0xFFFFFFFF
|
||||
.long 0xFFFFFFFF
|
||||
.long 0xFFFFFFFF
|
||||
.long 0xFFFFFFFF // Reserved for user TRIM value
|
||||
#else
|
||||
//Fill to align with flash configuration field.
|
||||
.long 0xFFFFFFFF
|
||||
.long 0xFFFFFFFF
|
||||
.long 0xFFFFFFFF
|
||||
.long 0xFFFFFFFF
|
||||
.long 0xFFFFFFFF
|
||||
.long 0xFFFFFFFF
|
||||
.long 0xFFFFFFFF
|
||||
.long 0xFFFFFFFF
|
||||
.long 0xFFFFFFFF
|
||||
.long 0xFFFFFFFF
|
||||
.long 0xFFFFFFFF
|
||||
.long 0xFFFFFFFF
|
||||
.long 0xFFFFFFFF
|
||||
.long 0xFFFFFFFF
|
||||
.long 0xFFFFFFFF
|
||||
.long 0xFFFFFFFF // Reserved for user TRIM value
|
||||
#endif // BL_HAS_BOOTLOADER_CONFIG
|
||||
|
||||
/* Flash Configuration */
|
||||
.section .FlashConfig, "a"
|
||||
.long 0xFFFFFFFF
|
||||
.long 0xFFFFFFFF
|
||||
.long 0xFFFFFFFF
|
||||
.long 0xFFFFFFFE
|
||||
|
||||
.text
|
||||
.thumb
|
||||
|
||||
/* Reset Handler */
|
||||
|
||||
.thumb_func
|
||||
.align 2
|
||||
.globl Reset_Handler
|
||||
.weak Reset_Handler
|
||||
.type Reset_Handler, %function
|
||||
Reset_Handler:
|
||||
cpsid i /* Mask interrupts */
|
||||
#ifndef __NO_SYSTEM_INIT
|
||||
bl SystemInit
|
||||
#endif
|
||||
bl init_data_bss
|
||||
cpsie i /* Unmask interrupts */
|
||||
#ifndef __START
|
||||
#define __START _start
|
||||
#endif
|
||||
#ifndef __ATOLLIC__
|
||||
bl __START
|
||||
#else
|
||||
bl __libc_init_array
|
||||
bl main
|
||||
#endif
|
||||
.pool
|
||||
.size Reset_Handler, . - Reset_Handler
|
||||
|
||||
.align 1
|
||||
.thumb_func
|
||||
.weak DefaultISR
|
||||
.type DefaultISR, %function
|
||||
DefaultISR:
|
||||
ldr r0, =DefaultISR
|
||||
bx r0
|
||||
.size DefaultISR, . - DefaultISR
|
||||
|
||||
/* Macro to define default handlers. Default handler
|
||||
* will be weak symbol and just dead loops. They can be
|
||||
* overwritten by other handlers */
|
||||
.macro def_irq_handler handler_name
|
||||
.weak \handler_name
|
||||
.set \handler_name, DefaultISR
|
||||
.endm
|
||||
|
||||
/* Exception Handlers */
|
||||
def_irq_handler NMI_Handler
|
||||
def_irq_handler HardFault_Handler
|
||||
def_irq_handler SVC_Handler
|
||||
def_irq_handler PendSV_Handler
|
||||
def_irq_handler SysTick_Handler
|
||||
def_irq_handler DMA0_DMA4_IRQHandler
|
||||
def_irq_handler DMA1_DMA5_IRQHandler
|
||||
def_irq_handler DMA2_DMA6_IRQHandler
|
||||
def_irq_handler DMA3_DMA7_IRQHandler
|
||||
def_irq_handler DMA_Error_IRQHandler
|
||||
def_irq_handler FTFA_IRQHandler
|
||||
def_irq_handler LVD_LVW_IRQHandler
|
||||
def_irq_handler LLW_IRQHandler
|
||||
def_irq_handler I2C0_IRQHandler
|
||||
def_irq_handler Reserved25_IRQHandler
|
||||
def_irq_handler SPI0_IRQHandler
|
||||
def_irq_handler Reserved27_IRQHandler
|
||||
def_irq_handler UART0_IRQHandler
|
||||
def_irq_handler UART1_IRQHandler
|
||||
def_irq_handler CAN0_IRQHandler
|
||||
def_irq_handler ADC0_IRQHandler
|
||||
def_irq_handler ADC1_IRQHandler
|
||||
def_irq_handler FTM0_IRQHandler
|
||||
def_irq_handler FTM1_IRQHandler
|
||||
def_irq_handler FTM2_IRQHandler
|
||||
def_irq_handler CMP0_IRQHandler
|
||||
def_irq_handler CMP1_IRQHandler
|
||||
def_irq_handler FTM3_IRQHandler
|
||||
def_irq_handler WDOG_EWM_IRQHandler
|
||||
def_irq_handler FTM4_IRQHandler
|
||||
def_irq_handler DAC0_IRQHandler
|
||||
def_irq_handler FTM5_IRQHandler
|
||||
def_irq_handler MCG_IRQHandler
|
||||
def_irq_handler LPTMR0_IRQHandler
|
||||
def_irq_handler PDB0_PDB1_IRQHandler
|
||||
def_irq_handler PORTA_IRQHandler
|
||||
def_irq_handler PORTB_PORTC_PORTD_PORTE_IRQHandler
|
||||
|
||||
.end
|
||||
469
targets/MKV11Z7/src/startup/iar/startup_MKV11Z7.s
Normal file
469
targets/MKV11Z7/src/startup/iar/startup_MKV11Z7.s
Normal file
@@ -0,0 +1,469 @@
|
||||
; ---------------------------------------------------------------------------------------
|
||||
; @file: startup_MKV11Z7.s
|
||||
; @purpose: CMSIS Cortex-M0P Core Device Startup File
|
||||
; MKV11Z7
|
||||
; @version: 1.0
|
||||
; @date: 2014-12-14
|
||||
; @build: b150202
|
||||
; ---------------------------------------------------------------------------------------
|
||||
;
|
||||
; Copyright (c) 1997 - 2015 , Freescale Semiconductor, Inc.
|
||||
; All rights reserved.
|
||||
;
|
||||
; Redistribution and use in source and binary forms, with or without modification,
|
||||
; are permitted provided that the following conditions are met:
|
||||
;
|
||||
; o Redistributions of source code must retain the above copyright notice, this list
|
||||
; of conditions and the following disclaimer.
|
||||
;
|
||||
; o Redistributions in binary form must reproduce the above copyright notice, this
|
||||
; list of conditions and the following disclaimer in the documentation and/or
|
||||
; other materials provided with the distribution.
|
||||
;
|
||||
; o Neither the name of Freescale Semiconductor, Inc. nor the names of its
|
||||
; contributors may be used to endorse or promote products derived from this
|
||||
; software without specific prior written permission.
|
||||
;
|
||||
; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
; ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||
; ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
; (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
; ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
;
|
||||
; The modules in this file are included in the libraries, and may be replaced
|
||||
; by any user-defined modules that define the PUBLIC symbol _program_start or
|
||||
; a user defined start symbol.
|
||||
; To override the cstartup defined in the library, simply add your modified
|
||||
; version to the workbench project.
|
||||
;
|
||||
; The vector table is normally located at address 0.
|
||||
; When debugging in RAM, it can be located in RAM, aligned to at least 2^6.
|
||||
; The name "__vector_table" has special meaning for C-SPY:
|
||||
; it is where the SP start value is found, and the NVIC vector
|
||||
; table register (VTOR) is initialized to this address if != 0.
|
||||
;
|
||||
; Cortex-M version
|
||||
;
|
||||
|
||||
MODULE ?cstartup
|
||||
|
||||
;; Forward declaration of sections.
|
||||
SECTION CSTACK:DATA:NOROOT(3)
|
||||
|
||||
SECTION .intvec:CODE:NOROOT(2)
|
||||
|
||||
EXTERN __iar_program_start
|
||||
EXTERN SystemInit
|
||||
EXTERN init_data_bss
|
||||
PUBLIC __vector_table
|
||||
PUBLIC __vector_table_0x1c
|
||||
PUBLIC __Vectors
|
||||
PUBLIC __Vectors_End
|
||||
PUBLIC __Vectors_Size
|
||||
|
||||
DATA
|
||||
|
||||
__vector_table
|
||||
DCD sfe(CSTACK)
|
||||
DCD Reset_Handler
|
||||
|
||||
DCD NMI_Handler ;NMI Handler
|
||||
DCD HardFault_Handler ;Hard Fault Handler
|
||||
DCD 0 ;Reserved
|
||||
DCD 0 ;Reserved
|
||||
DCD 0 ;Reserved
|
||||
__vector_table_0x1c
|
||||
DCD 0 ;Reserved
|
||||
DCD 0 ;Reserved
|
||||
DCD 0 ;Reserved
|
||||
DCD 0 ;Reserved
|
||||
DCD SVC_Handler ;SVCall Handler
|
||||
DCD 0 ;Reserved
|
||||
DCD 0 ;Reserved
|
||||
DCD PendSV_Handler ;PendSV Handler
|
||||
DCD SysTick_Handler ;SysTick Handler
|
||||
|
||||
;External Interrupts
|
||||
DCD DMA0_DMA4_IRQHandler ;DMA channel 0 and 4 transfer complete
|
||||
DCD DMA1_DMA5_IRQHandler ;DMA channel 1 and 5 transfer complete
|
||||
DCD DMA2_DMA6_IRQHandler ;DMA channel 2 and 6 transfer complete
|
||||
DCD DMA3_DMA7_IRQHandler ;DMA channel 2 and 7 transfer complete
|
||||
DCD DMA_Error_IRQHandler ;DMA error interrupt channels 0-7
|
||||
DCD FTFA_IRQHandler ;FTFA command complete and read collision
|
||||
DCD LVD_LVW_IRQHandler ;Low-voltage detect, low-voltage warning
|
||||
DCD LLW_IRQHandler ;Low Leakage Wakeup
|
||||
DCD I2C0_IRQHandler ;I2C0 interrupt
|
||||
DCD Reserved25_IRQHandler ;Reserved interrupt
|
||||
DCD SPI0_IRQHandler ;SPI0 single interrupt vector for all sources
|
||||
DCD Reserved27_IRQHandler ;Reserved interrupt
|
||||
DCD UART0_IRQHandler ;UART0 status and error
|
||||
DCD UART1_IRQHandler ;UART1 status and error
|
||||
DCD CAN0_IRQHandler ;CAN0 interrupt
|
||||
DCD ADC0_IRQHandler ;ADC0 interrupt
|
||||
DCD ADC1_IRQHandler ;ADC1 interrupt
|
||||
DCD FTM0_IRQHandler ;FTM0 single interrupt vector for all sources
|
||||
DCD FTM1_IRQHandler ;FTM1 single interrupt vector for all sources
|
||||
DCD FTM2_IRQHandler ;FTM2 single interrupt vector for all sources
|
||||
DCD CMP0_IRQHandler ;CMP0 interrupt
|
||||
DCD CMP1_IRQHandler ;CMP1 interrupt
|
||||
DCD FTM3_IRQHandler ;FTM3 single interrupt vector for all sources
|
||||
DCD WDOG_EWM_IRQHandler ;Single interrupt vector for WDOG and EWM
|
||||
DCD FTM4_IRQHandler ;FTM4 single interrupt vector for all sources
|
||||
DCD DAC0_IRQHandler ;DAC0 interrupt
|
||||
DCD FTM5_IRQHandler ;FTM5 single interrupt vector for all sources
|
||||
DCD MCG_IRQHandler ;MCG interrupt
|
||||
DCD LPTMR0_IRQHandler ;LPTMR0 interrupt
|
||||
DCD PDB0_PDB1_IRQHandler ;Single interrupt vector for PDB0 and PDB1
|
||||
DCD PORTA_IRQHandler ;PORTA pin detect
|
||||
DCD PORTB_PORTC_PORTD_PORTE_IRQHandler ;Single interrupt vector for PORTB, PORTC, PORTD and PORTE pin detect
|
||||
DCD DefaultISR ;48
|
||||
DCD DefaultISR ;49
|
||||
DCD DefaultISR ;50
|
||||
DCD DefaultISR ;51
|
||||
DCD DefaultISR ;52
|
||||
DCD DefaultISR ;53
|
||||
DCD DefaultISR ;54
|
||||
DCD DefaultISR ;55
|
||||
DCD DefaultISR ;56
|
||||
DCD DefaultISR ;57
|
||||
DCD DefaultISR ;58
|
||||
DCD DefaultISR ;59
|
||||
DCD DefaultISR ;60
|
||||
DCD DefaultISR ;61
|
||||
DCD DefaultISR ;62
|
||||
DCD DefaultISR ;63
|
||||
DCD DefaultISR ;64
|
||||
DCD DefaultISR ;65
|
||||
DCD DefaultISR ;66
|
||||
DCD DefaultISR ;67
|
||||
DCD DefaultISR ;68
|
||||
DCD DefaultISR ;69
|
||||
DCD DefaultISR ;70
|
||||
DCD DefaultISR ;71
|
||||
DCD DefaultISR ;72
|
||||
DCD DefaultISR ;73
|
||||
DCD DefaultISR ;74
|
||||
DCD DefaultISR ;75
|
||||
DCD DefaultISR ;76
|
||||
DCD DefaultISR ;77
|
||||
DCD DefaultISR ;78
|
||||
DCD DefaultISR ;79
|
||||
DCD DefaultISR ;80
|
||||
DCD DefaultISR ;81
|
||||
DCD DefaultISR ;82
|
||||
DCD DefaultISR ;83
|
||||
DCD DefaultISR ;84
|
||||
DCD DefaultISR ;85
|
||||
DCD DefaultISR ;86
|
||||
DCD DefaultISR ;87
|
||||
DCD DefaultISR ;88
|
||||
DCD DefaultISR ;89
|
||||
DCD DefaultISR ;90
|
||||
DCD DefaultISR ;91
|
||||
DCD DefaultISR ;92
|
||||
DCD DefaultISR ;93
|
||||
DCD DefaultISR ;94
|
||||
DCD DefaultISR ;95
|
||||
DCD DefaultISR ;96
|
||||
DCD DefaultISR ;97
|
||||
DCD DefaultISR ;98
|
||||
DCD DefaultISR ;99
|
||||
DCD DefaultISR ;100
|
||||
DCD DefaultISR ;101
|
||||
DCD DefaultISR ;102
|
||||
DCD DefaultISR ;103
|
||||
DCD DefaultISR ;104
|
||||
DCD DefaultISR ;105
|
||||
DCD DefaultISR ;106
|
||||
DCD DefaultISR ;107
|
||||
DCD DefaultISR ;108
|
||||
DCD DefaultISR ;109
|
||||
DCD DefaultISR ;110
|
||||
DCD DefaultISR ;111
|
||||
DCD DefaultISR ;112
|
||||
DCD DefaultISR ;113
|
||||
DCD DefaultISR ;114
|
||||
DCD DefaultISR ;115
|
||||
DCD DefaultISR ;116
|
||||
DCD DefaultISR ;117
|
||||
DCD DefaultISR ;118
|
||||
DCD DefaultISR ;119
|
||||
DCD DefaultISR ;120
|
||||
DCD DefaultISR ;121
|
||||
DCD DefaultISR ;122
|
||||
DCD DefaultISR ;123
|
||||
DCD DefaultISR ;124
|
||||
DCD DefaultISR ;125
|
||||
DCD DefaultISR ;126
|
||||
DCD DefaultISR ;127
|
||||
DCD DefaultISR ;128
|
||||
DCD DefaultISR ;129
|
||||
DCD DefaultISR ;130
|
||||
DCD DefaultISR ;131
|
||||
DCD DefaultISR ;132
|
||||
DCD DefaultISR ;133
|
||||
DCD DefaultISR ;134
|
||||
DCD DefaultISR ;125
|
||||
DCD DefaultISR ;136
|
||||
DCD DefaultISR ;137
|
||||
DCD DefaultISR ;138
|
||||
DCD DefaultISR ;139
|
||||
DCD DefaultISR ;140
|
||||
DCD DefaultISR ;141
|
||||
DCD DefaultISR ;142
|
||||
DCD DefaultISR ;143
|
||||
DCD DefaultISR ;144
|
||||
DCD DefaultISR ;145
|
||||
DCD DefaultISR ;146
|
||||
DCD DefaultISR ;147
|
||||
DCD DefaultISR ;148
|
||||
DCD DefaultISR ;149
|
||||
DCD DefaultISR ;150
|
||||
DCD DefaultISR ;151
|
||||
DCD DefaultISR ;152
|
||||
DCD DefaultISR ;153
|
||||
DCD DefaultISR ;154
|
||||
DCD DefaultISR ;155
|
||||
DCD DefaultISR ;156
|
||||
DCD DefaultISR ;157
|
||||
DCD DefaultISR ;158
|
||||
DCD DefaultISR ;159
|
||||
DCD DefaultISR ;160
|
||||
DCD DefaultISR ;161
|
||||
DCD DefaultISR ;162
|
||||
DCD DefaultISR ;163
|
||||
DCD DefaultISR ;164
|
||||
DCD DefaultISR ;165
|
||||
DCD DefaultISR ;166
|
||||
DCD DefaultISR ;167
|
||||
DCD DefaultISR ;168
|
||||
DCD DefaultISR ;169
|
||||
DCD DefaultISR ;170
|
||||
DCD DefaultISR ;171
|
||||
DCD DefaultISR ;172
|
||||
DCD DefaultISR ;173
|
||||
DCD DefaultISR ;174
|
||||
DCD DefaultISR ;175
|
||||
DCD DefaultISR ;176
|
||||
DCD DefaultISR ;177
|
||||
DCD DefaultISR ;178
|
||||
DCD DefaultISR ;179
|
||||
DCD DefaultISR ;180
|
||||
DCD DefaultISR ;181
|
||||
DCD DefaultISR ;182
|
||||
DCD DefaultISR ;183
|
||||
DCD DefaultISR ;184
|
||||
DCD DefaultISR ;185
|
||||
DCD DefaultISR ;186
|
||||
DCD DefaultISR ;187
|
||||
DCD DefaultISR ;188
|
||||
DCD DefaultISR ;189
|
||||
DCD DefaultISR ;190
|
||||
DCD DefaultISR ;191
|
||||
DCD DefaultISR ;192
|
||||
DCD DefaultISR ;193
|
||||
DCD DefaultISR ;194
|
||||
DCD DefaultISR ;195
|
||||
DCD DefaultISR ;196
|
||||
DCD DefaultISR ;197
|
||||
DCD DefaultISR ;198
|
||||
DCD DefaultISR ;199
|
||||
DCD DefaultISR ;200
|
||||
DCD DefaultISR ;201
|
||||
DCD DefaultISR ;202
|
||||
DCD DefaultISR ;203
|
||||
DCD DefaultISR ;204
|
||||
DCD DefaultISR ;205
|
||||
DCD DefaultISR ;206
|
||||
DCD DefaultISR ;207
|
||||
DCD DefaultISR ;208
|
||||
DCD DefaultISR ;209
|
||||
DCD DefaultISR ;210
|
||||
DCD DefaultISR ;211
|
||||
DCD DefaultISR ;212
|
||||
DCD DefaultISR ;213
|
||||
DCD DefaultISR ;214
|
||||
DCD DefaultISR ;215
|
||||
DCD DefaultISR ;216
|
||||
DCD DefaultISR ;217
|
||||
DCD DefaultISR ;218
|
||||
DCD DefaultISR ;219
|
||||
DCD DefaultISR ;220
|
||||
DCD DefaultISR ;221
|
||||
DCD DefaultISR ;222
|
||||
DCD DefaultISR ;223
|
||||
DCD DefaultISR ;224
|
||||
DCD DefaultISR ;225
|
||||
DCD DefaultISR ;226
|
||||
DCD DefaultISR ;227
|
||||
DCD DefaultISR ;228
|
||||
DCD DefaultISR ;229
|
||||
DCD DefaultISR ;230
|
||||
DCD DefaultISR ;231
|
||||
DCD DefaultISR ;232
|
||||
DCD DefaultISR ;233
|
||||
DCD DefaultISR ;234
|
||||
DCD DefaultISR ;235
|
||||
DCD DefaultISR ;236
|
||||
DCD DefaultISR ;237
|
||||
DCD DefaultISR ;238
|
||||
DCD DefaultISR ;239
|
||||
__Vectors_End
|
||||
|
||||
#ifdef BL_HAS_BOOTLOADER_CONFIG
|
||||
|
||||
__bootloaderConfigurationArea ; 0x3c0
|
||||
DCD 'kcfg' ; [00:03] tag - Tag value used to validate the bootloader configuration data. Must be set to 'kcfg'.
|
||||
DCD 0xFFFFFFFF ; [04:07] crcStartAddress
|
||||
DCD 0xFFFFFFFF ; [08:0b] crcByteCount
|
||||
DCD 0xFFFFFFFF ; [0c:0f] crcExpectedValue
|
||||
DCB 0xFF ; [10:10] enabledPeripherals
|
||||
DCB 0xFF ; [11:11] i2cSlaveAddress
|
||||
DCW 5000 ; [12:13] peripheralDetectionTimeoutMs - Timeout in milliseconds for peripheral detection before jumping to application code
|
||||
DCW 0xFFFF ; [14:15] usbVid
|
||||
DCW 0xFFFF ; [16:17] usbPid
|
||||
DCD 0xFFFFFFFF ; [18:1b] usbStringsPointer
|
||||
DCB 0xFF ; [1c:1c] clockFlags - High Speed and other clock options
|
||||
DCB 0xFF ; [1d:1d] clockDivider - One's complement of clock divider, zero divider is divide by 1
|
||||
DCW 0xFFFF ; [1e:1f] reserved
|
||||
; Fill to align with flash configuration field.
|
||||
REPT (0x400-0x3e0)/4 ; 0x3E0 - 0x3FF
|
||||
DCD 0xFFFFFFFF ; Reserved for user TRIM value
|
||||
ENDR
|
||||
#else
|
||||
; Fill to align with flash configuration field.
|
||||
REPT (0x400-0x3c0)/4 ; 0x3c0:0x400
|
||||
DCD 0xFFFFFFFF ; Reserved for user TRIM value
|
||||
ENDR
|
||||
#endif // BL_HAS_BOOTLOADER_CONFIG
|
||||
|
||||
__FlashConfig
|
||||
DCD 0xFFFFFFFF
|
||||
DCD 0xFFFFFFFF
|
||||
DCD 0xFFFFFFFF
|
||||
DCD 0xFFFFFFFE
|
||||
__FlashConfig_End
|
||||
|
||||
__Vectors EQU __vector_table
|
||||
__Vectors_Size EQU __Vectors_End - __Vectors
|
||||
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;
|
||||
;; Default interrupt handlers.
|
||||
;;
|
||||
THUMB
|
||||
|
||||
PUBWEAK Reset_Handler
|
||||
SECTION .text:CODE:REORDER:NOROOT(2)
|
||||
Reset_Handler
|
||||
CPSID I ; Mask interrupts
|
||||
LDR R0, =SystemInit
|
||||
BLX R0
|
||||
LDR R0, =init_data_bss
|
||||
BLX R0
|
||||
CPSIE I ; Unmask interrupts
|
||||
LDR R0, =__iar_program_start
|
||||
BX R0
|
||||
|
||||
PUBWEAK NMI_Handler
|
||||
SECTION .text:CODE:REORDER:NOROOT(1)
|
||||
NMI_Handler
|
||||
B .
|
||||
|
||||
PUBWEAK HardFault_Handler
|
||||
SECTION .text:CODE:REORDER:NOROOT(1)
|
||||
HardFault_Handler
|
||||
B .
|
||||
|
||||
PUBWEAK SVC_Handler
|
||||
SECTION .text:CODE:REORDER:NOROOT(1)
|
||||
SVC_Handler
|
||||
B .
|
||||
|
||||
PUBWEAK PendSV_Handler
|
||||
SECTION .text:CODE:REORDER:NOROOT(1)
|
||||
PendSV_Handler
|
||||
B .
|
||||
|
||||
PUBWEAK SysTick_Handler
|
||||
SECTION .text:CODE:REORDER:NOROOT(1)
|
||||
SysTick_Handler
|
||||
B .
|
||||
|
||||
PUBWEAK DMA0_DMA4_IRQHandler
|
||||
PUBWEAK DMA1_DMA5_IRQHandler
|
||||
PUBWEAK DMA2_DMA6_IRQHandler
|
||||
PUBWEAK DMA3_DMA7_IRQHandler
|
||||
PUBWEAK DMA_Error_IRQHandler
|
||||
PUBWEAK FTFA_IRQHandler
|
||||
PUBWEAK LVD_LVW_IRQHandler
|
||||
PUBWEAK LLW_IRQHandler
|
||||
PUBWEAK I2C0_IRQHandler
|
||||
PUBWEAK Reserved25_IRQHandler
|
||||
PUBWEAK SPI0_IRQHandler
|
||||
PUBWEAK Reserved27_IRQHandler
|
||||
PUBWEAK UART0_IRQHandler
|
||||
PUBWEAK UART1_IRQHandler
|
||||
PUBWEAK CAN0_IRQHandler
|
||||
PUBWEAK ADC0_IRQHandler
|
||||
PUBWEAK ADC1_IRQHandler
|
||||
PUBWEAK FTM0_IRQHandler
|
||||
PUBWEAK FTM1_IRQHandler
|
||||
PUBWEAK FTM2_IRQHandler
|
||||
PUBWEAK CMP0_IRQHandler
|
||||
PUBWEAK CMP1_IRQHandler
|
||||
PUBWEAK FTM3_IRQHandler
|
||||
PUBWEAK WDOG_EWM_IRQHandler
|
||||
PUBWEAK FTM4_IRQHandler
|
||||
PUBWEAK DAC0_IRQHandler
|
||||
PUBWEAK FTM5_IRQHandler
|
||||
PUBWEAK MCG_IRQHandler
|
||||
PUBWEAK LPTMR0_IRQHandler
|
||||
PUBWEAK PDB0_PDB1_IRQHandler
|
||||
PUBWEAK PORTA_IRQHandler
|
||||
PUBWEAK PORTB_PORTC_PORTD_PORTE_IRQHandler
|
||||
PUBWEAK DefaultISR
|
||||
SECTION .text:CODE:REORDER:NOROOT(2)
|
||||
DMA0_DMA4_IRQHandler
|
||||
DMA1_DMA5_IRQHandler
|
||||
DMA2_DMA6_IRQHandler
|
||||
DMA3_DMA7_IRQHandler
|
||||
DMA_Error_IRQHandler
|
||||
FTFA_IRQHandler
|
||||
LVD_LVW_IRQHandler
|
||||
LLW_IRQHandler
|
||||
I2C0_IRQHandler
|
||||
Reserved25_IRQHandler
|
||||
SPI0_IRQHandler
|
||||
Reserved27_IRQHandler
|
||||
UART0_IRQHandler
|
||||
UART1_IRQHandler
|
||||
CAN0_IRQHandler
|
||||
ADC0_IRQHandler
|
||||
ADC1_IRQHandler
|
||||
FTM0_IRQHandler
|
||||
FTM1_IRQHandler
|
||||
FTM2_IRQHandler
|
||||
CMP0_IRQHandler
|
||||
CMP1_IRQHandler
|
||||
FTM3_IRQHandler
|
||||
WDOG_EWM_IRQHandler
|
||||
FTM4_IRQHandler
|
||||
DAC0_IRQHandler
|
||||
FTM5_IRQHandler
|
||||
MCG_IRQHandler
|
||||
LPTMR0_IRQHandler
|
||||
PDB0_PDB1_IRQHandler
|
||||
PORTA_IRQHandler
|
||||
PORTB_PORTC_PORTD_PORTE_IRQHandler
|
||||
DefaultISR
|
||||
LDR R0, =DefaultISR
|
||||
BX R0
|
||||
|
||||
END
|
||||
63
targets/MKV11Z7/src/startup/system_MKV11Z7.c
Normal file
63
targets/MKV11Z7/src/startup/system_MKV11Z7.c
Normal file
@@ -0,0 +1,63 @@
|
||||
/*
|
||||
* Copyright (c) 2014-2015, Freescale Semiconductor, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* o Redistributions of source code must retain the above copyright notice, this list
|
||||
* of conditions and the following disclaimer.
|
||||
*
|
||||
* o Redistributions in binary form must reproduce the above copyright notice, this
|
||||
* list of conditions and the following disclaimer in the documentation and/or
|
||||
* other materials provided with the distribution.
|
||||
*
|
||||
* o Neither the name of Freescale Semiconductor, Inc. nor the names of its
|
||||
* contributors may be used to endorse or promote products derived from this
|
||||
* software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
#include "system_MKV11Z7.h"
|
||||
#include "fsl_device_registers.h"
|
||||
#include "target_config.h"
|
||||
|
||||
#ifndef DISABLE_WDOG
|
||||
#define DISABLE_WDOG 1
|
||||
#endif
|
||||
|
||||
/* ----------------------------------------------------------------------------
|
||||
-- Core clock
|
||||
---------------------------------------------------------------------------- */
|
||||
|
||||
uint32_t SystemCoreClock = kDefaultClock;
|
||||
|
||||
/* ----------------------------------------------------------------------------
|
||||
-- SystemInit()
|
||||
---------------------------------------------------------------------------- */
|
||||
|
||||
void SystemInit(void)
|
||||
{
|
||||
#if (DISABLE_WDOG)
|
||||
/* WDOG->UNLOCK: WDOGUNLOCK=0xC520 */
|
||||
WDOG->UNLOCK = WDOG_UNLOCK_WDOGUNLOCK(0xC520); /* Key 1 */
|
||||
/* WDOG->UNLOCK: WDOGUNLOCK=0xD928 */
|
||||
WDOG->UNLOCK = WDOG_UNLOCK_WDOGUNLOCK(0xD928); /* Key 2 */
|
||||
/* WDOG->STCTRLH:
|
||||
* ?=0,DISTESTWDOG=0,BYTESEL=0,TESTSEL=0,TESTWDOG=0,?=0,?=1,WAITEN=1,STOPEN=1,DBGEN=0,ALLOWUPDATE=1,WINEN=0,IRQRSTEN=0,CLKSRC=1,WDOGEN=0
|
||||
*/
|
||||
WDOG->STCTRLH = WDOG_STCTRLH_BYTESEL(0x00) | WDOG_STCTRLH_WAITEN_MASK | WDOG_STCTRLH_STOPEN_MASK |
|
||||
WDOG_STCTRLH_ALLOWUPDATE_MASK | WDOG_STCTRLH_CLKSRC_MASK | 0x0100U;
|
||||
#endif /* (DISABLE_WDOG) */
|
||||
}
|
||||
270
targets/MKV11Z7/src/startup/system_MKV11Z7.h
Normal file
270
targets/MKV11Z7/src/startup/system_MKV11Z7.h
Normal file
@@ -0,0 +1,270 @@
|
||||
/*
|
||||
** ###################################################################
|
||||
** Compilers: Keil ARM C/C++ Compiler
|
||||
** Freescale C/C++ for Embedded ARM
|
||||
** GNU C Compiler
|
||||
** GNU C Compiler - CodeSourcery Sourcery G++
|
||||
** IAR ANSI C/C++ Compiler for ARM
|
||||
**
|
||||
** Reference manual: KV11P64M75RM Rev.0, November 2014
|
||||
** Version: rev. 1.0, 2014-12-14
|
||||
** Build: b150202
|
||||
**
|
||||
** Abstract:
|
||||
** Provides a system configuration function and a global variable that
|
||||
** contains the system frequency. It configures the device and initializes
|
||||
** the oscillator (PLL) that is part of the microcontroller device.
|
||||
**
|
||||
** Copyright (c) 2014 Freescale Semiconductor, Inc.
|
||||
** All rights reserved.
|
||||
**
|
||||
** Redistribution and use in source and binary forms, with or without modification,
|
||||
** are permitted provided that the following conditions are met:
|
||||
**
|
||||
** o Redistributions of source code must retain the above copyright notice, this list
|
||||
** of conditions and the following disclaimer.
|
||||
**
|
||||
** o Redistributions in binary form must reproduce the above copyright notice, this
|
||||
** list of conditions and the following disclaimer in the documentation and/or
|
||||
** other materials provided with the distribution.
|
||||
**
|
||||
** o Neither the name of Freescale Semiconductor, Inc. nor the names of its
|
||||
** contributors may be used to endorse or promote products derived from this
|
||||
** software without specific prior written permission.
|
||||
**
|
||||
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
** DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||
** ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
** ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
**
|
||||
** http: www.freescale.com
|
||||
** mail: support@freescale.com
|
||||
**
|
||||
** Revisions:
|
||||
** - rev. 1.0 (2014-12-14)
|
||||
** Initial version.
|
||||
**
|
||||
** ###################################################################
|
||||
*/
|
||||
|
||||
/*!
|
||||
* @file MKV11Z7
|
||||
* @version 1.0
|
||||
* @date 2014-12-14
|
||||
* @brief Device specific configuration file for MKV11Z7 (header file)
|
||||
*
|
||||
* Provides a system configuration function and a global variable that contains
|
||||
* the system frequency. It configures the device and initializes the oscillator
|
||||
* (PLL) that is part of the microcontroller device.
|
||||
*/
|
||||
|
||||
#ifndef _SYSTEM_MKV11Z7_H_
|
||||
#define _SYSTEM_MKV11Z7_H_ /**< Symbol preventing repeated inclusion */
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifndef DISABLE_WDOG
|
||||
#define DISABLE_WDOG 1
|
||||
#endif
|
||||
|
||||
#ifndef CLOCK_SETUP
|
||||
#define CLOCK_SETUP 0
|
||||
#endif
|
||||
|
||||
/* MCG mode constants */
|
||||
|
||||
#define MCG_MODE_FEI 0U
|
||||
#define MCG_MODE_FBI 1U
|
||||
#define MCG_MODE_BLPI 2U
|
||||
#define MCG_MODE_FEE 3U
|
||||
#define MCG_MODE_FBE 4U
|
||||
#define MCG_MODE_BLPE 5U
|
||||
|
||||
/* Predefined clock setups
|
||||
0 ... Default part configuration
|
||||
Multipurpose Clock Generator (MCG) in FEI mode.
|
||||
Reference clock source for MCG module: Slow internal reference clock
|
||||
Core clock = 20.97152MHz
|
||||
Bus clock = 20.97152MHz
|
||||
1 ... Maximum achievable clock frequency configuration
|
||||
Multipurpose Clock Generator (MCG) in FEE mode.
|
||||
Reference clock source for MCG module: System oscillator reference clock
|
||||
Core clock = 75MHz
|
||||
Bus clock = 25MHz
|
||||
2 ... Chip internally clocked, ready for Very Low Power Run mode
|
||||
Multipurpose Clock Generator (MCG) in BLPI mode.
|
||||
Reference clock source for MCG module: Fast internal reference clock
|
||||
Core clock = 4MHz
|
||||
Bus clock = 0.8MHz
|
||||
3 ... Chip externally clocked, ready for Very Low Power Run mode
|
||||
Multipurpose Clock Generator (MCG) in BLPE mode.
|
||||
Reference clock source for MCG module: System oscillator reference clock
|
||||
Core clock = 3.333333333333MHz
|
||||
Bus clock = 0.833333333333MHz
|
||||
*/
|
||||
|
||||
/* Define clock source values */
|
||||
|
||||
#define CPU_XTAL_CLK_HZ 10000000u /* Value of the external crystal or oscillator clock frequency in Hz */
|
||||
#define CPU_INT_SLOW_CLK_HZ 32768u /* Value of the slow internal oscillator clock frequency in Hz */
|
||||
#define CPU_INT_FAST_CLK_HZ 4000000u /* Value of the fast internal oscillator clock frequency in Hz */
|
||||
#define CPU_INT_IRC_CLK_HZ 48000000u /* Value of the 48M internal oscillator clock frequency in Hz */
|
||||
|
||||
/* Low power mode enable */
|
||||
|
||||
/* SMC_PMPROT: ?=0,?=0,AVLP=1,?=0,?=0,?=0,AVLLS=1,?=0 */
|
||||
#define SYSTEM_SMC_PMPROT_VALUE \
|
||||
(SMC_PMPROT_AVLP_MASK | \
|
||||
SMC_PMPROT_AVLLS_MASK) /* Mask of allowed low power modes used to initialize power modes protection register */
|
||||
|
||||
/* Internal reference clock trim */
|
||||
|
||||
/* #undef SLOW_TRIM_ADDRESS */ /* Slow oscillator not trimmed. Commented out for MISRA compliance. */
|
||||
/* #undef SLOW_FINE_TRIM_ADDRESS */ /* Slow oscillator not trimmed. Commented out for MISRA compliance. */
|
||||
/* #undef FAST_TRIM_ADDRESS */ /* Fast oscillator not trimmed. Commented out for MISRA compliance. */
|
||||
/* #undef FAST_FINE_TRIM_ADDRESS */ /* Fast oscillator not trimmed. Commented out for MISRA compliance. */
|
||||
|
||||
/* System clock */
|
||||
|
||||
#ifdef CLOCK_SETUP
|
||||
#if (CLOCK_SETUP == 0)
|
||||
#define DEFAULT_SYSTEM_CLOCK 20971520UL /* Default System clock value */
|
||||
#define MCG_MODE MCG_MODE_FEI /* Clock generator mode */
|
||||
/* MCG_C1: CLKS=0,FRDIV=0,IREFS=1,IRCLKEN=1,IREFSTEN=0 */
|
||||
#define SYSTEM_MCG_C1_VALUE 0x06U /* MCG_C1 */
|
||||
/* MCG_C2: LOCRE0=0,FCFTRIM=0,RANGE=2,HGO=0,EREFS=1,LP=0,IRCS=0 */
|
||||
#define SYSTEM_MCG_C2_VALUE 0x24U /* MCG_C2 */
|
||||
/* MCG_C4: DMX32=0,DRST_DRS=0,FCTRIM=0,SCFTRIM=0 */
|
||||
#define SYSTEM_MCG_C4_VALUE 0x00U /* MCG_C4 */
|
||||
/* MCG_C6: CME=0 */
|
||||
#define SYSTEM_MCG_C6_VALUE 0x00U /* MCG_C6 */
|
||||
/* MCG_SC: ATME=0,ATMS=0,ATMF=0,FLTPRSRV=0,FCRDIV=0,LOCS0=0 */
|
||||
#define SYSTEM_MCG_SC_VALUE 0x00U /* MCG_SC */
|
||||
/* OSC0_CR: ERCLKEN=1,EREFSTEN=0,SC2P=0,SC4P=0,SC8P=0,SC16P=0 */
|
||||
#define SYSTEM_OSC0_CR_VALUE 0x80U /* OSC0_CR */
|
||||
/* SMC_PMCTRL: RUNM=0,STOPA=0,STOPM=0 */
|
||||
#define SYSTEM_SMC_PMCTRL_VALUE 0x00U /* SMC_PMCTRL */
|
||||
/* SIM_SOPT1: OSC32KSEL=3 */
|
||||
#define SYSTEM_SIM_SOPT1_VALUE 0x000C0000UL /* SIM_SOPT1 */
|
||||
/* SIM_SOPT2: FTMFFCLKSEL=0 */
|
||||
#define SYSTEM_SIM_SOPT2_VALUE 0x00UL /* SIM_SOPT2 */
|
||||
/* SIM_CLKDIV1: OUTDIV1=0,OUTDIV4=0,OUTDIV5EN=0,OUTDIV5=0 */
|
||||
#define SYSTEM_SIM_CLKDIV1_VALUE 0x00UL /* SIM_CLKDIV1 */
|
||||
#elif(CLOCK_SETUP == 1)
|
||||
#define DEFAULT_SYSTEM_CLOCK 75000000UL /* Default System clock value */
|
||||
#define MCG_MODE MCG_MODE_FEE /* Clock generator mode */
|
||||
/* MCG_C1: CLKS=0,FRDIV=3,IREFS=0,IRCLKEN=1,IREFSTEN=0 */
|
||||
#define SYSTEM_MCG_C1_VALUE 0x1AU /* MCG_C1 */
|
||||
/* MCG_C2: LOCRE0=0,FCFTRIM=0,RANGE=2,HGO=0,EREFS=1,LP=0,IRCS=0 */
|
||||
#define SYSTEM_MCG_C2_VALUE 0x24U /* MCG_C2 */
|
||||
/* MCG_C4: DMX32=0,DRST_DRS=2,FCTRIM=0,SCFTRIM=0 */
|
||||
#define SYSTEM_MCG_C4_VALUE 0x40U /* MCG_C4 */
|
||||
/* MCG_C6: CME=0 */
|
||||
#define SYSTEM_MCG_C6_VALUE 0x00U /* MCG_C6 */
|
||||
/* MCG_SC: ATME=0,ATMS=0,ATMF=0,FLTPRSRV=0,FCRDIV=0,LOCS0=0 */
|
||||
#define SYSTEM_MCG_SC_VALUE 0x00U /* MCG_SC */
|
||||
/* OSC0_CR: ERCLKEN=1,EREFSTEN=0,SC2P=0,SC4P=0,SC8P=0,SC16P=0 */
|
||||
#define SYSTEM_OSC0_CR_VALUE 0x80U /* OSC0_CR */
|
||||
/* SMC_PMCTRL: RUNM=0,STOPA=0,STOPM=0 */
|
||||
#define SYSTEM_SMC_PMCTRL_VALUE 0x00U /* SMC_PMCTRL */
|
||||
/* SIM_SOPT1: OSC32KSEL=3 */
|
||||
#define SYSTEM_SIM_SOPT1_VALUE 0x000C0000UL /* SIM_SOPT1 */
|
||||
/* SIM_SOPT2: FTMFFCLKSEL=0 */
|
||||
#define SYSTEM_SIM_SOPT2_VALUE 0x00UL /* SIM_SOPT2 */
|
||||
/* SIM_CLKDIV1: OUTDIV1=0,OUTDIV4=2,OUTDIV5EN=0,OUTDIV5=0 */
|
||||
#define SYSTEM_SIM_CLKDIV1_VALUE 0x00020000UL /* SIM_CLKDIV1 */
|
||||
#elif(CLOCK_SETUP == 2)
|
||||
#define DEFAULT_SYSTEM_CLOCK 4000000UL /* Default System clock value */
|
||||
#define MCG_MODE MCG_MODE_BLPI /* Clock generator mode */
|
||||
/* MCG_C1: CLKS=1,FRDIV=0,IREFS=1,IRCLKEN=1,IREFSTEN=0 */
|
||||
#define SYSTEM_MCG_C1_VALUE 0x46U /* MCG_C1 */
|
||||
/* MCG_C2: LOCRE0=0,FCFTRIM=0,RANGE=2,HGO=0,EREFS=1,LP=1,IRCS=1 */
|
||||
#define SYSTEM_MCG_C2_VALUE 0x27U /* MCG_C2 */
|
||||
/* MCG_C4: DMX32=0,DRST_DRS=0,FCTRIM=0,SCFTRIM=0 */
|
||||
#define SYSTEM_MCG_C4_VALUE 0x00U /* MCG_C4 */
|
||||
/* MCG_C6: CME=0 */
|
||||
#define SYSTEM_MCG_C6_VALUE 0x00U /* MCG_C6 */
|
||||
/* MCG_SC: ATME=0,ATMS=0,ATMF=0,FLTPRSRV=0,FCRDIV=0,LOCS0=0 */
|
||||
#define SYSTEM_MCG_SC_VALUE 0x00U /* MCG_SC */
|
||||
/* OSC0_CR: ERCLKEN=1,EREFSTEN=0,SC2P=0,SC4P=0,SC8P=0,SC16P=0 */
|
||||
#define SYSTEM_OSC0_CR_VALUE 0x80U /* OSC0_CR */
|
||||
/* SMC_PMCTRL: RUNM=0,STOPA=0,STOPM=0 */
|
||||
#define SYSTEM_SMC_PMCTRL_VALUE 0x00U /* SMC_PMCTRL */
|
||||
/* SIM_SOPT1: OSC32KSEL=3 */
|
||||
#define SYSTEM_SIM_SOPT1_VALUE 0x000C0000UL /* SIM_SOPT1 */
|
||||
/* SIM_SOPT2: FTMFFCLKSEL=0 */
|
||||
#define SYSTEM_SIM_SOPT2_VALUE 0x00UL /* SIM_SOPT2 */
|
||||
/* SIM_CLKDIV1: OUTDIV1=0,OUTDIV4=4,OUTDIV5EN=0,OUTDIV5=0 */
|
||||
#define SYSTEM_SIM_CLKDIV1_VALUE 0x00040000UL /* SIM_CLKDIV1 */
|
||||
#elif(CLOCK_SETUP == 3)
|
||||
#define DEFAULT_SYSTEM_CLOCK 3333333UL /* Default System clock value */
|
||||
#define MCG_MODE MCG_MODE_BLPE /* Clock generator mode */
|
||||
/* MCG_C1: CLKS=2,FRDIV=3,IREFS=0,IRCLKEN=1,IREFSTEN=0 */
|
||||
#define SYSTEM_MCG_C1_VALUE 0x9AU /* MCG_C1 */
|
||||
/* MCG_C2: LOCRE0=0,FCFTRIM=0,RANGE=2,HGO=0,EREFS=1,LP=1,IRCS=1 */
|
||||
#define SYSTEM_MCG_C2_VALUE 0x27U /* MCG_C2 */
|
||||
/* MCG_C4: DMX32=0,DRST_DRS=0,FCTRIM=0,SCFTRIM=0 */
|
||||
#define SYSTEM_MCG_C4_VALUE 0x00U /* MCG_C4 */
|
||||
/* MCG_C6: CME=0 */
|
||||
#define SYSTEM_MCG_C6_VALUE 0x00U /* MCG_C6 */
|
||||
/* MCG_SC: ATME=0,ATMS=0,ATMF=0,FLTPRSRV=0,FCRDIV=0,LOCS0=0 */
|
||||
#define SYSTEM_MCG_SC_VALUE 0x00U /* MCG_SC */
|
||||
/* OSC0_CR: ERCLKEN=1,EREFSTEN=0,SC2P=0,SC4P=0,SC8P=0,SC16P=0 */
|
||||
#define SYSTEM_OSC0_CR_VALUE 0x80U /* OSC0_CR */
|
||||
/* SMC_PMCTRL: RUNM=0,STOPA=0,STOPM=0 */
|
||||
#define SYSTEM_SMC_PMCTRL_VALUE 0x00U /* SMC_PMCTRL */
|
||||
/* SIM_SOPT1: OSC32KSEL=3 */
|
||||
#define SYSTEM_SIM_SOPT1_VALUE 0x000C0000UL /* SIM_SOPT1 */
|
||||
/* SIM_SOPT2: FTMFFCLKSEL=0 */
|
||||
#define SYSTEM_SIM_SOPT2_VALUE 0x00UL /* SIM_SOPT2 */
|
||||
/* SIM_CLKDIV1: OUTDIV1=2,OUTDIV4=3,OUTDIV5EN=0,OUTDIV5=0 */
|
||||
#define SYSTEM_SIM_CLKDIV1_VALUE 0x20030000UL /* SIM_CLKDIV1 */
|
||||
#endif
|
||||
#else
|
||||
#define DEFAULT_SYSTEM_CLOCK 20971520UL /* Default System clock value */
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief System clock frequency (core clock)
|
||||
*
|
||||
* The system clock frequency supplied to the SysTick timer and the processor
|
||||
* core clock. This variable can be used by the user application to setup the
|
||||
* SysTick timer or configure other parameters. It may also be used by debugger to
|
||||
* query the frequency of the debug timer or configure the trace clock speed
|
||||
* SystemCoreClock is initialized with a correct predefined value.
|
||||
*/
|
||||
extern uint32_t SystemCoreClock;
|
||||
|
||||
/**
|
||||
* @brief Setup the microcontroller system.
|
||||
*
|
||||
* Typically this function configures the oscillator (PLL) that is part of the
|
||||
* microcontroller device. For systems with variable clock speed it also updates
|
||||
* the variable SystemCoreClock. SystemInit is called from startup_device file.
|
||||
*/
|
||||
void SystemInit(void);
|
||||
|
||||
/**
|
||||
* @brief Updates the SystemCoreClock variable.
|
||||
*
|
||||
* It must be called whenever the core clock is changed during program
|
||||
* execution. SystemCoreClockUpdate() evaluates the clock register settings and calculates
|
||||
* the current core clock.
|
||||
*/
|
||||
void SystemCoreClockUpdate(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* #if !defined(_SYSTEM_MKV11Z7_H_) */
|
||||
70
targets/MKV11Z7/src/target_config.h
Normal file
70
targets/MKV11Z7/src/target_config.h
Normal file
@@ -0,0 +1,70 @@
|
||||
/*
|
||||
* Copyright (c) 2014, Freescale Semiconductor, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* o Redistributions of source code must retain the above copyright notice, this list
|
||||
* of conditions and the following disclaimer.
|
||||
*
|
||||
* o Redistributions in binary form must reproduce the above copyright notice, this
|
||||
* list of conditions and the following disclaimer in the documentation and/or
|
||||
* other materials provided with the distribution.
|
||||
*
|
||||
* o Neither the name of Freescale Semiconductor, Inc. nor the names of its
|
||||
* contributors may be used to endorse or promote products derived from this
|
||||
* software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
#if !defined(__TARGET_CONFIG_H__)
|
||||
#define __TARGET_CONFIG_H__
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Definitions
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//! @brief Constants for clock frequencies.
|
||||
enum _target_clocks
|
||||
{
|
||||
kDefaultClock = 20971520u,
|
||||
kHIRC = 4000000u,
|
||||
kMinCoreClockWithUsbSupport = 20000000u,
|
||||
kMaxCoreClock = 75000000u,
|
||||
kMaxBusClock = 25000000u,
|
||||
kMaxFlashClock = 25000000u,
|
||||
|
||||
kDivider_Min = 1,
|
||||
kDivider_Max = 16,
|
||||
};
|
||||
|
||||
//! @brief Constants for sram partition
|
||||
enum _sram_partition
|
||||
{
|
||||
kSram_LowerPart = 1,
|
||||
kSram_UpperPart = 3,
|
||||
};
|
||||
|
||||
//! @brief Version constants for the target.
|
||||
enum _target_version_constants
|
||||
{
|
||||
kTarget_Version_Name = 'T',
|
||||
kTarget_Version_Major = 1,
|
||||
kTarget_Version_Minor = 0,
|
||||
kTarget_Version_Bugfix = 0
|
||||
};
|
||||
|
||||
#endif // __TARGET_CONFIG_H__
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// EOF
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
Reference in New Issue
Block a user