> Ну раз JTAG.... Ну расскажи подробно и детально, как шить через JTAG.В самом общем случае...
1) Можно загнать железку в "Boundary Scan" и помахать лапками SoC как надо. Изначально режим для теста пропайки к плате, но креативно пересмотрев bit string и их чтение, можно махать лапками и для целей отличных от теста пропайки, накидав команды в флешку. Не то чтобы это эффективно и быстро, но довольно универсально и не зависит от живости CPU core, машина состояний JTAG при этом рулит лапками сама.
2) JTAG это отладочный интерфейс. Поэтому можно остановить CPU core, налить ему каких-то инструкций в RAM (да, если это DRAM может потребоваться сперва его инициализировать, увы), и пустить выполняться налитый код. Бывают даже "RAM build" того же uboot - подразумевающие что они "как-то" сразу в RAM после старта "сам" образовался. А "как-то" может быть и, вот, через JTAG. На некоторых железках RAM-билд идентичен обычному, если там само железо маппило SPI в регион памяти и/или авто-буферизовало бут в RAM.
3) Можно и не наливать никакой код и инструктировать проц, контроллер шины и/или флешки и/или блока SPI делать нужные доступы в память. Идея в том чтобы так или иначе в флеш отправились нужные команды под управлением JTAG.
В любом случае это не уповает на присутствие какого либо кода в флешке, а некоторые из методов даже и ядро проца в процессе не используют. Ну и конечно для этого всего есть энное количество разных программ. Более-менее generic это например openocd, он так то дебагер но у народа бывают и более странные скрипты для оного с какими-то более другими целями.
> Потому что я инет читаю, и вообще не понимаю, каким боком тут JTAG.
Это низкоуровневый интерфейс для тестирования и дебага. Он как правило дает полный низкоуровневый контроль над системой. И как одна из ипостасей, при этом не важно был ли в системе какой-то код или нет. В некоторых микроконтроллерах это вообще штатный способ чтобы лить в изначально пустой с фабрики чип (с встроенной флехой) код.
> Это же средство отладки конкретных микросхем на RTL-уровне.
Лол. Сперва читайте что это такое, потом выдавайте ценные мнения.
> Что, конечно, можно заморочиться и для каждого чипа написать свою программу, дёргающую
> этот JTAG в нужной последовательности с хоста, но кто с этим заморачиваться будет?
Ну вот некоторые таки заморачиваются и энное количество странных штук для jtag debrick - есть.
Но чаще родной бут выживает и хватит просто сериального консольного шнурка. Который заодно покажет где процесс загрузки встрял и чаще всего позволяет порулить бутлоадером, если он не огорожен совсем уж внаглую. UART это другие контакты и другой интерфейс.
А если это почему-то не вариант, на spi чип можно накинуть характерную 8-лапую клипсу (на алике продаются) - не включая основную систему - и попытаться его прошить прям без отпайки. Если прокатывает, чип шьется обычным програмером без его отпайки с платы "напрямую".