psoc6_detect_geometry.cfg 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #
  2. # Copyright (C) <2019-2021>
  3. # <Cypress Semiconductor Corporation (an Infineon company)>
  4. #
  5. source [find target/mxs40/cympn_parser.cfg]
  6. #
  7. # detects main flash size of PSoC6 devices
  8. #
  9. # tryies to get PSoC6 geometry from the:
  10. # 1. $MAIN_FLASH_SIZE if defined
  11. # 2. UDD
  12. #
  13. # arguments:
  14. # target_arch - the target architecture - psoc6 or psoc6_2m
  15. # main_reg_name - the name of main region to be set
  16. #
  17. proc psoc6_detect_geometry { target_arch main_reg_name } {
  18. # following priorities are used:
  19. # 1. MAIN_FLASH_SIZE define
  20. # 2. UDD
  21. set tgt [target current]
  22. set CHIPNAME [string range ${tgt} 0 [expr {[string first "." ${tgt}] - 1}]]
  23. global ${CHIPNAME}::MAIN_FLASH_SIZE
  24. set detected_main_size 0
  25. # 1. Use ${CHIPNAME}::MAIN_FLASH_SIZE if defined
  26. if { [info exists ${CHIPNAME}::MAIN_FLASH_SIZE] } {
  27. echo "** Use overriden Main Flash size, kb: [expr {${CHIPNAME}::MAIN_FLASH_SIZE >> 10}]"
  28. set detected_main_size ${CHIPNAME}::MAIN_FLASH_SIZE
  29. }
  30. # print MPN
  31. set main_work_size [cyp_get_mpn_work_main_size $target_arch]
  32. if {$detected_main_size == 0} {
  33. # 2. Use UDD because flash geometry is not read from register
  34. if { [llength $main_work_size] == 2} {
  35. set main_size [lindex $main_work_size 0]
  36. echo "** Detected Main Flash size, kb: $main_size"
  37. set detected_main_size [expr {$main_size * 1024}]
  38. }
  39. }
  40. if { ${main_reg_name} != "" } { psoc6 set_region_size ${main_reg_name} $detected_main_size }
  41. }