pyOCD icon indicating copy to clipboard operation
pyOCD copied to clipboard

Flashing AIR001 fails with “Memory transfer fault” on pyOCD > 0.36.0 but works on 0.36.0

Open createskyblue opened this issue 1 month ago • 3 comments

Describe the bug When using pyOCD versions higher than 0.36.0, flashing AIR001 fails with a memory transfer error. The same command works correctly on pyOCD 0.36.0.

Command:

pyocd flash --erase chip --target air001 fw.hex

Error message:

C Memory transfer fault (write) @ 0x20001000-0x2000107f [__main__]
Image

Using pyocd 0.36.0, the flashing completes successfully without any issues.

To reproduce

  1. Install pyOCD >= 0.37.0

  2. Run the command:

    pyocd flash --erase chip --target air001 fw.hex
    
  3. Observe the memory transfer fault error.

fw.zip

Expected behavior The firmware should flash normally as it does in version 0.36.0.

Image

Actual behavior Flashing fails with a “Memory transfer fault (write)” error.

Environment

  • pyOCD version: 0.36.0 (works), >0.36.0 (fails)
  • Target: AIR001
  • OS: Windows 10 22H2 19045.5737
  • Python version: 3.11.5
  • ST-Link:V2J45M30

Additional context It looks like something changed after 0.36.0 that affects AIR001 memory writes (possibly RAM region config or flash algorithm behavior).

createskyblue avatar Nov 25 '25 17:11 createskyblue

0.36.0 Log:

