From 10331d20074c4a8644919deaf9de172d9d7ad6ae Mon Sep 17 00:00:00 2001 From: Andreas Fritiofson Date: Thu, 12 Feb 2015 00:12:15 +0100 Subject: [PATCH] cfg: Fix Kinetis kwikstik/kx config The flash definition belongs in the target cfg. Add some working area and suitable reset_config. Make kx.cfg more similar to klx.cfg. Disable rclk as it is dead slow and a fixed 1MHz clock seems to work. Change-Id: I8328f179c3a33be64403da93616abb48651bdfe6 Signed-off-by: Andreas Fritiofson Reviewed-on: http://openocd.zylin.com/2227 Tested-by: jenkins Reviewed-by: Tomas Vanek Reviewed-by: Paul Fertser --- tcl/board/kwikstik.cfg | 7 ------- tcl/target/kx.cfg | 26 +++++++++++++++++++++----- 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/tcl/board/kwikstik.cfg b/tcl/board/kwikstik.cfg index ed9b58317..f936d6e92 100644 --- a/tcl/board/kwikstik.cfg +++ b/tcl/board/kwikstik.cfg @@ -7,13 +7,6 @@ # source [find interface/jlink.cfg] -jtag_rclk 100 - source [find target/k40.cfg] reset_config trst_and_srst - -# -# Bank definition for the 'program flash' (instructions and/or data) -# -flash bank $_CHIPNAME.pflash kinetis 0x00000000 0x40000 0 4 $_TARGETNAME diff --git a/tcl/target/kx.cfg b/tcl/target/kx.cfg index 93b2b5810..ad76ac663 100644 --- a/tcl/target/kx.cfg +++ b/tcl/target/kx.cfg @@ -10,10 +10,12 @@ if { [info exists CHIPNAME] } { set _CHIPNAME kx } -if { [info exists ENDIAN] } { - set _ENDIAN $ENDIAN +# Work-area is a space in RAM used for flash programming +# By default use 4kB +if { [info exists WORKAREASIZE] } { + set _WORKAREASIZE $WORKAREASIZE } else { - set _ENDIAN little + set _WORKAREASIZE 0x1000 } if { [info exists CPUTAPID] } { @@ -26,12 +28,26 @@ if { [info exists CPUTAPID] } { } } -set _TARGETNAME $_CHIPNAME.cpu - swj_newdap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_CPUTAPID +set _TARGETNAME $_CHIPNAME.cpu target create $_TARGETNAME cortex_m -chain-position $_CHIPNAME.cpu +# 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 $_WORKAREASIZE -work-area-backup 0 + +set _FLASHNAME $_CHIPNAME.flash +flash bank $_FLASHNAME kinetis 0 0 0 0 $_TARGETNAME + +adapter_khz 1000 + reset_config srst_nogate if {![using_hla]} {