Плата: Одноплатный микрокомпьютер NanoPi-AR + расширительная Stem Boad 2 OС: YoctoBased Linux kernel 5.16
Проблема: I2C шина i2c-2 постоянно в состоянии «bus locked». i2cdetect -y 2 не видит ни одного устройства.
Что уже проверено:
- Все внешние I2C-устройства полностью отключены физически
- Перемычки, влияющие на сигнальные линии (UART/I2C), сняты
- SDA/SCL не замкнуты внешними устройствами
- Перезагрузка и обесточивание не помогают
- cat /sys/kernel/debug/gpio показывает, что пины SDA/SCL захвачены pinctrl’ом, не висят как GPIO
Вывод i2cdetect 0/2 всегда пустой, даже при подключенных датчиках.
Вывод dmesg: [ i2c i2c-2: mv64xxx: I2C bus locked, block: 1, time_left: 0 ] (повторяется постоянно)
GPIO состояние: ('''gpiochip0: GPIOs 0-223, parent: platform/1c20800.pinctrl, 1c20800.pinctrl: gpio-2 ( |direction ) out hi gpio-10 ( |nanopi:blue:status ) out lo gpio-166 ( |cd ) in hi ACTIVE LOW gpio-204 ( |usb0_id_det ) in hi IRQ gpio-205 ( |shutdown ) out hi
gpiochip1: GPIOs 352-383, parent: platform/1f02c00.pinctrl, 1f02c00.pinctrl: gpio-354 ( |usb0-vbus ) out lo gpio-355 ( |k1 ) in hi IRQ ACTIVE LOW gpio-358 ( |vdd-cpux ) out lo gpio-359 ( |reset ) out hi ACTIVE LOW gpio-362 ( |nanopi:green:pwr ) out hi ''')
Подозрения:
- I2C-контроллер залип в LOW на уровне SoC
- либо аппаратная обвязка платы удерживает линию
- либо проблема в pinctrl / device-tree для данной платформы
Интересуют следующие моменты:
- Возможен ли программный сброс I2C-контроллера mv64xxx (через sysfs / pinctrl / reset)?
- Может ли линия удерживаться внутренним устройством платы (питание, защита, EEPROM)?
- Есть ли известные проблемы с I2C на NanoPi-AR / mv64xxx?
- Можно ли безопасно переинициализировать SDA/SCL как GPIO для «разжатия» шины? Буду благодарен за любые подсказки или направление, куда копать дальше. https://disk.yandex.ru/i/5yTRw4s_G-_UUA пособие по одноплатнику https://disk.yandex.ru/i/033PINReUb-72w стр 56

