amamlin
Mar 11 2011, 08:01
Приятного времени суток, ALL!
Предыстория такова что есть девайс ipaq hx4700 с процессором pxa270 и 128 мегабайтами intel strataflash (2 банки по 28F128L18 или 28F128L30 если не ошибаюсь).
По неосторожности был убит загрузчик. Для восстановления собрал wiggler, подключил... OpenOCD, H-JTAG, OCD Commander, Jflashmm видят и могут работать с процессором, но не могу прочитать/записать флеш поскольку ни одна из программ его не видит.
Много всего перепробовал, может что подскажете?
DpInRock
Mar 11 2011, 08:27
amamlin
Mar 11 2011, 08:38
Цитата(DpInRock @ Mar 11 2011, 11:27)

По этому мануалу и собирал wiggler и openocd пробовал, но не вышло. openocd ругается flash probe failed
DpInRock
Mar 11 2011, 09:00
amamlin
Mar 11 2011, 09:11
DpInRock, Да вроде бы все тоже самое делал, хотя заметил небольшое расхождение в моем конфиге. Сегодня попробую
DpInRock
Mar 11 2011, 09:21
Года 4 назад таким способом перепрошивал свой HP. Вроде никаких проблем не было. К сожалению, следов этих действий на компе уже нет, как и самого HP.
amamlin
Mar 11 2011, 09:26
DpInRock тоже hx4700? Какие подводные камни еще можно ожидать?
amamlin
Mar 11 2011, 19:25
Не вышло с измененным конфигом... В схеме j-tag-а D0 и так проинвертирован, но этот D0 отличается от D0 других схем j-tag
Вываливается Unknown error while probing flash at 0x00000000
Может попробовать кабель напрямую(через резисторы без буфера) пустить?
DpInRock
Mar 11 2011, 20:28
Наверно глупость скажу,
но поставьте IAR. У него есть средства для программирования 270го.
amamlin
Mar 11 2011, 20:34
Попробую.
Сейчас вычитал еще что openocd не видит флеш из-за того что процессор не может перейти в состояние debug(по мнению самого openocd по крайней мере, OCD Commander уверенно говорит что девайс In DEBUG). Возможно что то с кабелем еще не так(хотя уже раз 5 перепаивал).
Ошибку openocd выдает вот такую:
Unknown error when probing flash bank '#0'
DpInRock
Mar 12 2011, 06:57
amamlin
Mar 12 2011, 16:47
С IAR тоже ничего не вышло. Не видит периферии, как и все остальное. Принудительный перевод в дебаг так же не помог
DpInRock
Mar 12 2011, 18:20
Чисто случайно, не забыто подать питание на 74HС00?
amamlin
Mar 12 2011, 19:05
Я со школы радиотехникой занимаюсь, так что схема собрана правильно и запитана как надо. Сигналы на SRTST и TRST идут, да и reset вроде бы работает... А вот halt что то не хочет.
DpInRock
Mar 12 2011, 20:00
amamlin
Mar 13 2011, 16:14
Попробовал. Удалось достучаться до памяти, она корректно определяется, но не программруется
Цитата
target state: halted
target halted in ARM state due to debug-request, current mode: Supervisor
cpsr: 0x000000d3 pc: 0x00000000
MMU: disabled, D-Cache: disabled, I-Cache: disabled
(processor reset)
Info : Flash Manufacturer/Device: 0x0089 0x8816
Warn : expected one protection register field, but found 2
Warn : configuration specifies 0x2000000 size, but a 0x2000000 size flash was found
flash 'cfi' found at 0x00000000
> flash write_image 1.2.5-hp.rom 0x0 bin
Using target buffer at 0x5c000038 and of size 0x8000
Write 0x8000 bytes to flash at 0x00000000
status register: 0x98
Low Programming Voltage Detected, Operation Aborted
Program Error / Error in Setting Lock-Bit
error writing to flash at address 0x00000000 at offset 0x00000000 (-902)
Command handler execution failed
in procedure 'flash' called at file "command.c", line 650
called at file "command.c", line 361
DpInRock
Mar 13 2011, 16:29
Прогресс.
Ну дальше проще.
"....." сообщения в гугл.
Ответов вываливается достаточное количесство.
В кавычки токо лучше брать.
amamlin
Mar 13 2011, 16:39
Самое интересное в том что питания должно хватать, аккумулятор заряжен полностью.
Плюс ко всему могу снять защиту от записи... А записать вот не выходит.
Посмотрел исходники
openocd на предмет этой ошибки, там написано
Код
00348 if (status != 0x80)
00349 {
00350 LOG_ERROR("status register: 0x%x", status);
00351 if (status & 0x2)
00352 LOG_ERROR("Block Lock-Bit Detected, Operation Abort");
00353 if (status & 0x4)
00354 LOG_ERROR("Program suspended");
00355 if (status & 0x8)
00356 LOG_ERROR("Low Programming Voltage Detected, Operation Aborted");
00357 if (status & 0x10)
00358 LOG_ERROR("Program Error / Error in Setting Lock-Bit");
00359 if (status & 0x20)
00360 LOG_ERROR("Error in Block Erasure or Clear Lock-Bits");
00361 if (status & 0x40)
00362 LOG_ERROR("Block Erase Suspended");
00363
00364 cfi_intel_clear_status_register(bank);
00365
00366 retval = ERROR_FAIL;
00367 }
У меня же состояние регистра 0xa8, в коде же такого состояния не оговорено... И еще смущает вот эта строка
Цитата
Warn : expected one protection register field, but found 2
DpInRock
Mar 13 2011, 16:56
Закомментить это.
Типа, хуже не будет.
amamlin
Mar 14 2011, 18:34
Пробовал и закомментировать и обход написать, все равно не флешит... Выпадает в ошибку...
Собирал последнюю версию из svn
DpInRock
Mar 14 2011, 18:48
У меня вроде была такая особенность аккумулятора (схемы).
ХП со свежим аккумулятором не стартовал без хардрезета. (Название моего ХП что-то около 2140 - такие примерно цифры).
Т.е. возможно JTAG бубен надо запускать сразу после нажатия кнопки руками... Что-то такое было...
amamlin
Mar 14 2011, 18:50
Тоесть попробовать зажать хардресет и запустить openocd или другую софтварь?
DpInRock
Mar 14 2011, 19:10
Не зажать, а отпустив, быстренько запустить.
Я тут разбирал надысьь совсем старый КПК, так у него внешние устройства отключались (включались) особо. Т.е. КПК мог программно обесточивать отдельные узлы.
А при начальном старте, цепи от резета эти устройства на некоторое время подключали к питанию независимо от процессора.
Это вот в частности, какой-то КПК от Касио. Там просто надо умучатся, чтобы запустить комп из состояния повердаун (В ситуации с разряженным аккумулятором, но подключенной зарядке).
amamlin
Mar 15 2011, 08:07
Кажется дело сдвинулось. Удалось записать небольшой кусок загрузчика. Теперь после ресета процессор останавливается на инструкции по адресу 0x1920(раньше 0x0). Плюс во время включения батареи экран на долю секунды загорается. Раньше этого тоже не было.
Буду дальше пробовать, но меня смущает все же ошибки о low programming voltage. Хотя тут есть одна идея. При сборке схемы я не нашел 100 Омных резисторов и использовал 91 Омные. Судя по всему с TRST читается минимальный уровень логической единицы. Из-за меньшего сопротивления получается более высокий уровень, девайс видит что минимальный уровень отличается от того что подается для программирования памяти и выдает ошибку. Но это всего лишь моя теория.
DpInRock
Mar 15 2011, 09:18
Потихоньку возвращайте закоментинное взад.
91 - 100 ом без разницы.
Другое дело что порт параллельный - 5 вольтовый вроде как (не уверен).
И выдача наружу - как раз без проблем, а вот прием от 3 вольтового буфера - вполне может подглючивать.
Чтобы я попробовал при такой гипотезе.
Вместо 3.3 вольт подать напрямую напряжение аккумулятора (прямо с freevekznjhf непосредственно). И вашим, и нашим.
Плохого ничего не должно быть.
По входам резюки стоят 91 ом. Лишнее на себя возьмут вместе с защитными диодами.
amamlin
Mar 15 2011, 09:25
Напряжение аккумулятора 3.7 вольта. Не думаю что поможет, но попробовать стоит.
DpInRock
Mar 15 2011, 09:29
Разница 0.4 вольта - огромная. А заряженный - еще круче 4.3 вольта.
Кроме того, можно отсоединить подстветку экрана. Кушает она много и не по делу. (там разъем должен быть отдельный).
amamlin
Mar 15 2011, 09:37
Подсветка загорается только при включении и идентификации устройства. В общем то можно для экономии в таком случае отсоединить вообще все и оставить только голую плату. Благо добраться до нее не очень сложно.
Может попробовать запитать логику вигглера от отдельного 5 вольтового источника? Или не стоит?
DpInRock
Mar 15 2011, 09:50
Это как крайний случай. Типа, не все сразу. Ибо паразитное питание на проц - тоже не сильно хорошо. Оно резюками ограничено, конечно, но я бы наглеть по пустякам не стал бы.
Прибавка в 0.4 вольта - весьма существенна для убирания легких глюков...
amamlin
Mar 18 2011, 09:32
Пробовал заптку от аккумулятора, заряженного на полную. Эффект тот же. Думаю попробовать обратиться к разработчикам openocd
В даташите про 0x98 написано что оно соответствует состоянию cfi read query
Сброс состояния регистра не увенчался успехом.
DpInRock
Mar 18 2011, 10:48
Г.Б. намекает - пора покупать нетбук.
Обычно на таких платах куча всяких мелких стабилизаторов (под множество разных питаний -ядро, периферия...).
Чаще всего, конечно, ядро и флэш от одного источника питают. Но это не факт.
Комп врет? Запустить HD фильм какой-нибудь и посмотреть будут ли изменения...
У меня лично на XP такое есть реально. Только наоборот.
Флэшка на плате прошивается за минуту, если комп ничего не делает.
А вот если крутит кино параллельно, то секунда за 30. Удивительно, но факт железобетонный.
amamlin
Mar 18 2011, 10:52
А при чем тут нетбук? (зы: есть нетбук уже lenovo s10-1ab)
Про стабилизаторы это да, может быть... Схемы нету, отследить что и куда врятли получится.
Тут скорее всего не все состояния регистров задокументированы/описаны в софте. Буду курить сабж дальше
DpInRock
Mar 18 2011, 11:47
А че схема. Там конденсаторы наружу стоят.
Посмотреть что там делается.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.