LINUX.ORG.RU
ФорумJob

Восстановить загрузчик Linux сенсорной панели на базе AM335x в Москве

 , , ,


0

2

Добрый день!

Нужно прошить сенсорную панель управления электрооборудованием APM MSP1500 Linux. Панель предназначена для включения/выключения электрооборудования по CAN шине. Собрана в заводских условиях на базе AM3358. Оплачу работу/помощь.

После включения показывает заставку и бесконечно пишет «Loading…». Видимо когда-то неудачно обновились. При подключении по USB к Windows показывает содержимое SD карты. Образ есть. ( рис.1 рис.2 рис.3). Спасибо!

P.S. Не пинайте сильно, Linux видел на картинке, начинал с MS DOS и Windows. Наверстаю, как будет время. По инструкции работать умею, но лучше очно. Связь ЛС.

Если ты работаешь с устройством на линуксе, то с ним правильнее работать из линукса.

Какой именно у тебя есть образ? Есть ли у тебя запасная SD-карта?

Что происходит на устройстве, если попытаться его включить вообще без SD-карты?

Что написано в инструкции которая должна прилагаться к образу?

Xenius ★★★★★
()

Вангую, что в данном случае линукс будет во вред. Это же тухес инструмен. У них там первый раздел должен начинаться сразу после MBR иначе bootrom ничего не найдет. А линукс минимум с 2048 сектора фигачит (вот нахрен так было делать?).

ТС, напиши мне в yax123 сабака яндекс.ру попробую тебя удаленно полечить.

yax123 ★★★★★
()
Ответ на: комментарий от yax123

Вообще-то в линуксе тоже так можно сделать в экспертном режиме fdisk, а вот как в винде (где по дефолту первый раздел был на 63, теперь на 2048) выбрать точный сектор - хз.

Xenius ★★★★★
()
Ответ на: комментарий от yax123

Это из-за GRUB 2048 секторов отступ от MBR, для классической DOS разметки отступ 63 сектора. Как уже сказали, такой отступ можно сделать через fdisk, нужно применить ключик -c.

yars068 ★★★★
()
Ответ на: комментарий от Xenius

Возможно, для этого придëтся использовать древний досовый fdisk :)

yars068 ★★★★
()
Ответ на: комментарий от Xenius

Когда искал, в свое время такую возможность, ни одна ссылка про это не сказала. Ни про экспертный режим ни про режим dos. Пришлось свой велосипед городить.

yax123 ★★★★★
()
Ответ на: комментарий от Xenius

Если ты работаешь с устройством на линуксе, то с ним правильнее работать из линукса.

В теории да, на практике тулзов под конкретный девайс может и не быть на онтопике.

einhander ★★★★★
()
Ответ на: комментарий от Xenius

Совершенно справедливое замечание, но я не специалист, просто пользователь устройства. На старте даже не знал, что там Linux.

Запасной SD карты и инструкции к ней нет. Все, что есть - находится на флэшке внутри устройства, чтобы добраться надо разбирать (см. фото в посте).

Если ее вынуть, то ничего не меняется. При загрузке сначала появляется фирменный логотип, потом все гаснет и через пару секунд появляется другой логотип и надпись «loading» (см. фото). После включения появляется доступ к флэшке по USB на передней панели устройства.

Electroboat
() автор топика
Ответ на: комментарий от Electroboat

Почта на мейле тут не поможет, я хотел узнать джаббер (XMPP) чтобы в реальном времени общаться.

Все, что есть - находится на флэшке внутри устройства, чтобы добраться надо разбирать (см. фото в посте).

Мне по фото непонятно, что из этого флешка. Но для начала советую как минимум скопировать все эти файлы куда-нибудь и посмотреть, что там есть.

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

В общем, я не очень понимаю что это за устройство и как-то оно не очень гуглится.

Но тут все рекомендации общие для всех подобных устройств:

Если есть возможность надо найти UART с контактами Rx, Tx, Gnd и подключить к ним адаптер для компьютера, там в терминальной программе (minicom, picocom, например, для винды тоже что-то есть, putty, но менее удобное) посмотреть лог загрузки и разобраться на каком этапе затык.

