Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cpu/kinetis: allow flashing without toolchain #11545

Merged
merged 2 commits into from
May 29, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions boards/common/frdm/Makefile.include
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,6 @@ export OPENOCD_PRE_VERIFY_CMDS += \
-c 'load_image $(RIOTCPU)/$(CPU)/dist/wdog-disable.bin 0x20000000 bin' \
-c 'resume 0x20000000'
export OPENOCD_EXTRA_INIT

FLASHDEPS += $(RIOTCPU)/$(CPU)/dist/wdog-disable.bin

export OPENOCD_CONFIG ?= $(RIOTBOARD)/common/frdm/dist/old-openocd-$(CPU_FAMILY).cfg
endif

Expand Down
2 changes: 0 additions & 2 deletions boards/mulle/Makefile.include
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,6 @@ export OPENOCD_PRE_VERIFY_CMDS += \
-c 'resume 0x20000000'
export PRE_FLASH_CHECK_SCRIPT = $(RIOTCPU)/$(CPU)/dist/check-fcfield.sh

FLASHDEPS += $(RIOTCPU)/$(CPU)/dist/wdog-disable.bin

# this board uses openocd
include $(RIOTMAKE)/tools/openocd.inc.mk

Expand Down
2 changes: 0 additions & 2 deletions boards/pba-d-01-kw2x/Makefile.include
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,6 @@ export CPU_MODEL ?= mkw21d256vha5
PORT_LINUX ?= /dev/ttyACM0
PORT_DARWIN ?= $(firstword $(sort $(wildcard /dev/tty.usbmodem*)))

FLASHDEPS += $(RIOTCPU)/$(CPU)/dist/wdog-disable.bin

# 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
Expand Down
4 changes: 0 additions & 4 deletions cpu/kinetis/Makefile.include
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,4 @@ USEMODULE += periph_mcg
endif
USEMODULE += periph_wdog

# Define a recipe to build the watchdog disable binary, used when flashing
$(RIOTCPU)/$(CPU)/dist/wdog-disable.bin: $(RIOTCPU)/$(CPU)/dist/wdog-disable.s
$(Q)$(MAKE) -C $(RIOTCPU)/$(CPU)/dist/ $(notdir $@)

include $(RIOTMAKE)/arch/cortexm.inc.mk
7 changes: 6 additions & 1 deletion cpu/kinetis/dist/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,15 @@ This directory contains tools for working with K60 CPUs.
Watchdog disable
----------------

wdog-disable.bin is a location-independent watchdog disable function with a breakpoint instruction at the end. Useful for disabling the watchdog directly from OpenOCD.
wdog-disable.bin is a location-independent watchdog disable function with a
breakpoint instruction at the end. Useful for disabling the watchdog directly
from OpenOCD.

Usage:

openocd -c 'reset halt' \
-c 'load_image wdog-disable.bin 0x20000000 bin' \
-c 'resume 0x20000000' # watchdog is disabled and core halted

The file is saved generated in the repository to remove the need to have a
compiler when flashing. It is only 34 bytes binary.
8 changes: 5 additions & 3 deletions cpu/kinetis/dist/check-fcfield.sh
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
# @author Joakim Nohlgård <joakim.nohlgard@eistec.se>
# @author Francisco Molina <francisco.molina@inria.fr>

: ${OBJDUMP:=arm-none-eabi-objdump}

# elf, hex or bin file to flash
FLASHFILE="$1"

Expand All @@ -27,11 +29,11 @@ EXPECTED_FCFIELD="^fffffffffffffffffffffffffe..ffff$"
get_fc_field()
{
if [ ${1##*.} = elf ]; then
arm-none-eabi-objdump -j.fcfield -s "${1}"
"${OBJDUMP}" -j.fcfield -s "${1}"
elif [ ${1##*.} = bin ]; then
arm-none-eabi-objdump --start-address=${FCFIELD_START} --stop-address=${FCFIELD_END} -bbinary -marm ${1} -s
"${OBJDUMP}" --start-address=${FCFIELD_START} --stop-address=${FCFIELD_END} -bbinary -marm ${1} -s
elif [ ${1##*.} = hex ]; then
arm-none-eabi-objdump --start-address=${FCFIELD_START} --stop-address=${FCFIELD_END} ${1} -s
"${OBJDUMP}" --start-address=${FCFIELD_START} --stop-address=${FCFIELD_END} ${1} -s
else
echo "Unkown file extension: ${1##*.}"
exit 1
Expand Down
Binary file added cpu/kinetis/dist/wdog-disable.bin
Binary file not shown.