Справочный материал для ArmSoM: полное техническое содержание RK Firmware Upgrade Failure Analysis 1.2. Единственный источник — китайский PDF на25 страницах; английский, русский и немецкий переведены полностью, все используют45 исходных рисунков. Журналы, сравнение бинарных файлов, платы и осциллограммы сохранены в оригиналах; неразборчивые символы не выдуманы. Читаемый batch-код и последняя таблица питания также переписаны текстом. Примеры относятся к старым SoC/инструментам, не испытаниям ArmSoM. Проверяйте аппаратуру, BSP, datasheet памяти и цепочку загрузки.
Границы и вопросы источника
- Это рекомендации диагностики, не доказательство неисправности по одному сообщению. Сохраните журналы, проверьте прошивку/питание, затем исследуйте факты. Перепайка требует квалификации.
- Repair, стирание IDB, перепрошивка и запись misc разрушают данные/загрузочное состояние. Сначала резервная копия, точная цель и размер раздела. Для secure boot нужна подписанная прошивка, не обход проверки.
- Pin38-VCC, подтяжки10K и EXT CSD179/167/162 относятся лишь к подходящим компонентам/платформам. RTS_n, DATO, RK3329 отмечены как сомнительные написания; не определяйте соединения по опечатке.
- Таблицы ID исторические, не полный список. После D3 стоит разделитель без второго значения — ID не выдуман.00/FF трактуются только в контексте источника, не заменяют электрическую проверку.
- На странице25 таблица только изображением; сохранена и переписана: Ta=25°C при3.3V, VCC2.7V–3.6V, пульсации60mV peak-to-peak. Диапазоны текста100-300mA/100-700uA не равны гарантиям для показанного отдельного типа.
- Третий batch-скриншот страницы17 обрезан справа в оригинале. Команда восстановлена по предыдущему и явной замене-RK29→-RK30; изображения сохранены. Времена журналов сохранены как контекст; дата обложки, контакты и история удалены. Прошивка, стирание, регистры и аппаратные операции не выполнялись.
1. Обзор
На производстве и при разработке часто возникают ошибки обновления прошивки. Руководство собирает типовые проблемы и способы диагностики. Инструменты меняются, поэтому точные сообщения могут отличаться, но для одного типа ошибки обычно похожи.
2. Типовые ошибки и анализ
2.1. Ошибка загрузки Boot Code
Сообщение производственного инструмента:

Сообщение инструмента разработки:

Файл журнала в каталоге log производственного инструмента:

Файл журнала в каталоге log инструмента разработки:

Возможные причины:
-
Плохое качество сигнала USB.
-
Дефекты пайки SoC или питания.
-
Проблемы DDR.
-
Недостаточное питание.
-
Неподписанная прошивка на устройстве с secure boot.
Диагностика:
-
Проверьте пайку инструментом тестирования DDR.
-
Используйте короткий качественный кабель USB 2.0 и задний USB-порт ПК.
-
Проверьте наличие и параметры ESD-компонентов USB.
-
Измерьте напряжение и пульсации питания USB.
-
Проверьте параллельную прокладку USB и других трасс на соседних слоях.
-
Проверьте номиналы резисторов и конденсаторов SoC/USB.
-
Используйте предусмотренный платой внешний источник или батарею.
-
Устройствам secure boot нужна соответствующая правильно подписанная прошивка.
2.2. Тест устройства не проходит после загрузки Boot Code
Сообщение производственного инструмента:

Сообщение инструмента разработки:

Журнал производственного инструмента:

Журнал инструмента разработки:

Возможные причины:
-
Компоненты DDR или разводка DDR; источник считает их наиболее вероятными.
-
Плохой сигнал USB.
-
Неверный usbplug при упаковке miniloader в U-Boot.
Диагностика:
-
Проверьте пайку DDR тестовым инструментом.
-
Проверьте разводку DDR на нарушение правил.
-
При подтверждённой неисправности замените DDR.
-
Проверки USB — раздел 2.1.
-
Подключите UART и выясните, дошёл ли CPU до DDR или usbplug.
2.3. Подготовка IDB: пайка NAND FLASH или EMMC
Производственный инструмент сообщает об ошибке подготовки IDB:

Журнал производственного инструмента:

Инструмент разработки сообщает об ошибке записи ID_BLOCK:

Журнал сообщает, что NAND FLASH не найдена и запись ID_BLOCK не удалась.
Возможные причины:
-
Плохая пайка NAND FLASH/EMMC.
-
Неподдерживаемая NAND FLASH.
-
Дефекты платы.
-
Неверное питание FLASH VCCQ.
-
Неверный FLASH SEL на стороне AP.
-
Отсутствуют подтяжки CMD и D0 EMMC.
Диагностика:
-
Проверьте плату и восстановите пайку NAND FLASH/EMMC квалифицированным способом.
-
Сверьте схему и datasheet NAND, особенно вывод 38. По источнику, большинству Toshiba, Sandisk и Samsung там нужен VCC, другим — нет. Это историческое обобщение: определяющими являются datasheet и корпус конкретного компонента.
-
Для неподдерживаемой NAND получите соответствующее обновление драйвера через поддержку изготовителя и проверьте список поддерживаемых компонентов.
-
UART-журнал помогает проверить пайку. Исправная NAND выводит FLASH ID, как ниже. В описанном пути загрузки EMMC обычно не выводит FLASH ID.