Xenius ★★★★★
()
Последнее исправление: Xenius (всего исправлений: 1)
Ответ на: комментарий от yax123

Вангую, что в данном случае линукс будет во вред. Это же тухес инструмен. У них там первый раздел должен начинаться сразу после MBR иначе bootrom ничего не найдет. А линукс минимум с 2048 сектора фигачит (вот нахрен так было делать?).

Я не очень понимаю почему там вообще видимая файловая система. У меня есть устройства подобного рода, там mtd или eMMC внутри. А тут как, встроеный бутром грузит всё из файлов в обычном fat?

Когда искал, в свое время такую возможность, ни одна ссылка про это не сказала. Ни про экспертный режим ни про режим dos. Пришлось свой велосипед городить.

Не знаю что за ссылки, но я нашел. Просто перемещаешь начало раздела в экспертном режиме. Правда есть ограничение на пересекающиеся разделы. Можно попробовать fdisk от busybox или toybox, кстати. Или от BSD.

Xenius ★★★★★
()
Последнее исправление: Xenius (всего исправлений: 1)
Ответ на: комментарий от Electroboat

Можешь открыть uboot-fire.scr в текстовом редакторе и скопировать всё кроме мусора в начале? Там должен быть скрипт запуска системы. Можно по нему дальше ориентироваться.

Кстати интересно откуда взялся каталог .Trash-1000 и что там находится. Видимо на самом устройстве какое-то линуксовое DE и из него можно получить доступ к флешке? Или как вариант кто-то ранее ковырял эту флешку из линукса. Там может быть предыдущая версия прошивки или что-то такое.

Xenius ★★★★★
()
Последнее исправление: Xenius (всего исправлений: 1)
Ответ на: комментарий от Xenius

Потому как вот так устроен загрузчик в бутроме. Из eMMC он грузит из абсолютных адресов, а дальше как настроишь. А если из SD, то из FAT12/16/32. Ну и дальше перебирает SATA, USB, UART и т.д. порядок не точный, но смысл примерно такой.

yax123 ★★★★★
()
Ответ на: комментарий от yax123

А линукс минимум с 2048 сектора фигачит (вот нахрен так было делать?).

https://github.com/util-linux/util-linux/commit/03c3aae63cbe33a7c595b759cd65d1fc35450db7

Можно даже с нулевого сектора. Но да, не помешала бы версия fdisk без защиты от дурака совсем, иначе пересекающиеся разделы создавать неудобно.

(например на разделе файл образа файловой системы и он же отдельный раздел)

Xenius ★★★★★
()
Ответ на: комментарий от yax123

Ответил мне на почту кто-то. Если завтра не справимся, напишу.

Electroboat
() автор топика

вангую, что побилась карта памяти и что-то не читается или читается с ошибками, если это действительно так, то для ремонта нужен оригинальный образ или файлы, попробуйте скопировать с неё всё (вообще с этого стоило начать, и ещё до монтирования), если будут ошибки чтения, то всё плохо

sn
()
Ответ на: комментарий от sn

Скопировал давно и сразу. Карту еще раз проверю.

Давайте я тоже присоединюсь к прогнозам. Т.к. предыстория панели мне известна не вся, то предполагаю, что какой-то «специалист» как и я пытался обновить язык на русский язык. Что-то пошло не так и она до сих пор ищет этот несуществующий файл UPD.

Сегодня разобрал ее, на плате два микрика. Один явно reset. Без SD карты все работает также, без изменений. Потом поигрался с кнопочками в надежде сделать hard reset (глупо, конечно, но интересно…). Так вот. На SD карте появился новый файл U37_AM3358_V100R001C022A-RUSSIA.upd. (0 байт)

В папке .Trash-1000, кстати два каталога files и info в каждом по такому же файлу. Тоже пусты.

P.S. ничего пока не испортил, завтра будем пробовать чинить по-взрослому

Electroboat
() автор топика
Ответ на: комментарий от Xenius

По Trash-100 отписался. Я уверен что кто-то ковырялся и не смог.

