I have been using custom external loader for a long time without any problems. I noticed a problem when I tried to upload to a board without an external flash ic. I am using CLI 2.14.0. While mass erase completes in a few seconds under normal conditions, it gives an error after 5-7 minutes on a board without flash IC.
Also, unfortunately, the problem varies from computer to computer. I'm testing it under the same conditions on 3 different computers (Programmer and CLI versions are the same). While there is a latency on computers using w11, there is no problem on computers using w10, it responds instantly.
I would like to share an example I took when I was at verbosity level 3.
One of the problems with the implementation is that it has no idea how long different erase cycles take on different parts, and arrays in different states. A better solution would be for the loader to provide expected times, or timeouts, or furnish progress call-backs.
Some of the parts (Micron?) can walk thru the erase more quickly when sectors/blocks are already erased or still blank. Some large devices can take a very long time (many minutes), and the multi-die parts need each die erasing. They might be able to be started concurrently but I don't have the time, patience or funding to test that. ie think of a 4Gbit Micron part. ST doesn't use this part, so has no loaders or experience, but it doesn't support the MASS ERASE command, you need to use DIE ERASE 4x times, and wait for those parts to complete differently, you can't use the auto-polling.