Первый байт FLASH ID определяет изготовителя:
| ID | Изготовитель |
|---|---|
| 2C | Micron |
| AD | Hynix |
| 45 | Sandisk |
| 89 | Intel |
| EC | Samsung |
| 98 | Toshiba |
| 00 | NAND FLASH не подключена |
| FF | NAND FLASH не подключена |
| Другие значения | Плохая пайка или неподдерживаемая NAND FLASH. |
Второй байт обозначает ёмкость; типовые значения источника:
| ID | Ёмкость |
|---|---|
| 75 | 32MB |
| 76 | 64MB |
| 78、79、F1、D1 | 128MB |
| DA、71 | 256MB |
| DC | 512MB |
| D3、 | 1GB |
| D5、48 | 2GB |
| D7、68 | 4GB |
| D9、88、DE、3A、64 | 8GB |
| 3C、A8、84 | 16GB |
| Другие значения | Плохая пайка или неподдерживаемая NAND FLASH. |
Примеры диагностики:
- Следующий журнал источник связывает с плохой пайкой NAND FLASH или EMMC.

- Установлены две NAND, но система видит четыре. Источник указывает на плохую пайку CS.

- Две NAND установлены и найдены, но ID неверны: первый байт 2c — Micron, второй 8C вместо ожидаемого здесь 88. Источник делает вывод о пайке. Не считайте любой отсутствующий в таблице ID неисправным без datasheet.

2.4. Ошибка записи IDB
Производственный инструмент сообщает об ошибке записи ID_BLOCK:

Ошибка ID_BLOCK в инструменте разработки:

Журнал разработки сообщает об ошибке сравнения:

Журнал производственного инструмента:

В каталоге LOG также появляются бинарные файлы:

Сравните бинарным инструментом файлы с одинаковым префиксом и суффиксами «flash» и «file», например:

В примере один или несколько отличающихся битов указывают на DDR. См. 2.2; это диагностический признак, не самостоятельное доказательство.

Много отличающихся битов в примерах обычно указывает на NAND. Источник предлагает повторить обновление. Сильные пульсации питания или отсутствие фильтрующих конденсаторов дают тот же симптом. Если питание нормально, а повторения не помогают, после подтверждения диагноза замените NAND.

2.5. Ошибка загрузки прошивки
Производственный инструмент сообщает об ошибке загрузки прошивки:

Журнал: WriteLBA failed, код (-3).

Журнал: ReadLBA failed, код (-4).

Источник связывает оба случая с прерыванием USB. Проверки — в 2.1.
Журнал: RKA_File_Check failed.

В каталоге журнала два файла: предназначенные для записи данные и ошибочно прочитанные из flash.

Сравните файлы. Один или несколько отличающихся битов указывают на DDR; см. 2.2.


При множестве отличающихся битов источник подозревает NAND и предлагает «Repair» производственного инструмента либо «Erase IDB» инструмента разработки перед прошивкой. Это может уничтожить данные и загрузочные метаданные: сначала резервная копия и проверка устройства. Исходные кнопки сохранены ниже.

Повторно прошивайте только после выбранного восстановления/стирания и проверок.
Причиной также бывают пульсации или отсутствие фильтрации NAND. Если проверка питания и повторная прошивка не помогают, замените NAND после диагностики.

Сообщения и журналы разработки аналогичны производственным; анализ тот же.
2.6. Ошибка проверки чипа
Проверка чипа обычно не проходит, когда прошивка не соответствует SoC. При разработке возможен неверный параметр упаковки. По источнику, инструмент разработки не проверяет чип: неверная прошивка не загрузится либо вернётся в режим обновления. Нужна корректная прошивка.

Пример для RK30 ошибочно упакован как RK29. Откройте mkupdate.bat и исправьте параметр чипа.

Afptool -pack ./ Image\update.img
RKImageMaker.exe -RK29 RK30xxLoader(L)_V1.20.bin Image\update.img update.img -os_type:androidos
rem update.img is new format, Image\update.img is old format, so delete older format
del Image\update.img
pause
В данном примере RK30 измените параметр RKImageMaker.exe на -RK30.

