| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- #
- # Copyright (C) <2019-2021>
- # <Cypress Semiconductor Corporation (an Infineon company)>
- #
- # Common configuration for MXS40v2 family of microcontrollers.
- #
- if [info exist LOADED_[file rootname [file tail [info script]]]] return
- set LOADED_[file rootname [file tail [info script]]] true
- source [find mem_helper.tcl]
- source [find target/mxs40/mxs40v2_acquire_helpers.cfg]
- ###############################################################################
- # Default speed an reset settings
- ###############################################################################
- if {[using_jtag]} {
- adapter speed 1000
- } else {
- adapter speed 2000
- }
- adapter srst delay 25
- adapter srst pulse_width 25
- ###############################################################################
- # Erases all non-virtual flash banks (in reverse order)
- ###############################################################################
- proc erase_all {} {
- lset banks [flash list]
- set banks_count [llength $banks]
- for {set i 0} { $i < $banks_count } { set i [expr {$i + 1}]} {
- set bank [lindex $banks $i]
- set bank_name $bank(name)
- echo [format "Erasing flash bank \"%s\" (%d of %d)..." $bank_name [expr {$i + 1}] $banks_count ]
- if { $bank_name != "virtual" } {
- flash erase_sector $i 0 last
- } else {
- echo "skipped (virtual)"
- }
- }
- }
- add_help_text erase_all "Erases all non-virtual flash banks"
- ###############################################################################
- # Utility to make 'reset halt' work as reset;halt on a target
- # It does not prevent running code after reset
- ###############################################################################
- proc mxs40v2_reset_deassert_post { target } {
- global DEBUG_CERTIFICATE
- global RESET_MODE
- set use_certificate 0
- if { [mxs40v2::is_ap_open] == 0 } {
- if [info exists DEBUG_CERTIFICATE] {
- echo "** CM33 AP was closed after reset, sending debug certificate"
- if [catch {send_certificate}] {
- puts stderr "** Error sending debug certificate, examination skipped"
- set sysap_target [string map {cm33 sysap} $target]
- targets $sysap_target
- return
- }
- set use_certificate 1
- } else {
- puts stderr "** CM33 AP was closed after reset and no certificate specified, examination skipped"
- puts stderr "** Use 'DEBUG_CERTIFICATE' variable to specify certificate filename with full path"
- set sysap_target [string map {cm33 sysap} $target]
- targets $sysap_target
- return
- }
- }
- # MXS40V2 cleared AP registers including TAR during reset
- # Force examine to synchronize OpenOCD target status
- $target arp_examine
- $target arp_poll
- # Exit if $target is supposed to be running after Reset
- if { $RESET_MODE eq "run" } return
- if { [$target curstate] eq "reset" } {
- $target arp_poll
- }
- if { [$target curstate] eq "running" } {
- $target arp_halt
- $target arp_waitstate halted 100
- }
- mxs40v2::reset_halt $target $use_certificate
- check_flashboot_version
- }
- # Define check_flashboot_version if not already defined
- if { [info proc check_flashboot_version] eq "" } {
- proc check_flashboot_version {} {}
- }
- ###############################################################################
- # Overrides default init_reset procedure, stores reset mode in global variable
- ###############################################################################
- proc init_reset { mode } {
- global RESET_MODE
- set RESET_MODE $mode
- }
- ###############################################################################
- # Power dropout/restore handlers
- ###############################################################################
- proc power_dropout {} {
- if { [adapter name] eq "kitprog3" } {
- local_echo off
- set voltage [regexp -inline -- {[0-9]+\.[0-9]+} [kitprog3 get_power]]
- local_echo on
- puts stderr "Power dropout, target voltage: $voltage mV"
- }
- }
- proc power_restore {} {
- if { [adapter name] eq "kitprog3" } {
- local_echo off
- set voltage [regexp -inline -- {[0-9]+\.[0-9]+} [kitprog3 get_power]]
- local_echo on
- puts stderr "Power restore, target voltage: $voltage mV"
- }
- }
- ###############################################################################
- # TODO: KitProg3 acquire/power control stuff
- ###############################################################################
|