| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214 |
- #
- # Copyright (C) <2019-2021>
- # <Cypress Semiconductor Corporation (an Infineon company)>
- #
- # Common configuration for PSoC 64 family of microcontrollers.
- # PSoC 64 is a dual-core device with CM0+ and CM4 cores. Both cores share
- # the same Flash/RAM/MMIO address space.
- #
- source [find target/swj-dp.tcl]
- source [find target/mxs40/mxs40_common.cfg]
- global _CHIPNAME
- if { [info exists CHIPNAME] } {
- set _CHIPNAME $CHIPNAME
- } else {
- set _CHIPNAME psoc6
- }
- # Make MXS40_TARGET_DIE chip-specific
- if { ![info exists MXS40_TARGET_DIE] || ![dict exists $MXS40_DIE_CONFIG_DICT $MXS40_TARGET_DIE]} {
- puts stderr "MXS40_TARGET_DIE not defined or invalid!"
- puts stderr "Known dies: [dict keys $MXS40_DIE_CONFIG_DICT]"
- shutdown
- }
- set ${_CHIPNAME}::MXS40_TARGET_DIE $MXS40_TARGET_DIE
- unset MXS40_TARGET_DIE
- #
- # Is CM0 Debugging enabled ?
- #
- global _ENABLE_CM0
- if { [info exists ENABLE_CM0] } {
- set _ENABLE_CM0 $ENABLE_CM0
- } else {
- set _ENABLE_CM0 1
- }
- #
- # Is CM4 Debugging enabled ?
- #
- global _ENABLE_CM4
- if { [info exists ENABLE_CM4] } {
- set _ENABLE_CM4 $ENABLE_CM4
- } else {
- set _ENABLE_CM4 1
- }
- # set acquire mode: power cycle = 2, reset otherwise
- if { $_ENABLE_ACQUIRE == 2 } {
- kitprog3 acquire_config on 2 1 2
- } elseif { $_ENABLE_ACQUIRE } {
- kitprog3 acquire_config on 2 0 2
- }
- if { [info exists WORKAREAADDR] } {
- set _WA_ADDR $WORKAREAADDR
- unset WORKAREAADDR
- } else {
- set _WA_ADDR 0x08000000
- }
- if { [info exists WORKAREASIZE] } {
- set _WA_SIZE $WORKAREASIZE
- unset WORKAREASIZE
- } else {
- set _WA_SIZE 0x8000
- }
- global TARGET
- set TARGET $_CHIPNAME.cpu
- swj_newdap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0xf
- dap create $_CHIPNAME.dap -chain-position $_CHIPNAME.cpu
- proc check_flashboot_version {} {
- global _ENABLE_CM0
- set rev_id ""
- catch {
- set si_id [mrw 0x16000000]
- set fb_ver [mrw 0x16002004]
- set rev_id [format "%02X" [expr {($si_id & 0xFF00) >> 8}]]
- }
- # SI revision 0x22 (*B) and
- # versioning scheme #2 (ALXD-31) with major mersion #0 (PSoC6A-BLE-2 *A/*B/*C) and
- # FB build number older than #29
- if { $rev_id == "22" && \
- [expr {$fb_ver & 0xFF00FFFF}] == 0x02008001 } {
- set fb_build [expr {($fb_ver & 0x00FF0000) >> 16}]
- if { $fb_build <= 20 || ( $_ENABLE_CM0 == 0 && $fb_build < 29 ) } {
- puts stderr "********************************************************************************"
- puts stderr "* Your PSoC 6 kit is out of date. Please contact Cypress to get a replacement. *"
- puts stderr "********************************************************************************"
- } elseif { $fb_build < 29 } {
- puts stderr "*****************************************************"
- puts stderr "* You are using a pre-production PSoC 6 BLE device. *"
- puts stderr "*****************************************************"
- }
- }
- }
- if { $_ENABLE_CM0 } {
- set _ACQUIRE_TARGET cm0
- } else {
- set _ACQUIRE_TARGET cm4
- }
- global _HAS_WORKFLASH
- if { ![info exists _HAS_WORKFLASH] } {
- set _HAS_WORKFLASH 1
- }
- if { $_ENABLE_CM0 } {
- target create ${TARGET}.cm0 cortex_m -dap $_CHIPNAME.dap -ap-num 1 -coreid 0
- ${TARGET}.cm0 configure -work-area-phys $_WA_ADDR -work-area-size $_WA_SIZE -work-area-backup 0
- flash bank ${_CHIPNAME}_main_cm0 ${FLASH_DRIVER_NAME} 0x10000000 0 0 0 ${TARGET}.cm0
- if { $_HAS_WORKFLASH } {
- flash bank ${_CHIPNAME}_work_cm0 ${FLASH_DRIVER_NAME} 0x14000000 0 0 0 ${TARGET}.cm0
- }
- flash bank ${_CHIPNAME}_super_cm0 ${FLASH_DRIVER_NAME} 0x16000000 0 0 0 ${TARGET}.cm0
- flash bank ${_CHIPNAME}_efuse_cm0 ${FLASH_DRIVER_NAME}_efuse 0x90700000 1024 1 1 ${TARGET}.cm0 external
- add_verify_range ${TARGET}.cm0 0x08000000 0x00200000
- add_verify_range ${TARGET}.cm0 0x10000000 0x00200000
- add_verify_range ${TARGET}.cm0 0x14000000 0x00200000
- add_verify_range ${TARGET}.cm0 0x16000000 0x00200000
- add_verify_range ${TARGET}.cm0 0x90700000 0x00000400
- ${TARGET}.cm0 cortex_m reset_config sysresetreq
- ${TARGET}.cm0 configure -event reset-deassert-post "mxs40_reset_deassert_post psoc6 ${TARGET}.cm0"
- ${TARGET}.cm0 configure -event examine-end "cy_get_set_device_param $FLASH_DRIVER_NAME ${_CHIPNAME}_main_cm0 ${_CHIPNAME}_work_cm0"
- }
- if { $_ENABLE_CM4 } {
- target create ${TARGET}.cm4 cortex_m -dap $_CHIPNAME.dap -ap-num 2 -coreid 1
- ${TARGET}.cm4 configure -work-area-phys $_WA_ADDR -work-area-size $_WA_SIZE -work-area-backup 0
- if { $_ENABLE_CM0 } {
- flash bank ${_CHIPNAME}_main_cm4 virtual 0x10000000 0 0 0 ${TARGET}.cm4 ${_CHIPNAME}_main_cm0
- if { $_HAS_WORKFLASH } {
- flash bank ${_CHIPNAME}_work_cm4 virtual 0x14000000 0 0 0 ${TARGET}.cm4 ${_CHIPNAME}_work_cm0
- }
- flash bank ${_CHIPNAME}_super_cm4 virtual 0x16000000 0 0 0 ${TARGET}.cm4 ${_CHIPNAME}_super_cm0
- flash bank ${_CHIPNAME}_efuse_cm4 virtual 0x90700000 1024 1 1 ${TARGET}.cm4 ${_CHIPNAME}_efuse_cm0 external
- # Avoid double-reset on dual-core parts
- ${TARGET}.cm4 configure -event reset-assert {}
- targets ${TARGET}.cm0
- } else {
- flash bank ${_CHIPNAME}_main_cm4 ${FLASH_DRIVER_NAME} 0x10000000 0 0 0 ${TARGET}.cm4
- if { $_HAS_WORKFLASH } {
- flash bank ${_CHIPNAME}_work_cm4 ${FLASH_DRIVER_NAME} 0x14000000 0 0 0 ${TARGET}.cm4
- }
- flash bank ${_CHIPNAME}_super_cm4 ${FLASH_DRIVER_NAME} 0x16000000 0 0 0 ${TARGET}.cm4
- flash bank ${_CHIPNAME}_efuse_cm4 ${FLASH_DRIVER_NAME}_efuse 0x90700000 1024 1 1 ${TARGET}.cm4 external
- ${TARGET}.cm4 configure -event examine-end "cy_get_set_device_param $FLASH_DRIVER_NAME ${_CHIPNAME}_main_cm4 ${_CHIPNAME}_work_cm4"
- }
- add_verify_range ${TARGET}.cm4 0x08000000 0x00200000
- add_verify_range ${TARGET}.cm4 0x10000000 0x00200000
- add_verify_range ${TARGET}.cm4 0x14000000 0x00200000
- add_verify_range ${TARGET}.cm4 0x16000000 0x00200000
- add_verify_range ${TARGET}.cm4 0x90700000 0x00000400
- ${TARGET}.cm4 cortex_m reset_config sysresetreq
- ${TARGET}.cm4 configure -event reset-deassert-post "mxs40_reset_deassert_post psoc6 ${TARGET}.cm4"
- }
- unset _HAS_WORKFLASH
- if { ![info exists PSOC6_JTAG_IRLEN] } {
- set PSOC6_JTAG_IRLEN 18
- }
- if {[using_jtag]} {
- swj_newdap $_CHIPNAME bs -irlen $PSOC6_JTAG_IRLEN -expected-id 0
- }
- # example of qspi_config.cfg
- #set SMIF_BANKS {
- # 1 {addr 0x18000000 size 0x10000 psize 0x100 esize 0x1000}
- # 2 {addr 0x18010000 size 0x10000 psize 0x100 esize 0x1000}
- # 3 {addr 0x18020000 size 0x10000 psize 0x100 esize 0x1000}
- # 4 {addr 0x18030000 size 0x10000 psize 0x100 esize 0x1000}
- #}
- catch {source [find qspi_config.cfg]}
- if { [info exists SMIF_BANKS] } {
- set num_banks [array size SMIF_BANKS]
- set bank_param ""
- if { $num_banks > 1 } {
- set bank_param "prefer_sector_erase"
- }
- foreach {key value} [array get SMIF_BANKS] {
- if { $_ENABLE_CM0 } {
- flash bank ${_CHIPNAME}_smif${key}_cm0 cmsis_flash $value(addr) $value(size) 4 4 ${TARGET}.cm0 ../flm/cypress/cat1a/${QSPI_FLASHLOADER} 0x800 {*}$bank_param
- add_verify_range ${TARGET}.cm0 $value(addr) $value(size)
- if { $_ENABLE_CM4 } {
- flash bank ${_CHIPNAME}_smif${key}_cm4 virtual $value(addr) $value(size) 0 0 ${TARGET}.cm4 ${_CHIPNAME}_smif${key}_cm0
- add_verify_range ${TARGET}.cm4 $value(addr) $value(size)
- }
- } else {
- flash bank ${_CHIPNAME}_smif${key}_cm4 cmsis_flash $value(addr) $value(size) 4 4 ${TARGET}.cm4 ../flm/cypress/cat1a/${QSPI_FLASHLOADER} 0x800 {*}$bank_param
- add_verify_range ${TARGET}.cm4 $value(addr) $value(size)
- }
- }
- }
- gdb_smart_program enable
|