flash Kinetis: Detect RESET/WDOG loop, fix detection of secured MCU
Kinetis driver checks MDM STAT register to detect secured state of MCU. Original version often reported a blank device as secured one. Change #3010 has not fixed all false reports. After changes in arm_adi_v5 infrastructure secured devices was not detected at all. New algorithm uses multiple MDM STAT reads and counts MDM_STAT_SYSSEC and MDM_STAT_FREADY bits. Both secured MCU and MCU locked-up in RESET/WDOG loop are detected reliably. Detection is run in both kx.cfg and klx.cfg from examine-start event, not examine-end as before. Event is configured only for non hla adapter. Minor fix in klx.cfg: commented out adapter_khz 24000 in reset-init. Such frequency is not supported in VLPR CPU mode and with JTAG. Change-Id: I2ec2b68c45bde9898159cd15fbdcbcfa538c41d9 Signed-off-by: Tomas Vanek <vanekt@fbl.cz> Reviewed-on: http://openocd.zylin.com/3547 Tested-by: jenkins Reviewed-by: Steven Stallion <stallion@squareup.com> Reviewed-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
This commit is contained in:
committed by
Andreas Fritiofson
parent
8285ec4cb0
commit
6d5b4d709c
@@ -29,14 +29,6 @@ swj_newdap $_CHIPNAME cpu -irlen 4 -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
|
||||
@@ -49,14 +41,20 @@ adapter_khz 1000
|
||||
reset_config srst_nogate
|
||||
|
||||
if {![using_hla]} {
|
||||
# Detect secured MCU or boot lock-up in RESET/WDOG loop
|
||||
$_CHIPNAME.cpu configure -event examine-start {
|
||||
kinetis mdm check_security
|
||||
}
|
||||
|
||||
# if srst is not fitted use SYSRESETREQ to
|
||||
# perform a soft reset
|
||||
cortex_m reset_config sysresetreq
|
||||
}
|
||||
|
||||
$_TARGETNAME configure -event reset-init {
|
||||
# Table 5-1. Clock Summary of KL25 Sub-Family Reference Manual
|
||||
# specifies up to 24MHz for run mode; Table 17 of Sub-Family Data
|
||||
# Sheet rev4 lists 25MHz as the maximum frequency.
|
||||
adapter_khz 24000
|
||||
}
|
||||
# Table 5-1. Clock Summary of KL25 Sub-Family Reference Manual
|
||||
# specifies up to 24MHz for run mode; Table 17 of Sub-Family Data
|
||||
# Sheet rev4 lists 25MHz as the maximum frequency.
|
||||
# Uncoment only if VLPR mode is not used
|
||||
#$_TARGETNAME configure -event reset-init {
|
||||
# adapter_khz 24000
|
||||
#}
|
||||
|
||||
Reference in New Issue
Block a user