БМК, спасибо, испробую.
Barabashka, джтага на плате нет. Во всяком случае, в виде явного разведённого разъёма. Возможно, какие-то контрольные точки где-то и есть, которые при установке в стенд для диагностики/ремонта плат могут иметь вывод на джтаговые ноги проца, ну не суть. На картинке - jffs, т.е. файлик для образа файловой системы, который по определению уже не может быть кодом загрузчика для старта всего устройства, т.к. на момент загрузки - процессор не знает о том, что такое файловая система.
Но тема-то не об этом, это всё отступления.
Самое важное - это каким-то образом определить, что во всех данных из флэшки чем является.
Если грубо - это как многоэтажная книжная полка, на которой все полочки строго одинакового размера и каждая разделена на 2 части, большую и маленькую (например, 95% и 5%).
И вот далее следуют уже разные варианты.
1 - В большой части хранится полезный код, и если какое-то место в ней имеет дырку (т.е. если мы туда поставим книжку, то она провалится в пустоту, иными словами - это битый блок), то вместо установки книжки в это место, мы ставим её в ту запасную часть места на той же полке.
Данный вариант предполагает интеллектуальность того, кто работает с книжками на этой многоэтажной полке (библиотекаря, например). Чтобы он вёл запись, где что на каждой конкретной полке стоит, какое место где дырявое, где нет.
Возвращаясь к реальности - это должен быть контроллер работы с нандовой флэшкой. Т.е. для каждой такой "полки" он должен, при записи данных, контроллировать, не провалится ли устанавливаемая на полку книжка вникуда (т.е. не происходит ли потеря данных при записи). Если таковое происходит - значит он где-то на этой же полке должен сделать для себя же на будущее отметку, что на такое-то место ничего больше нельзя размещать, а вместо этого возможны 2 варианта:
а) пропустить этот блок и продолжить запись в следующий исправный (тем самым удлинняя основную часть полки и укорачивая ту резервную),
б) либо не менять соотношение длин основной и резервной части и использовать место в резервной области для размещения данных (т.е. в описании для каждой конкретной полки должна быть информация, что по такому-то адресу дырка, а вместо него используется такой-то адрес в резервной части).
2 - Всё место на каждой полке используется под хранение данных, т.е. когда мы сознательно принебрегаем разделением на основную и дополнительную часть. И по сравнению с первым несколько проще (хотя вся работа возложена тоже на контроллер нанд): поступающая на хранение информация предварительно снабжается избыточным кодом, чтобы, в случае ошибок чтения, её можно было восстановить при помощи алгоритма восстановления.
Повторюсь: как, имея считанный программатором дамп (а читает же он всё подряд, т.к. в конкретном устройстве, из которого флэшка, контроллер нанда может работать по какому угодно алгоритму) понять, где там какие данные?
И, авторы программатора для копирования флэшки предлагают брать новую чистую флэшку без сбойных блоков. А таких ведь практически не бывает! Итого - имеем полный ступор.
С одним только исключением - самый первый блок данных в нанде не может иметь сбойных секторов, т.е. в него якобы и должен всегда помещаться код загрузчика для работы устройства. Прописав его, за остальные данные можно не переживать, просто вытерев их, т.к. устройство (если в нём есть таковая возможность, конечно же) само по своему алгоритму запишет что и куда ему заблагорассудится.
+Ed: возможно, я в каких-то подробностях относительно представленных вариантов работы ошибаюсь, а что-то может быть не совсем полно. В любом случае, просьба поправить, если есть какие-то ошибки.