mxs40v2_common.cfg 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. #
  2. # Copyright (C) <2019-2021>
  3. # <Cypress Semiconductor Corporation (an Infineon company)>
  4. #
  5. # Common configuration for MXS40v2 family of microcontrollers.
  6. #
  7. if [info exist LOADED_[file rootname [file tail [info script]]]] return
  8. set LOADED_[file rootname [file tail [info script]]] true
  9. source [find mem_helper.tcl]
  10. source [find target/mxs40/mxs40v2_acquire_helpers.cfg]
  11. ###############################################################################
  12. # Default speed an reset settings
  13. ###############################################################################
  14. if {[using_jtag]} {
  15. adapter speed 1000
  16. } else {
  17. adapter speed 2000
  18. }
  19. adapter srst delay 25
  20. adapter srst pulse_width 25
  21. ###############################################################################
  22. # Erases all non-virtual flash banks (in reverse order)
  23. ###############################################################################
  24. proc erase_all {} {
  25. lset banks [flash list]
  26. set banks_count [llength $banks]
  27. for {set i 0} { $i < $banks_count } { set i [expr {$i + 1}]} {
  28. set bank [lindex $banks $i]
  29. set bank_name $bank(name)
  30. echo [format "Erasing flash bank \"%s\" (%d of %d)..." $bank_name [expr {$i + 1}] $banks_count ]
  31. if { $bank_name != "virtual" } {
  32. flash erase_sector $i 0 last
  33. } else {
  34. echo "skipped (virtual)"
  35. }
  36. }
  37. }
  38. add_help_text erase_all "Erases all non-virtual flash banks"
  39. ###############################################################################
  40. # Utility to make 'reset halt' work as reset;halt on a target
  41. # It does not prevent running code after reset
  42. ###############################################################################
  43. proc mxs40v2_reset_deassert_post { target } {
  44. global DEBUG_CERTIFICATE
  45. global RESET_MODE
  46. set use_certificate 0
  47. if { [mxs40v2::is_ap_open] == 0 } {
  48. if [info exists DEBUG_CERTIFICATE] {
  49. echo "** CM33 AP was closed after reset, sending debug certificate"
  50. if [catch {send_certificate}] {
  51. puts stderr "** Error sending debug certificate, examination skipped"
  52. set sysap_target [string map {cm33 sysap} $target]
  53. targets $sysap_target
  54. return
  55. }
  56. set use_certificate 1
  57. } else {
  58. puts stderr "** CM33 AP was closed after reset and no certificate specified, examination skipped"
  59. puts stderr "** Use 'DEBUG_CERTIFICATE' variable to specify certificate filename with full path"
  60. set sysap_target [string map {cm33 sysap} $target]
  61. targets $sysap_target
  62. return
  63. }
  64. }
  65. # MXS40V2 cleared AP registers including TAR during reset
  66. # Force examine to synchronize OpenOCD target status
  67. $target arp_examine
  68. $target arp_poll
  69. # Exit if $target is supposed to be running after Reset
  70. if { $RESET_MODE eq "run" } return
  71. if { [$target curstate] eq "reset" } {
  72. $target arp_poll
  73. }
  74. if { [$target curstate] eq "running" } {
  75. $target arp_halt
  76. $target arp_waitstate halted 100
  77. }
  78. mxs40v2::reset_halt $target $use_certificate
  79. check_flashboot_version
  80. }
  81. # Define check_flashboot_version if not already defined
  82. if { [info proc check_flashboot_version] eq "" } {
  83. proc check_flashboot_version {} {}
  84. }
  85. ###############################################################################
  86. # Overrides default init_reset procedure, stores reset mode in global variable
  87. ###############################################################################
  88. proc init_reset { mode } {
  89. global RESET_MODE
  90. set RESET_MODE $mode
  91. }
  92. ###############################################################################
  93. # Power dropout/restore handlers
  94. ###############################################################################
  95. proc power_dropout {} {
  96. if { [adapter name] eq "kitprog3" } {
  97. local_echo off
  98. set voltage [regexp -inline -- {[0-9]+\.[0-9]+} [kitprog3 get_power]]
  99. local_echo on
  100. puts stderr "Power dropout, target voltage: $voltage mV"
  101. }
  102. }
  103. proc power_restore {} {
  104. if { [adapter name] eq "kitprog3" } {
  105. local_echo off
  106. set voltage [regexp -inline -- {[0-9]+\.[0-9]+} [kitprog3 get_power]]
  107. local_echo on
  108. puts stderr "Power restore, target voltage: $voltage mV"
  109. }
  110. }
  111. ###############################################################################
  112. # TODO: KitProg3 acquire/power control stuff
  113. ###############################################################################