C:\Users\lhw>pyocd flash --erase chip --target air001 c:\GITHUB\Air001_GCC_Temp\build\Project.hex -vvv
0000994 D Project directory: C:\Users\lhw [session]
0001134 D Project directory: C:\Users\lhw [session]
0001141 D STLink probe 003600264E0000134E514137 firmware version: V2J45M30 [stlink]
0001144 D Fetching mounted devices from disk service registry entry [windows]
0001144 D Fetching usb storage devices from USBSTOR service registry entry [windows]
0001145 D target_id_usb_id -> mount_point mapping: {'003600264E0000134E514137': 'E:'}  [windows]
0001145 D Unknown capabilities from the following ids: ['usb\\class_ff&subclass_ff&prot_ff', 'usb\\class_ff&subclass_ff', 'usb\\class_ff'] [windows]
0001146 D Composite device subdevice key SYSTEM\CurrentControlSet\Enum\USB\VID_0483&PID_374B&MI_03 was not found, skipping [windows]
0001146 D Composite device subdevice key SYSTEM\CurrentControlSet\Enum\USB\VID_0483&PID_374B&MI_04 was not found, skipping [windows]
0001156 D STLink probe 003600264E0000134E514137 firmware version: V2J45M30 [stlink]
0001158 I Target type is air001 [board]
0001172 D STLink probe 003600264E0000134E514137 firmware version: V2J45M30 [stlink]
0001173 D Running task load_svd [sequencer]
0001173 D Running task pre_connect [sequencer]
0001173 D Running task dp_init [sequencer]
0001175 D Running task lock_probe [sequencer]
0001176 D Running task get_probe_capabilities [sequencer]
0001178 D Running task connect [sequencer]
0001200 D Default wire protocol selected; using SWD [dap]
0001201 I DP IDR = 0x0bc11477 (v1 MINDP rev0) [dap]
0001202 D Running task clear_sticky_err [sequencer]
0001202 D Running task power_up_debug [sequencer]
0001203 D Running task check_version [sequencer]
0001204 D Running task unlock_probe [sequencer]
0001205 D Running task unlock_device [sequencer]
0001205 D Running task create_discoverer [sequencer]
0001205 D Running task discovery [sequencer]
0001206 D Running task find_aps [sequencer]
0001207 D Running task create_aps [sequencer]
0001207 D Running task create_ap.0 [sequencer]
0001209 D Using accelerated memory access interface for AHB-AP#0 [ap]
0001209 D AHB-AP#0 default HPROT=3 HNONSEC=0 [ap]
0001210 D AHB-AP#0 implemented HPROT=3 HNONSEC=0 [ap]
0001211 I AHB-AP#0 IDR = 0x04770031 (AHB-AP var3 rev0) [discovery]
0001211 D Running task find_components [sequencer]
0001211 D Running task init_ap.0 [sequencer]
0001214 I AHB-AP#0 Class 0x1 ROM table #0 @ 0xe00ff000 (designer=43b:Arm part=4c0) [rom_table]
0001216 I [0]<e000e000:SCS v6-M class=14 designer=43b:Arm part=008> [rom_table]
0001218 I [1]<e0001000:DWT v6-M class=14 designer=43b:Arm part=00a> [rom_table]
0001219 I [2]<e0002000:BPU v6-M class=14 designer=43b:Arm part=00b> [rom_table]
0001220 D Running task create_cores [sequencer]
0001221 D Creating SCS component [discovery]
0001221 D selected core #0 [soc_target]
0001224 I CPU core #0: Cortex-M0+ r0p1, v6.0-M architecture [cortex_m]
0001225 D Running task create_components [sequencer]
0001225 D Creating DWT component [discovery]
0001226 I 2 hardware watchpoints [dwt]
0001228 D Creating BPU component [discovery]
0001229 I 4 hardware breakpoints, 0 literal comparators [fpb]
0001230 D fpb has been disabled [fpb]
0001232 D Running task check_for_cores [sequencer]
0001232 D Running task halt_on_connect [sequencer]
0001233 D halting core 0 [cortex_m]
0001233 D Running task post_connect [sequencer]
0001236 D Running task post_connect_hook [sequencer]
0001236 D Running task create_flash [sequencer]
0001236 D Running task notify [sequencer]
0001238 I Loading C:\GITHUB\Air001_GCC_Temp\build\Project.hex [load_cmd]
0001246 D Using double buffer chip erase program [builder]
0001246 D 0 of 90 pages have erased data [builder]
[                                                  ]   0%0001247 D halting core 0 [cortex_m]
0001248 D set reset catch, core 0 [cortex_m]
0001249 D halting core 0 [cortex_m]
0001252 D reset, core 0, type=SW_SYSTEM [cortex_m]
0001365 D clear reset catch, core 0 [cortex_m]
0001394 D resuming core 0 [cortex_m]
0001394 D added=[] removed=[] [manager]
0001394 D bps after flush={} [manager]
0001404 D resuming core 0 [cortex_m]
0001404 D added=[] removed=[] [manager]
0001404 D bps after flush={} [manager]
0001408 D target.get_state probe timeout [flash]
0001419 D resuming core 0 [cortex_m]
0001419 D added=[] removed=[] [manager]
0001420 D bps after flush={} [manager]
[                                                  ]   1%0001427 D halting core 0 [cortex_m]
0001440 D resuming core 0 [cortex_m]
0001440 D added=[] removed=[] [manager]
0001441 D bps after flush={} [manager]
0001454 D resuming core 0 [cortex_m]
0001454 D added=[] removed=[] [manager]
0001455 D bps after flush={} [manager]
[=                                                 ]   3%0001472 D resuming core 0 [cortex_m]
0001472 D added=[] removed=[] [manager]
0001472 D bps after flush={} [manager]
[=                                                 ]   4%0001489 D resuming core 0 [cortex_m]
0001490 D added=[] removed=[] [manager]
0001490 D bps after flush={} [manager]
[==                                                ]   5%0001507 D resuming core 0 [cortex_m]
0001508 D added=[] removed=[] [manager]
0001508 D bps after flush={} [manager]
[==                                                ]   6%0001525 D resuming core 0 [cortex_m]
0001526 D added=[] removed=[] [manager]
0001526 D bps after flush={} [manager]
[===                                               ]   7%0001544 D resuming core 0 [cortex_m]
0001544 D added=[] removed=[] [manager]
0001544 D bps after flush={} [manager]
[====                                              ]   8%0001561 D resuming core 0 [cortex_m]
0001562 D added=[] removed=[] [manager]
0001562 D bps after flush={} [manager]
[====                                              ]   9%0001579 D resuming core 0 [cortex_m]
0001579 D added=[] removed=[] [manager]
0001580 D bps after flush={} [manager]
[=====                                             ]  10%0001597 D resuming core 0 [cortex_m]
0001597 D added=[] removed=[] [manager]
0001598 D bps after flush={} [manager]
[=====                                             ]  11%0001615 D resuming core 0 [cortex_m]
0001616 D added=[] removed=[] [manager]
0001616 D bps after flush={} [manager]
[======                                            ]  12%0001634 D resuming core 0 [cortex_m]
0001634 D added=[] removed=[] [manager]
0001635 D bps after flush={} [manager]
[======                                            ]  13%0001651 D resuming core 0 [cortex_m]
0001652 D added=[] removed=[] [manager]
0001652 D bps after flush={} [manager]
[=======                                           ]  15%0001669 D resuming core 0 [cortex_m]
0001669 D added=[] removed=[] [manager]
0001669 D bps after flush={} [manager]
[=======                                           ]  16%0001687 D resuming core 0 [cortex_m]
0001687 D added=[] removed=[] [manager]
0001687 D bps after flush={} [manager]
[========                                          ]  17%0001705 D resuming core 0 [cortex_m]
0001705 D added=[] removed=[] [manager]
0001705 D bps after flush={} [manager]
[========                                          ]  18%0001722 D resuming core 0 [cortex_m]
0001723 D added=[] removed=[] [manager]
0001723 D bps after flush={} [manager]
[=========                                         ]  19%0001740 D resuming core 0 [cortex_m]
0001740 D added=[] removed=[] [manager]
0001741 D bps after flush={} [manager]
[==========                                        ]  20%0001757 D resuming core 0 [cortex_m]
0001757 D added=[] removed=[] [manager]
0001758 D bps after flush={} [manager]
[==========                                        ]  21%0001775 D resuming core 0 [cortex_m]
0001775 D added=[] removed=[] [manager]
0001775 D bps after flush={} [manager]
[===========                                       ]  22%0001793 D resuming core 0 [cortex_m]
0001793 D added=[] removed=[] [manager]
0001793 D bps after flush={} [manager]
[===========                                       ]  23%0001810 D resuming core 0 [cortex_m]
0001810 D added=[] removed=[] [manager]
0001810 D bps after flush={} [manager]
[============                                      ]  24%0001827 D resuming core 0 [cortex_m]
0001827 D added=[] removed=[] [manager]
0001827 D bps after flush={} [manager]
[============                                      ]  26%0001845 D resuming core 0 [cortex_m]
0001846 D added=[] removed=[] [manager]
0001846 D bps after flush={} [manager]
[=============                                     ]  27%0001862 D resuming core 0 [cortex_m]
0001863 D added=[] removed=[] [manager]
0001863 D bps after flush={} [manager]
[=============                                     ]  28%0001881 D resuming core 0 [cortex_m]
0001881 D added=[] removed=[] [manager]
0001882 D bps after flush={} [manager]
[==============                                    ]  29%0001899 D resuming core 0 [cortex_m]
0001899 D added=[] removed=[] [manager]
0001900 D bps after flush={} [manager]
[==============                                    ]  30%0001917 D resuming core 0 [cortex_m]
0001917 D added=[] removed=[] [manager]
0001918 D bps after flush={} [manager]
[===============                                   ]  31%0001936 D resuming core 0 [cortex_m]
0001936 D added=[] removed=[] [manager]
0001936 D bps after flush={} [manager]
[================                                  ]  32%0001953 D resuming core 0 [cortex_m]
0001953 D added=[] removed=[] [manager]
0001954 D bps after flush={} [manager]
[================                                  ]  33%0001971 D resuming core 0 [cortex_m]
0001971 D added=[] removed=[] [manager]
0001972 D bps after flush={} [manager]
[=================                                 ]  34%0001989 D resuming core 0 [cortex_m]
0001989 D added=[] removed=[] [manager]
0001990 D bps after flush={} [manager]
[=================                                 ]  35%0002007 D resuming core 0 [cortex_m]
0002007 D added=[] removed=[] [manager]
0002007 D bps after flush={} [manager]
[==================                                ]  36%0002024 D resuming core 0 [cortex_m]
0002024 D added=[] removed=[] [manager]
0002025 D bps after flush={} [manager]
[==================                                ]  38%0002042 D resuming core 0 [cortex_m]
0002042 D added=[] removed=[] [manager]
0002042 D bps after flush={} [manager]
[===================                               ]  39%0002059 D resuming core 0 [cortex_m]
0002059 D added=[] removed=[] [manager]
0002060 D bps after flush={} [manager]
[===================                               ]  40%0002077 D resuming core 0 [cortex_m]
0002077 D added=[] removed=[] [manager]
0002077 D bps after flush={} [manager]
[====================                              ]  41%0002094 D resuming core 0 [cortex_m]
0002094 D added=[] removed=[] [manager]
0002094 D bps after flush={} [manager]
[====================                              ]  42%0002111 D resuming core 0 [cortex_m]
0002112 D added=[] removed=[] [manager]
0002112 D bps after flush={} [manager]
[=====================                             ]  43%0002128 D resuming core 0 [cortex_m]
0002129 D added=[] removed=[] [manager]
0002129 D bps after flush={} [manager]
[======================                            ]  44%0002146 D resuming core 0 [cortex_m]
0002146 D added=[] removed=[] [manager]
0002146 D bps after flush={} [manager]
[======================                            ]  45%0002163 D resuming core 0 [cortex_m]
0002163 D added=[] removed=[] [manager]
0002164 D bps after flush={} [manager]
[=======================                           ]  46%0002181 D resuming core 0 [cortex_m]
0002182 D added=[] removed=[] [manager]
0002182 D bps after flush={} [manager]
[=======================                           ]  47%0002199 D resuming core 0 [cortex_m]
0002199 D added=[] removed=[] [manager]
0002199 D bps after flush={} [manager]
[========================                          ]  49%0002216 D resuming core 0 [cortex_m]
0002217 D added=[] removed=[] [manager]
0002217 D bps after flush={} [manager]
[========================                          ]  50%0002234 D resuming core 0 [cortex_m]
0002235 D added=[] removed=[] [manager]
0002235 D bps after flush={} [manager]
[=========================                         ]  51%0002253 D resuming core 0 [cortex_m]
0002253 D added=[] removed=[] [manager]
0002253 D bps after flush={} [manager]
[=========================                         ]  52%0002272 D resuming core 0 [cortex_m]
0002272 D added=[] removed=[] [manager]
0002273 D bps after flush={} [manager]
[==========================                        ]  53%0002290 D resuming core 0 [cortex_m]
0002290 D added=[] removed=[] [manager]
0002291 D bps after flush={} [manager]
[===========================                       ]  54%0002309 D resuming core 0 [cortex_m]
0002309 D added=[] removed=[] [manager]
0002309 D bps after flush={} [manager]
[===========================                       ]  55%0002327 D resuming core 0 [cortex_m]
0002327 D added=[] removed=[] [manager]
0002328 D bps after flush={} [manager]
[============================                      ]  56%0002345 D resuming core 0 [cortex_m]
0002345 D added=[] removed=[] [manager]
0002346 D bps after flush={} [manager]
[============================                      ]  57%0002363 D resuming core 0 [cortex_m]
0002363 D added=[] removed=[] [manager]
0002364 D bps after flush={} [manager]
[=============================                     ]  58%0002381 D resuming core 0 [cortex_m]
0002382 D added=[] removed=[] [manager]
0002382 D bps after flush={} [manager]
[=============================                     ]  59%0002399 D resuming core 0 [cortex_m]
0002399 D added=[] removed=[] [manager]
0002400 D bps after flush={} [manager]
[==============================                    ]  61%0002416 D resuming core 0 [cortex_m]
0002417 D added=[] removed=[] [manager]
0002417 D bps after flush={} [manager]
[==============================                    ]  62%0002434 D resuming core 0 [cortex_m]
0002434 D added=[] removed=[] [manager]
0002434 D bps after flush={} [manager]
[===============================                   ]  63%0002451 D resuming core 0 [cortex_m]
0002451 D added=[] removed=[] [manager]
0002451 D bps after flush={} [manager]
[===============================                   ]  64%0002468 D resuming core 0 [cortex_m]
0002468 D added=[] removed=[] [manager]
0002468 D bps after flush={} [manager]
[================================                  ]  65%0002485 D resuming core 0 [cortex_m]
0002486 D added=[] removed=[] [manager]
0002486 D bps after flush={} [manager]
[=================================                 ]  66%0002503 D resuming core 0 [cortex_m]
0002503 D added=[] removed=[] [manager]
0002504 D bps after flush={} [manager]
[=================================                 ]  67%0002521 D resuming core 0 [cortex_m]
0002521 D added=[] removed=[] [manager]
0002521 D bps after flush={} [manager]
[==================================                ]  68%0002538 D resuming core 0 [cortex_m]
0002538 D added=[] removed=[] [manager]
0002538 D bps after flush={} [manager]
[==================================                ]  69%0002556 D resuming core 0 [cortex_m]
0002556 D added=[] removed=[] [manager]
0002557 D bps after flush={} [manager]
[===================================               ]  70%0002574 D resuming core 0 [cortex_m]
0002574 D added=[] removed=[] [manager]
0002574 D bps after flush={} [manager]
[===================================               ]  72%0002592 D resuming core 0 [cortex_m]
0002592 D added=[] removed=[] [manager]
0002592 D bps after flush={} [manager]
[====================================              ]  73%0002609 D resuming core 0 [cortex_m]
0002609 D added=[] removed=[] [manager]
0002610 D bps after flush={} [manager]
[====================================              ]  74%0002626 D resuming core 0 [cortex_m]
0002626 D added=[] removed=[] [manager]
0002627 D bps after flush={} [manager]
[=====================================             ]  75%0002644 D resuming core 0 [cortex_m]
0002644 D added=[] removed=[] [manager]
0002644 D bps after flush={} [manager]
[=====================================             ]  76%0002661 D resuming core 0 [cortex_m]
0002662 D added=[] removed=[] [manager]
0002662 D bps after flush={} [manager]
[======================================            ]  77%0002679 D resuming core 0 [cortex_m]
0002680 D added=[] removed=[] [manager]
0002680 D bps after flush={} [manager]
[=======================================           ]  78%0002697 D resuming core 0 [cortex_m]
0002698 D added=[] removed=[] [manager]
0002698 D bps after flush={} [manager]
[=======================================           ]  79%0002715 D resuming core 0 [cortex_m]
0002715 D added=[] removed=[] [manager]
0002715 D bps after flush={} [manager]
[========================================          ]  80%0002732 D resuming core 0 [cortex_m]
0002732 D added=[] removed=[] [manager]
0002732 D bps after flush={} [manager]
[========================================          ]  81%0002749 D resuming core 0 [cortex_m]
0002750 D added=[] removed=[] [manager]
0002750 D bps after flush={} [manager]
[=========================================         ]  82%0002767 D resuming core 0 [cortex_m]
0002767 D added=[] removed=[] [manager]
0002767 D bps after flush={} [manager]
[=========================================         ]  84%0002784 D resuming core 0 [cortex_m]
0002784 D added=[] removed=[] [manager]
0002784 D bps after flush={} [manager]
[==========================================        ]  85%0002801 D resuming core 0 [cortex_m]
0002802 D added=[] removed=[] [manager]
0002802 D bps after flush={} [manager]
[==========================================        ]  86%0002819 D resuming core 0 [cortex_m]
0002819 D added=[] removed=[] [manager]
0002819 D bps after flush={} [manager]
[===========================================       ]  87%0002836 D resuming core 0 [cortex_m]
0002836 D added=[] removed=[] [manager]
0002837 D bps after flush={} [manager]
[===========================================       ]  88%0002854 D resuming core 0 [cortex_m]
0002855 D added=[] removed=[] [manager]
0002855 D bps after flush={} [manager]
[============================================      ]  89%0002871 D resuming core 0 [cortex_m]
0002872 D added=[] removed=[] [manager]
0002872 D bps after flush={} [manager]
[=============================================     ]  90%0002889 D resuming core 0 [cortex_m]
0002889 D added=[] removed=[] [manager]
0002889 D bps after flush={} [manager]
[=============================================     ]  91%0002906 D resuming core 0 [cortex_m]
0002906 D added=[] removed=[] [manager]
0002906 D bps after flush={} [manager]
[==============================================    ]  92%0002924 D resuming core 0 [cortex_m]
0002925 D added=[] removed=[] [manager]
0002925 D bps after flush={} [manager]
[==============================================    ]  93%0002941 D resuming core 0 [cortex_m]
0002942 D added=[] removed=[] [manager]
0002942 D bps after flush={} [manager]
[===============================================   ]  95%0002959 D resuming core 0 [cortex_m]
0002960 D added=[] removed=[] [manager]
0002960 D bps after flush={} [manager]
[===============================================   ]  96%0002977 D resuming core 0 [cortex_m]
0002977 D added=[] removed=[] [manager]
0002977 D bps after flush={} [manager]
[================================================  ]  97%0002993 D resuming core 0 [cortex_m]
0002994 D added=[] removed=[] [manager]
0002994 D bps after flush={} [manager]
[================================================  ]  98%0003011 D resuming core 0 [cortex_m]
0003011 D added=[] removed=[] [manager]
0003011 D bps after flush={} [manager]
[================================================= ]  99%0003028 D resuming core 0 [cortex_m]
0003028 D added=[] removed=[] [manager]
0003029 D bps after flush={} [manager]
[==================================================] 100%
0003041 D resuming core 0 [cortex_m]
0003041 D added=[] removed=[] [manager]
0003042 D bps after flush={} [manager]
0003047 D set reset catch, core 0 [cortex_m]
0003047 D halting core 0 [cortex_m]
0003049 D reset, core 0, type=SW_SYSTEM [cortex_m]
0003163 D clear reset catch, core 0 [cortex_m]
0003167 I Erased chip, programmed 11520 bytes (90 pages), skipped 0 bytes (0 pages) at 5.85 kB/s [loader]
0003167 D uninit session <pyocd.core.session.Session object at 0x00000229374CE290> [session]
0003167 D uninit board <pyocd.board.board.Board object at 0x00000229378D7F10> [board]
0003168 D resuming core 0 [cortex_m]
0003168 D added=[] removed=[] [manager]
0003169 D bps after flush={} [manager]

