Hi, Yiping,
Thanks for the quick response, I did following things (partially following your suggestion because my case is a little different).
1) "USE_SAFE_RCW = True" was set in my target init script all the time, and I use it to set the RCW words as well as to adapt to our board's setting (please let me know if you see problem) :
# add here if you need to override other particular RCW values
TA.rcw.set_data({1: 0x0810000e, 5: 0x24550002, 6: 0x80004002, 8: 0xc1002000, 9: 0x00000000, 12: 0x08038e48, 13: 0x20004500, 14: 0x08001000})
2) "QSPI_BOOT = 0" doesn't work, it will skip QSPI_BOOT related script code, so I have to set "QSPI_BOOT = True" to make QSPI enabled and corresponding device selected, am I doing it right?
3) Instead of "MT25QU128ABA" and "MT25QU512ABA", we actually have "MT25QU256ABA" QSPI chip, so I added QSPI device as:
fl.add_device({"alias": "qspi", "name": "MT25QU256ABA", "address": 0x40000000, "ws_address": 0x10000000, "ws_size": 0x1FFFF, "geometry": "8x1", "controller": "QSPI"})
Note: we do have flashing algorithm and pattern files created and put into corresponding folders of CW, so far it didn't complaint anything.
4) Setting "log v" in CCS does provide more information (thank you for the good suggestion) when I tried to erase 2M memory on QSPI flash, it says: ERROR(4): Cable disconnected (target power not detected)
Flash Programmer screen capture:

CCS Printout with "log v" command and write_memory actions:

CCS printout when error returns:

So, my question would be: why this doesn't happen when erase small chunk of QSPI memory? do I need different power cable for my target device? Any suggestion will be deeply appreciated.