Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
boards/frdm-k64f: initial import for the Freescale FRDM-K64F Board
- Loading branch information
1 parent
d614cbe
commit 3291b27
Showing
8 changed files
with
602 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
# tell the Makefile.base which module to build | ||
MODULE = $(BOARD)_base | ||
|
||
include $(RIOTBASE)/Makefile.base |
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
FEATURES_PROVIDED += cpp | ||
FEATURES_PROVIDED += periph_gpio | ||
FEATURES_PROVIDED += periph_uart | ||
FEATURES_PROVIDED += periph_spi | ||
FEATURES_PROVIDED += periph_i2c | ||
FEATURES_PROVIDED += periph_pwm | ||
FEATURES_PROVIDED += periph_adc | ||
FEATURES_PROVIDED += periph_rtt | ||
FEATURES_PROVIDED += periph_rtc | ||
FEATURES_PROVIDED += periph_random | ||
FEATURES_PROVIDED += periph_cpuid | ||
FEATURES_MCU_GROUP = cortex_m4 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
# define the cpu used by the FRDM-K64F board | ||
export CPU = k64f | ||
export CPU_MODEL = mk64fn1m0vll12 | ||
|
||
# set default port depending on operating system | ||
PORT_LINUX ?= /dev/ttyACM0 | ||
|
||
.PHONY: flash | ||
flash: $(RIOTCPU)/kinetis_common/dist/wdog-disable.bin | ||
|
||
# Reset the default goal. | ||
.DEFAULT_GOAL := | ||
|
||
export FFLAGS = flash-elf | ||
export TUI = 1 | ||
# We need special handling of the watchdog if we want to speed up the flash | ||
# verification by using the MCU to compute the image checksum after flashing. | ||
# wdog-disable.bin is a precompiled binary which will disable the watchdog and | ||
# return control to the debugger (OpenOCD) | ||
export OPENOCD_PRE_VERIFY_CMDS += \ | ||
-c 'load_image $(RIOTCPU)/kinetis_common/dist/wdog-disable.bin 0x20000000 bin' \ | ||
-c 'resume 0x20000000' | ||
export OPENOCD_EXTRA_INIT | ||
export PRE_FLASH_CHECK_SCRIPT = $(RIOTCPU)/kinetis_common/dist/check-fcfield-elf.sh | ||
|
||
include $(RIOTBOARD)/$(BOARD)/Makefile.dep | ||
# setup serial terminal | ||
include $(RIOTBOARD)/Makefile.include.serial | ||
# this board uses openocd | ||
include $(RIOTBOARD)/Makefile.include.openocd | ||
# include cortex defaults | ||
include $(RIOTBOARD)/Makefile.include.cortexm_common |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
/* | ||
* Copyright (C) 2014 Freie Universität Berlin | ||
* Copyright (C) 2014 PHYTEC Messtechnik GmbH | ||
* | ||
* This file is subject to the terms and conditions of the GNU Lesser General | ||
* Public License v2.1. See the file LICENSE in the top level directory for more | ||
* details. | ||
*/ | ||
|
||
/** | ||
* @ingroup board_frdm-k64f | ||
* @{ | ||
* | ||
* @file | ||
* @brief Board specific implementations for the FRDM-K64F | ||
* | ||
* @author Johann Fischer <j.fischer@phytec.de> | ||
* | ||
* @} | ||
*/ | ||
|
||
#include "board.h" | ||
|
||
static void leds_init(void); | ||
|
||
void board_init(void) | ||
{ | ||
leds_init(); | ||
cpu_init(); | ||
} | ||
|
||
/** | ||
* @brief Initialize the boards on-board RGB-LED | ||
* | ||
*/ | ||
static void leds_init(void) | ||
{ | ||
/* enable clock */ | ||
LED_B_PORT_CLKEN(); | ||
LED_G_PORT_CLKEN(); | ||
LED_R_PORT_CLKEN(); | ||
/* configure pins as gpio */ | ||
LED_B_PORT->PCR[LED_B_PIN] = PORT_PCR_MUX(1); | ||
LED_G_PORT->PCR[LED_G_PIN] = PORT_PCR_MUX(1); | ||
LED_R_PORT->PCR[LED_R_PIN] = PORT_PCR_MUX(1); | ||
LED_B_GPIO->PDDR |= (1 << LED_B_PIN); | ||
LED_G_GPIO->PDDR |= (1 << LED_G_PIN); | ||
LED_R_GPIO->PDDR |= (1 << LED_R_PIN); | ||
/* turn all LEDs off */ | ||
LED_B_GPIO->PSOR |= (1 << LED_B_PIN); | ||
LED_G_GPIO->PSOR |= (1 << LED_G_PIN); | ||
LED_R_GPIO->PSOR |= (1 << LED_R_PIN); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
# | ||
# Freescale Kinetis k64f devices | ||
# | ||
source [find interface/cmsis-dap.cfg] | ||
|
||
# | ||
# k64f devices support both JTAG and SWD transports. | ||
# | ||
source [find target/swj-dp.tcl] | ||
|
||
if { [info exists CHIPNAME] } { | ||
set _CHIPNAME $CHIPNAME | ||
} else { | ||
set _CHIPNAME k64f | ||
} | ||
|
||
if { [info exists CPUTAPID] } { | ||
set _CPUTAPID $CPUTAPID | ||
} else { | ||
set _CPUTAPID 0x2ba01477 | ||
} | ||
|
||
set _TARGETNAME $_CHIPNAME.cpu | ||
|
||
swj_newdap $_CHIPNAME cpu -irlen 4 -expected-id $_CPUTAPID | ||
|
||
target create $_TARGETNAME cortex_m -chain-position $_CHIPNAME.cpu | ||
|
||
$_CHIPNAME.cpu configure -event examine-start { puts "START..." ; } | ||
|
||
# It is important that "kinetis mdm check_security" is called for | ||
# 'examine-end' event and not 'eximine-start'. Calling it in 'examine-start' | ||
# causes "kinetis mdm check_security" to fail the first time openocd | ||
# calls it when it tries to connect after the CPU has been power-cycled. | ||
$_CHIPNAME.cpu configure -event examine-end { | ||
kinetis mdm check_security | ||
} | ||
|
||
$_TARGETNAME configure -work-area-phys 0x20000000 -work-area-size 0x1000 -work-area-backup 0 | ||
|
||
flash bank $_CHIPNAME.flash kinetis 0 0 0 0 $_TARGETNAME | ||
|
||
cortex_m reset_config sysresetreq | ||
#reset_config srst_only srst_nogate connect_assert_srst | ||
|
||
adapter_khz 1000 | ||
|
||
$_TARGETNAME configure -event gdb-attach { | ||
halt | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,103 @@ | ||
/* | ||
* Copyright (C) 2014 Freie Universität Berlin | ||
* Copyright (C) 2015 PHYTEC Messtechnik GmbH | ||
* | ||
* This file is subject to the terms and conditions of the GNU Lesser General | ||
* Public License v2.1. See the file LICENSE in the top level directory for more | ||
* details. | ||
*/ | ||
|
||
/** | ||
* @defgroup board_frdm-k64f Freescale FRDM-K64F Board | ||
* @ingroup boards | ||
* @brief Board specific implementations for the FRDM-K64F | ||
* @{ | ||
* | ||
* @file | ||
* @brief Board specific definitions for the FRDM-K64F | ||
* | ||
* @author Johann Fischer <j.fischer@phytec.de> | ||
*/ | ||
|
||
#ifndef __BOARD_H | ||
#define __BOARD_H | ||
|
||
#include "cpu.h" | ||
#include "periph_conf.h" | ||
|
||
#ifdef __cplusplus | ||
extern "C" | ||
{ | ||
#endif | ||
|
||
/** | ||
* Define the nominal CPU core clock in this board | ||
*/ | ||
#define F_CPU CLOCK_CORECLOCK | ||
|
||
/** | ||
* @name Define UART device and baudrate for stdio | ||
* @{ | ||
*/ | ||
#define STDIO UART_0 | ||
#define STDIO_RX_BUFSIZE (64U) | ||
#define STDIO_BAUDRATE (115200U) | ||
/** @} */ | ||
|
||
/** | ||
* @name LED pin definitions | ||
* @{ | ||
*/ | ||
#define LED_R_PORT_CLKEN() (SIM->SCGC5 |= (SIM_SCGC5_PORTB_MASK)) /**< Clock Enable for PORTD*/ | ||
#define LED_G_PORT_CLKEN() (SIM->SCGC5 |= (SIM_SCGC5_PORTE_MASK)) /**< Clock Enable for PORTD*/ | ||
#define LED_B_PORT_CLKEN() (SIM->SCGC5 |= (SIM_SCGC5_PORTB_MASK)) /**< Clock Enable for PORTA*/ | ||
#define LED_R_PORT PORTB /**< PORT for Red LED*/ | ||
#define LED_R_GPIO GPIOB /**< GPIO-Device for Red LED*/ | ||
#define LED_G_PORT PORTE /**< PORT for Green LED*/ | ||
#define LED_G_GPIO GPIOE /**< GPIO-Device for Green LED*/ | ||
#define LED_B_PORT PORTB /**< PORT for Blue LED*/ | ||
#define LED_B_GPIO GPIOB /**< GPIO-Device for Blue LED*/ | ||
#define LED_R_PIN 22 /**< Red LED connected to PINx*/ | ||
#define LED_G_PIN 26 /**< Green LED connected to PINx*/ | ||
#define LED_B_PIN 21 /**< Blue LED connected to PINx*/ | ||
/** @} */ | ||
|
||
/** | ||
* @name Macros for controlling the on-board LEDs. | ||
* @{ | ||
*/ | ||
#define LED_B_ON (LED_B_GPIO->PCOR |= (1 << LED_B_PIN)) | ||
#define LED_B_OFF (LED_B_GPIO->PSOR |= (1 << LED_B_PIN)) | ||
#define LED_B_TOGGLE (LED_B_GPIO->PTOR |= (1 << LED_B_PIN)) | ||
#define LED_G_ON (LED_G_GPIO->PCOR |= (1 << LED_G_PIN)) | ||
#define LED_G_OFF (LED_G_GPIO->PSOR |= (1 << LED_G_PIN)) | ||
#define LED_G_TOGGLE (LED_G_GPIO->PTOR |= (1 << LED_G_PIN)) | ||
#define LED_R_ON (LED_R_GPIO->PCOR |= (1 << LED_R_PIN)) | ||
#define LED_R_OFF (LED_R_GPIO->PSOR |= (1 << LED_R_PIN)) | ||
#define LED_R_TOGGLE (LED_R_GPIO->PTOR |= (1 << LED_R_PIN)) | ||
|
||
/* for compatability to other boards */ | ||
#define LED_GREEN_ON LED_G_ON | ||
#define LED_GREEN_OFF LED_G_OFF | ||
#define LED_GREEN_TOGGLE LED_G_TOGGLE | ||
#define LED_RED_ON LED_R_ON | ||
#define LED_RED_OFF LED_R_OFF | ||
#define LED_RED_TOGGLE LED_R_TOGGLE | ||
/** @} */ | ||
|
||
/** | ||
* Define the type for the radio packet length for the transceiver | ||
*/ | ||
typedef uint8_t radio_packet_length_t; | ||
|
||
/** | ||
* @brief Initialize board specific hardware, including clock, LEDs and std-IO | ||
*/ | ||
void board_init(void); | ||
|
||
#ifdef __cplusplus | ||
} | ||
#endif | ||
|
||
#endif /** __BOARD_H */ | ||
/** @} */ |
Oops, something went wrong.