createskyblue avatar Nov 25 '25 17:11 createskyblue

V0.41.0 Log:

C:\Users\lhw>pyocd flash --erase chip --target air001 c:\GITHUB\Air001_GCC_Temp\build\Project.hex -vvv
0001045 D Project directory: C:\Users\lhw [session]
0001182 D Project directory: C:\Users\lhw [session]
0001185 D STLink probe 003600264E0000134E514137 firmware version: V2J45M30 [stlink]
0001189 D Fetching mounted devices from disk service registry entry [windows]
0001189 D Fetching usb storage devices from USBSTOR service registry entry [windows]
0001189 D target_id_usb_id -> mount_point mapping: {'003600264E0000134E514137': 'E:'}  [windows]
0001190 D Unknown capabilities from the following ids: ['usb\\class_ff&subclass_ff&prot_ff', 'usb\\class_ff&subclass_ff', 'usb\\class_ff'] [windows]
0001190 D Composite device subdevice key SYSTEM\CurrentControlSet\Enum\USB\VID_0483&PID_374B&MI_03 was not found, skipping [windows]
0001190 D Composite device subdevice key SYSTEM\CurrentControlSet\Enum\USB\VID_0483&PID_374B&MI_04 was not found, skipping [windows]
0001201 D STLink probe 003600264E0000134E514137 firmware version: V2J45M30 [stlink]
0001204 I Target type is air001 [board]
0001217 D STLink probe 003600264E0000134E514137 firmware version: V2J45M30 [stlink]
0001218 D Running task load_svd [sequencer]
0001219 D Running task pre_connect [sequencer]
0001219 D Running task dp_init [sequencer]
0001221 D Running task lock_probe [sequencer]
0001222 D Running task get_probe_capabilities [sequencer]
0001224 D Running task connect [sequencer]
0001246 D Default wire protocol selected; using SWD [dap]
0001247 I DP IDR = 0x0bc11477 (v1 MINDP rev0) [dap]
0001247 D Running task clear_sticky_err [sequencer]
0001247 D Running task power_up_debug [sequencer]
0001249 D Running task check_version [sequencer]
0001249 D Running task unlock_probe [sequencer]
0001249 D Running task unlock_device [sequencer]
0001250 D Running task create_discoverer [sequencer]
0001250 D Running task discovery [sequencer]
0001250 D Running task find_aps [sequencer]
0001252 D Running task create_aps [sequencer]
0001252 D Running task create_ap.0 [sequencer]
0001253 D Using accelerated memory access interface for AHB-AP#0 [ap]
0001254 D AHB-AP#0 default HPROT=3 HNONSEC=0 [ap]
0001255 D AHB-AP#0 implemented HPROT=3 HNONSEC=0 [ap]
0001256 I AHB-AP#0 IDR = 0x04770031 (AHB-AP var3 rev0) [discovery]
0001256 D Running task find_components [sequencer]
0001256 D Running task init_ap.0 [sequencer]
0001259 I AHB-AP#0 Class 0x1 ROM table #0 @ 0xe00ff000 (designer=43b:Arm part=4c0) [rom_table]
0001262 I [0]<e000e000:SCS v6-M class=14 designer=43b:Arm part=008> [rom_table]
0001264 I [1]<e0001000:DWT v6-M class=14 designer=43b:Arm part=00a> [rom_table]
0001267 I [2]<e0002000:BPU v6-M class=14 designer=43b:Arm part=00b> [rom_table]
0001267 D Running task create_cores [sequencer]
0001267 D Creating SCS component [discovery]
0001268 D selected core #0 [soc_target]
0001271 I CPU core #0: Cortex-M0+ r0p1, v6.0-M architecture [cortex_m]
0001272 D Running task create_components [sequencer]
0001272 D Creating DWT component [discovery]
0001273 I 2 hardware watchpoints [dwt]
0001275 D Creating BPU component [discovery]
0001275 I 4 hardware breakpoints, 0 literal comparators [fpb]
0001276 D fpb has been disabled [fpb]
0001278 D Running task check_for_cores [sequencer]
0001279 D Running task halt_on_connect [sequencer]
0001279 D halting core 0 [cortex_m]
0001280 D Running task post_connect [sequencer]
0001281 D Running task post_connect_hook [sequencer]
0001281 D Running task create_flash [sequencer]
0001282 D Running task notify [sequencer]
0001282 D set reset catch, core 0 [cortex_m]
0001282 D removing all breakpoints before reset [manager]
0001282 D halting core 0 [cortex_m]
0001284 D reset, core 0, type=DEFAULT [cortex_m]
0001400 D clear reset catch, core 0 [cortex_m]
0001401 D disabling hardware breakpoints after reset [manager]
0001405 I Loading C:\GITHUB\Air001_GCC_Temp\build\Project.hex [load_cmd]
0001413 D 0 of 90 pages have erased data [builder]
0001414 D halting core 0 [cortex_m]
0001440 D resuming core 0 [cortex_m]
0001440 D added=[] removed=[] [manager]
0001441 D bps after flush={} [manager]
0001450 D resuming core 0 [cortex_m]
0001451 D added=[] removed=[] [manager]
0001451 D bps after flush={} [manager]
0001455 D target.get_state probe timeout [flash]
0001465 D resuming core 0 [cortex_m]
0001465 D added=[] removed=[] [manager]
0001466 D bps after flush={} [manager]
[                                                  ]   1%0001470 D halting core 0 [cortex_m]
0001485 D resuming core 0 [cortex_m]
0001486 D added=[] removed=[] [manager]
0001486 D bps after flush={} [manager]
0001494 D uninit session <pyocd.core.session.Session object at 0x000001D1CCCB0C10> [session]
0001494 D uninit board <pyocd.board.board.Board object at 0x000001D1CC839090> [board]
0001495 D resuming core 0 [cortex_m]
0001495 D added=[] removed=[] [manager]
0001496 D bps after flush={} [manager]
0001500 C Memory transfer fault (write) @ 0x20001000-0x2000107f [__main__]
Traceback (most recent call last):
  File "C:\Users\lhw\AppData\Local\Programs\Python\Python311\Lib\site-packages\pyocd\__main__.py", line 161, in run
    status = cmd.invoke()
             ^^^^^^^^^^^^
  File "C:\Users\lhw\AppData\Local\Programs\Python\Python311\Lib\site-packages\pyocd\subcommands\load_cmd.py", line 161, in invoke
    programmer.program(filename,
  File "C:\Users\lhw\AppData\Local\Programs\Python\Python311\Lib\site-packages\pyocd\flash\file_programmer.py", line 173, in program
    self._loader.commit()
  File "C:\Users\lhw\AppData\Local\Programs\Python\Python311\Lib\site-packages\pyocd\flash\loader.py", line 294, in commit
    perf = builder.program(chip_erase=chipErase,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\lhw\AppData\Local\Programs\Python\Python311\Lib\site-packages\pyocd\flash\builder.py", line 530, in program
    flash_operation = self._chip_erase_program(progress_cb)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\lhw\AppData\Local\Programs\Python\Python311\Lib\site-packages\pyocd\flash\builder.py", line 747, in _chip_erase_program
    self.flash.program_page(page.addr, page.data)
  File "C:\Users\lhw\AppData\Local\Programs\Python\Python311\Lib\site-packages\pyocd\flash\flash.py", line 395, in program_page
    self.target.write_memory_block8(self.begin_data, bytes)
  File "C:\Users\lhw\AppData\Local\Programs\Python\Python311\Lib\site-packages\pyocd\core\soc_target.py", line 235, in write_memory_block8
    return self.selected_core_or_raise.write_memory_block8(addr, data)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\lhw\AppData\Local\Programs\Python\Python311\Lib\site-packages\pyocd\coresight\cortex_m.py", line 636, in write_memory_block8
    self.ap.write_memory_block8(addr, data)
  File "C:\Users\lhw\AppData\Local\Programs\Python\Python311\Lib\site-packages\pyocd\utility\concurrency.py", line 29, in _locking
    return func(self, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\lhw\AppData\Local\Programs\Python\Python311\Lib\site-packages\pyocd\coresight\ap.py", line 1334, in _accelerated_write_memory_block8
    self._accelerated_memory_interface.write_memory_block8(addr, data,
  File "C:\Users\lhw\AppData\Local\Programs\Python\Python311\Lib\site-packages\pyocd\probe\stlink_probe.py", line 377, in write_memory_block8
    self._link.write_mem32(addr, data[idx:idx + aligned_size], self._apsel, csw)
  File "C:\Users\lhw\AppData\Local\Programs\Python\Python311\Lib\site-packages\pyocd\probe\stlink\stlink.py", line 493, in write_mem32
    self._write_mem(addr, data, Commands.JTAG_WRITEMEM_32BIT, self.MAXIMUM_TRANSFER_SIZE, apsel, csw)
  File "C:\Users\lhw\AppData\Local\Programs\Python\Python311\Lib\site-packages\pyocd\probe\stlink\stlink.py", line 481, in _write_mem
    raise exc
pyocd.core.exceptions.TransferFaultError: Memory transfer fault (write) @ 0x20001000-0x2000107f

createskyblue avatar Nov 25 '25 17:11 createskyblue

Fix: Please modify line 60 in the file .\pyocd\target\builtin\target_Air001.py as follows:

Change to:

'begin_data' : 0x20000000 + 0x270,

createskyblue avatar Nov 25 '25 17:11 createskyblue