Ася 66740044, но спрашивал я перед НГ.
В общем получается так:
Для записи флеша CW в цикле вызывает
1. JLINKARM_WriteDCC() с буфером в 2 слова
В первом слове типа кода команды и длина
Во втором слове адрес
2. JLINKARM_WriteDCC() с буфером в 0x0A00 слов или 10килобайт собственно данных.
Эти 10кБ пишутся несколько сек.
Всё это один в один приходит в loader который в RAM ARM-а загружен.
Так что на CW я в этой части не грешу.
Осталось выяснить где собака порылась в софте ceggera c их сотней вызовов в
jlinkarm.dll или в MT-LINK-е.
До кучи сейчас ещё один эксперимент провёл.
CW со своим лоадером умеет двумя способами общаться
1. Через ARM debug comms channel (По дефолту для большинства процев)
2. Через буфер в RAM.
Исходников лоадера под кучу платформ навалом.
Вот я и скомпилял лоадер под использование буфера в RAM.
Но..., Факир был пьян, фокус не прокатил, скорость ещё меньше оказалась
около 3кБ/сек.
При этом CW не хорошо поступает.
1. Для загрузки лоадера вызывает JLINKARM_WriteMem с буфером размером с
сам лоадер, поэтому лоадер грузится моментально.
2. Сами данные для записи во флэш пихает в RAM через вызов JLINKARM_WriteU32
т.е. по одному слову!

Гады!
Думаю теперь мож во враппере jlinkarm.dll отлавливать JLINKARM_WriteU32 со смежными
адресами и группировать их в один вызов JLINKARM_WriteMem, надеюсь прокатит!