Как стать автором
Обновить
103
0

Инженер-схемотехник

Отправить сообщение
Да, действительно так. Спасибо за внимательность, таблицу подправил.
Не стану этого отрицать, возможно, где-то и лежать на просторах интернета, но так сходу мне найти не удалось. Да и просто было интересно поковырять поглубже этот процессор :)
Суда по строчкам типа «Loading Device Tree to cffec000, end cffff94a» перед Statring kernel, все-таки dtb он находит) Ну и я проводил эксперимент: брал один и тот же U-Boot, один и тот же скрипт загрузки, один и тот же dtb и менял только zImage. Если я брал zImage из дистрибутива Arch Linux, то все зависало на Starting kernel. Если брал zImage, собранный Buildroot — успешно запускалось. Подозреваю, что дело все-таки в адресах, куда грузится dtb. Возможно, ядро Arch Linux ищет дерево устройств не в том месте.
Может быть у вас VBUS просто превысил Absolute Maximum Ratings? Резистор в таком случае не даст выпалить схему при превышении напряжения.

Если мне не изменяет память, то этот параметр для VBUS техаса равен 5,5 В. Ну, то есть как у большинства других устройств, работающих с USB. Кроме обычных ПК и ноутбуков никуда девайсы больше не подключались. При этом, в эти же самые ПК и ноутбуки подключались и другие устройства. Однако сгорал только USB техаса, и все стабилизировалось после установки этого резистора. Так что склонен думать, что дело именно в нем.

Скажем, это проблема не только Sitara, ну и камней других производителей (NXP i.MX6UL как пример). Нежный техпроцесс, все дела.

Кстати, там напряжение даже шло не напрямую, а через 10 кОм, даже это не спасало)

Так отключаемый же

Да, после того как загрузилась система. Однако если вы используете загрузку прошивки через USB с использованием встроенного бутлоадера, то, если я все правильно понял, все равно придется работать с High Speed.

Эм… как раз таки файл dtb позволяет спокойно загружать и использовать дистрибутивы linux под практически любой ARM ну при условии конечно что поддержка есть в mainline ядре. Достаточно подсунуть правильный dtb.

Да вот я тоже был уверен, что это так. Поэтому первым делом и попробовал взять готовый dtb и подсунуть U-Boot ядро из дистрибутива Arch Linux. Однако все зависло на этапе Statring kernel… При этом ядро, собранное Buildroot, с тем же самым dtb успешно загружалось. Подозреваю, что проблема в адресах, куда кладется dtb и ядро. Однако пока не сумел разобраться. В исходниках dts вообще этих адресов не обнаружил. Буду благодарен, если вы можете сказать, куда следует копать.
А u-boot где на плате живет? Или он с sdcard подгружается? И нет ли уже собранного у производителя? А то иначе если поддержка в mainline ядре есть, то сводится к положить u-boot настроить его подпихнуть dtb kernel и rootfs

Да, и u-boot, и fsbl живут на sdcard. Про это написано в статье, да и другой памяти просто нет на плате)
У производителя есть репозиторий на GitHub, там есть исходники U-Boot. Однако я собирал U-Boot из официального репозитория, работает не хуже))
Я делал этот проект несколько лет назад, сейчас так сходу все и не припомню. Но из того, что осталось в памяти:
1) Линию VBUS USB надо подключать к процессору через резистор 1 кОм. Про это нет ни слова в даташитах, но такое включение представлено в отладочных платах производителя. Я не углядел тогда этот момент и в итоге у части модулей выгорел USB. Причем выгорал он ни сразу — у некоторых модулей через месяц после начала эксплуатации, у некоторых через полгода, а некоторые вообще работают до сих пор. В новой ревизии железа я заложил этот резистор и проблем с USB больше не было.
2) У процессора AM4376 есть один коварный вывод WARMRST. Он вроде как должен использоваться для сброса какой-то внешней периферии после инициализации процессора. Я смотрел осциллографом, на нем действительно в этот момент проскакивает импульс. Я его использовал для сброса WiFi модуля с подтяжкой к питанию WiFi модуля, и вот тут да, возможно, на этот вывод напряжение приходило на несколько десятков микросекунд раньше, чем на процессор. По итогу ситуация была аналогична USB — у одних модулей через неделю, у других через полгода этот вывод выгорал и процессор оказывался неработоспособным. Однако если оставить этот вывод вообще без подтяжки, процессор вообще не запускался. Лучшим решением стало подтянуть в глубине платы этот вывод через 100 кОм к питанию процессора и забыть про него, а для сброса модулей использовать GPIO. В новой ревизии так и было сделано, за несколько лет ни одной аналогичной проблемы не возникло.
3) Следует помнить, что USB у техаса по умолчанию High Speed (это который 480 Мбит/с). Со всеми требованиями к разводке дифпар.
Конечно, ради него же все и затевалось :) Apt запустился на Debian (там про него в конце статьи пару строк). На Arch Linux вместо него pacman, тоже запустился после небольшой пляски с бубном, но с ним всегда так.
Ethernet работает, поддержка по умолчанию включена в ядро. То есть никаких действий не надо будет производить, после загрузки плата подхватит по DHCP адрес и все. Еще проверял UART, USB, GPIO. Что касается USB — тут надо добавить в ядро поддержку того, что именно вы хотите получить. Как добавить поддержку USB-флешек я описал в статье, если вам надо, к примеру, RNDIS — это делается отдельно. Поддержку GPIO тоже добавлял сам ручками, успешно работает.

Информация

В рейтинге
Не участвует
Дата рождения
Зарегистрирован
Активность