Файле uboot-fire.scr:

    echo "Starting fire..."
    nandecc hw 2
    
    echo "--------------------(part1 of 5)--------------------"
    if fatload mmc 0 0x82000000 MLO; then
        nand erase 0x0 0x20000
        nand write.u 0x82000000 0x0 ${filesize}
    fi

    echo "--------------------(part2 of 5)--------------------"
    if fatload mmc 0 0x82000000 u-boot.img; then
        nand erase 0x80000 0x1e0000
        nand write.u 0x82000000 0x80000 ${filesize}
    fi

    echo "--------------------(part3 of 5)--------------------"
    if fatload mmc 0 0x82000000 uImage; then
        nand erase 0x280000 0x500000
        nand write.u 0x82000000 0x280000 ${filesize}
    fi

    echo "--------------------(part4 of 5)--------------------"
    if fatload mmc 0 0x82000000 ubi.img; then
        nand erase 0xcc0000 0x1e00000
        nand write.u 0x82000000 0xcc0000 ${filesize}
    fi
    
    echo "--------------------(part5 of 5)--------------------"
    if fatload mmc 0 0x82000000 sys_data.img; then
        nand erase 0x2ac0000 0xB400000
        nand write.u 0x82000000 0x2ac0000 ${filesize}
    fi
    
    echo "Fire completed..."
    sleep 2

Извините, под спойлер не запихивается что-то

Electroboat
() автор топика
Ответ на: комментарий от yax123

Вот как раз в развитие темы нашел, проц такой, плата другая.

https://tha.de/~hhoegl/home/elinux/bbb/AM335x-U-Boot-User%27s-Guide.pdf

Заинтересовал Boot Switch Settings. SW3 тут тоже есть. Сейчас 2,3,4,7,8 - OFF (плохо видно на фото).

Electroboat
() автор топика

Без SD карты все работает также, без изменений.

Всысле так же не грузится? То есть изначальная загрузка не с SD карты получается.

Вам бы uart найти, сфоткайте плату, чтобы на ней всё было видно.

sn
()
Ответ на: комментарий от Electroboat

В общем суть понятна. Прошивка самой этой штуки вовсе не на карте памяти, а на NAND-чипе. В скрипте, который у вас приведён последовательно стираются регионы флеш-памяти и на них записыватся данные из файлов с этой же самой карты памяти.

Должны быть файлы: MLO, u-boot.img, uImage, ubi.img, sys_data.img. Все эти файлы вроде есть в наличии. Значит, скрипт по какой-то причине не срабатывает.

Я вангую, что дело в том, что на чипе памяти NAND есть бэды на которые приходится что-то нужное.

Извините, под спойлер не запихивается что-то

Длинный код и так под спойлер уходит, да и он не настолько длинный, чтобы мешало.

Ниже вам правильно посоветовали найти UART на плате и подключиться к нему. Это гораздо удобнее чем тыкаться вслепую.

Кстати ubi-раздел прошивать с помощью nand write неправильно. Может из-за этого и не работает? Если будет UART, можно посмотреть, что именно идёт не так.

Если нет UART, есть ли возможность сдуть чип памяти и вместо него впаять новый совместимый? Тогда, если файлы не повреждены, они должны прошиться на новый чип скриптом и система может заработать. Но этот скрипт составлен неправильно, поэтому лучше было бы вручную прошить, а не им.

Xenius ★★★★★
()
Последнее исправление: Xenius (всего исправлений: 1)
Ответ на: комментарий от Electroboat

Надо у ТС, полный расклад брать, а не вглядываться в размытую фотку. Если уж ремонтировать, то списываться с ТС в мессенджере, чтобы он в реалтайм делал фотки и всякие другие манипуляции. А так, через форум, у меня терпячки столько нет.

yax123 ★★★★★
()
Ответ на: комментарий от Electroboat

Вообще-то мне тоже интересно, что там происходит. Но я думаю, моя диагностика выше верная и ремонт состоит или в перепайке nand-чипа на новый или в подключении по UART и смене адресов так чтобы обойти битые блоки.

Xenius ★★★★★
()
Ответ на: комментарий от Xenius

Тоже интересно - получилось ли подключиться по UART либо ещё как-то восстановить работу устройства. Вот что пишут в интернетах о AM335x recovery:
https://www.elinux.org/AM335x_recovery

vdk10
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.