Afptool -pack ./ Image\update.img
RKImageMaker.exe -RK30 RK30xxLoader(L)_V1.20.bin Image\update.img update.img -os_type:androidos
rem update.img is new format, Image\update.img is old format, so delete older format
del Image\update.img
pause
Подробности — в документах каталога инструмента создания прошивки.
3. Другие проблемы
3.1. После перезагрузки остаётся режим обновления
Случай 1: после инструмента разработки устройство не запускается, по USB видно обновление. Ниже UART-журнал.

Читаемые ключевые состояния последовательного порта (фрагмент; полный журнал остаётся на оригинальном снимке):
unsigned!
SecureBootEn = 0
Boot ver: 2012-11-13#1.20
Error: Invaid tag(0x00000000)!
Load failed!
Begin recover...
GetRemapTbl flag = 1
Error: Invaid tag(0x00000000) in backup!
Start RockUsb...
2900305 UsbConnected
Источник объясняет это записью misc.img без recovery.img.

Решение: повторно запишите recovery.img. Источник также описывает запись файла больше 32KB в misc для удаления команд; это разрушительная операция, неприменимая вслепую к новым разметкам.
Случай 2: источник называет RK3329 и RK3368, где без trust.img возможен отказ запуска. Запишите соответствующий trust.img. RK3329 сохранено как в источнике и требует проверки платформы.
3.2. EMMC не загружается при включении
Источник связывает это прежде всего с RK3188, PX3, PX2, RK3066, RK3168 после обновления loader или установки заранее прошитой памяти. Проверки:
-
Проверьте схему/разводку. CMD и DATA0-DATA7 требуют подтяжек; источник рекомендует 10K. Проверьте пайку. Не проводите сигналы EMMC через NC-выводы.
-
Измерьте осциллографом включение. CMD должен подниматься одновременно с VCCQ EMMC. При более позднем CMD часть EMMC не загружается.

- Проверьте выбросы CMD/CLK. Они мешают запуску части EMMC. Источник наблюдал это у RK3066 с PMU TI и предлагает изменить последовательность питания.

- Проверьте выбросы CMD, CLK, DATA; возможно последовательное согласование. Сильный звон CLK в примере может вызвать логические ошибки.

-
Проверьте пульсации VCC и подходящие фильтрующие конденсаторы.
-
Для заранее прошитой памяти проверьте EXT CSD.
EXT CSD источника: байт179 = 0x08 (boot1 без ACK); байт167 = 0x1F; байт162 = 0x01 (reset pin). Остальные значения — по умолчанию. Это настройки конкретной платформы, не универсальная инструкция; некоторые изменения могут быть необратимы.
Для RK312X, RK3228, RK3366, RK3288, RK3399 остановку в MASKROM после прошивки источник обычно связывает с неверным соединением отдельных D0-D7 EMMC.
3.3. EMMC не загружается после сброса
Проверьте соединение EMMC_PWEN SoC с выводом EMMC, названным в источнике RTS_n. Сверьте настоящее имя по схеме/datasheet; возможная опечатка не должна определять соединение.
Для предварительной прошивки RK3188, PX3, PX2, RK3066, RK3168 источник требует EXTCSD162 = 0x01.
3.4. Задержка до LOADER на EMMC
Источник объясняет задержку входом BOOTROM в поиск NAND на несколько секунд. Проверки:
- Проверьте схему/разводку, подтяжки CMD и DATA0-DATA7 (рекомендовано10K), пайку. Не используйте NC для трассировки EMMC. В примере DATA6 проходит через NC, что замедляет запуск.

- Измерьте DATA0-DATA7 при включении (источник пишет DATO). В этом примере фронт DATA должен быть короче2us. Рисунок2 увеличивает красный овал рисунка1 для измерения.
Рисунок1:

Рисунок2: увеличенный фронт сигнала.

3.5. Ошибки чтения/записи EMMC в Android
Возможные причины:
-
Недостаточное VCC/VCCQ с провалом напряжения при работе.
-
Плохая разводка и сильные помехи.
Меры устранения:
- Проверьте влияние внешней активности, например Wi-Fi, на питание EMMC; источник рекомендует отдельное питание.
- Измерьте bus timing осциллографом. В примере недостаточный hold time на спаде CLK в режиме DDR может вызвать логическую ошибку.

3.6. Потребление EMMC
Источник указывает100-300mA при чтении/записи и100-700uA в ожидании. Влияют режим скорости, частота/ёмкость EMMC, напряжение интерфейса, температура, технология изготовителя и подтяжки. Ниже пример одного неуказанного EMMC, не универсальный предел.

Ta=25°C @3.3V
| Режим | Максимум/типовое | Единица |
|---|---|---|
| Автосон | 350 | uA |
| Сон (CMD5) | 200 максимум;130 типовое | uA |
| Чтение: обычная скорость | 100 | mA |
| Чтение: высокая скорость | 200 | mA |
| Запись: обычная скорость | 100 | mA |
| Запись: высокая скорость | 200 | mA |
VCC:2.7V–3.6V; максимальные пульсации60mV peak-to-peak.
