Forums » Программное обеспечение »
Работа с отладочными комплектами в Linux
Added by mouse about 11 years ago
Отдельного внимания заслуживает вопрос работы с отладочными комплектами из-под ОС Linux. Для корректной работы загрузчика необходимо прямой доступ к USB-устройству. При подключении отладочного комплекта через FTDI-USB, система подгрузит соответствующий ядерный модуль, который "займёт" оба интерфейса — как UART, так и загрузчика. Просто выгрузив модуль ftdi_sio мы получим работающий загрузчик mc-ploader, но лишимся UART. Это грустно. Работа с UART напрямую через FTD2xx не такая-то простая задача. Готовых средств нет. Для решения данной проблемы был составлен скрипт для корректной подгрузки модуля ftdi_sio, чтобы "занять" только интерфейс UART, оставив нетронутым интерфейс загрузчика. Для этой цели была привлечена питоновская библиотека ftd2xx . С её помощью осуществляется блокировка интерфейса загрузчика и параллельно с этим подгружается модуль ftdi_sio, которому достаётся только интерфейс UART. В приложении архив-копия репозитория mcp-sdk-ftdi .
Для сборки и установки биндингов для питона необходимо выполнить команду:
make ftd2xx
Команда требует root-привилегий. Из-под обычного пользователя будет выполнен sudo.
Для правильной инициализации FTDI-интерфейсов необходимо выполнить команду:
make load
Точно так же, эта команда требует root-привилегий. После успешной загрузки, в системе появится одно ttyUSBx-устройство, отвечающее за интерфейс UART. В свою очередь, для загрузчика останется прямой интерфейс.
В виде бонуса, в архиве имеется скрипт на питоне для эмуляции последовательного терминала на базе библиотеки ftd2xx. Категорически рекомендую использовать системный ttyUSBx.
Replies (31)
RE: Работа с отладочными комплектами в Linux - Added by mouse about 11 years ago
Ещё стоит отметить особенность при работе с LDM-MCp. После загрузки программы в eeprom вроде как и происходит сброс, но плата "подвисает" и где-то через минуту срабатывает watchdog. Для ускорения, достаточно сразу после заливки просто выполнить:
mc-ploader -r
И всё взлетит.
RE: Работа с отладочными комплектами в Linux - Added by trott about 11 years ago
Под Linux(Fedora 19) на отладочном комплекте НW1-MCp04 загрузчик через PicoTAP работает. но я не смог получить доступ к UART через PicoTAP.
ftdi_sio автоматически не стартует. для загрузчика он, похоже, не нужен.
Для того чтобы дать права обычному пользователю на запись с помощью загрузчика прописал в файле
/etc/udev/rules.d/96-PicoTAP.rules
SUBSYSTEMS=="usb", ATTRS{idVendor}=="096c", ATTRS{idProduct}=="1449", \
MODE:="0666", SYMLINK+="ttyUSB0"
где номер вендора и продукта выясняется с помощью команды lsusb:
Bus 001 Device 003: ID 096c:1449
SYMLINK+="ttyUSB0" создает устройство /dev/ttyUSB0, но я не вижу на нем на тестовых UART программах никакого вывода ни в minicom ни в cutecom. Настройки порта 38400,8n1
Что делать? посоветуйте
RE: Работа с отладочными комплектами в Linux - Added by mouse about 11 years ago
SYMLINK+="ttyUSB0" создает устройство /dev/ttyUSB0
это симлинк на что? "readlink -f /dev/ttyUSB0" куда указывает? После modprobe ftdi_sio без udev-правила должно создасться character-устройство. Что в dmesg после modprobe?
RE: Работа с отладочными комплектами в Linux - Added by trott about 11 years ago
ftdi_sio у меня автоматически не запускается. ls -al /dev/ttyUSB0 указывает на что-то из ftdi или на /dev/bus/usb/001/003, сейчас не помню точно. поздно вечером посмотрю.
ftdi_sio запускается только после insmod ../kernel/.../ftdi_sio.ko, кроме нее есть usbserial, но она встроена в ядро и скорее всего от нее
в dmesg сразу после обнаружения веб камеры идет PicoTAP c номером вендора и продукта.
RE: Работа с отладочными комплектами в Linux - Added by trott about 11 years ago
В udev-правила я полез исключительно из-за MODE:="0666". Без него обычному пользователю не было прав на запись.
Без udev-правила при попытке залить программу на контроллер:
libusb couldn't open USB device /dev/bus/usb/001/003: Permission denied.
libusb requires write access to USB device nodes.
Ошибка сегментирования (core dumped)
RE: Работа с отладочными комплектами в Linux - Added by mouse about 11 years ago
Про HW-MCp не скажу, но на LDM одновременно работа модуля ftdi_sio и прошивальщика возможна только с хаком, описанным вначале.
Если без udev-правила потом просто сделать chmod 666 /dev/ttyUSB0, то работает так же, как с симлинком на /dev/bus/usb/... ? Какие major/minor у этого /dev/bus/usb/...? Отличаются ли они от /dev/ttyUSB0, созданного без правил udev? Я так подозреваю, что libusb кушает raw-устроства тогда, когда ttyUSB0 предоставляет tty-интерфейс посредством модуля ftdi_sio.
RE: Работа с отладочными комплектами в Linux - Added by trott about 11 years ago
без правил udev никакого /dev/ttyUSB0 не создается. я делал chmod 666 на /dev/bus/usb/.. Меня major/minor интересовал для /dev/ttyUSB0, но я не догадался посмотреть туда, куда указывает симлинк.
RE: Работа с отладочными комплектами в Linux - Added by trott about 11 years ago
хак я пробовал, но он умирал у меня после 10 таймаутов.
RE: Работа с отладочными комплектами в Linux - Added by trott about 11 years ago
втыкаю PicoTAP после загрузки
[root@localhost ~]# dmesg
[ 149.084662] usb 1-1.1: new high-speed USB device number 4 using ehci-pci
[ 149.175096] usb 1-1.1: New USB device found, idVendor=096c, idProduct=1449
[ 149.175102] usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 149.175105] usb 1-1.1: Product: PicoTAP
[ 149.175108] usb 1-1.1: Manufacturer: GOEPEL electronic GmbH
[ 149.175111] usb 1-1.1: SerialNumber: PicoTAP-0416
[root@localhost ~]# lsusb
Bus 002 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0c45:6480 Microdia Sonix 1.3 MP Laptop Integrated Webcam
Bus 001 Device 004: ID 096c:1449
Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
[root@localhost ~]# ls -all /dev/ttyUSB0
ls: невозможно получить доступ к /dev/ttyUSB0: Нет такого файла или каталога
втыкаю контроллер
[root@localhost ~]# modprobe ftdi_sio
[root@localhost ~]# dmesg
[ 650.022115] usbcore: registered new interface driver ftdi_sio
[ 650.022141] usbserial: USB Serial support registered for FTDI USB Serial Device
в рантайме /dev/ttyUSB0 не появляется
RE: Работа с отладочными комплектами в Linux - Added by trott about 11 years ago
После рестарта с включенным контроллером /dev/ttyUSB0 появился
[root@localhost ~]# ls -al /dev/ttyUSB0
lrwxrwxrwx. 1 root root 15 окт 16 19:53 /dev/ttyUSB0 -> bus/usb/001/003
[root@localhost ~]# ls al /dev/bus/usb/001/003 . 1 root root 189, 2 окт 16 19:53 /dev/bus/usb/001/003
crw-rw-rw
[root@localhost ~]# readlink -f /dev/ttyUSB0
/dev/bus/usb/001/003
[root@localhost ~]# dmesg
[ 1.112919] usb 2-1: new high-speed USB device number 2 using ehci-pci
[ 1.118176] [drm] ring test on 0 succeeded in 1 usecs
[ 1.118234] [drm] ring test on 3 succeeded in 1 usecs
[ 1.227179] usb 2-1: New USB device found, idVendor=8087, idProduct=0020
[ 1.227185] usb 2-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[ 1.227460] hub 2-1:1.0: USB hub found
[ 1.227551] hub 2-1:1.0: 8 ports detected
[ 1.302913] usb 1-1.1: new high-speed USB device number 3 using ehci-pci
[ 1.305302] [drm] ring test on 5 succeeded in 1 usecs
[ 1.305306] [drm] UVD initialized successfully.
[ 1.305451] [drm] ib test on ring 0 succeeded in 0 usecs
[ 1.305476] [drm] ib test on ring 3 succeeded in 0 usecs
[ 1.393109] usb 1-1.1: New USB device found, idVendor=096c, idProduct=1449
[ 1.393113] usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 1.393115] usb 1-1.1: Product: PicoTAP
[ 1.393117] usb 1-1.1: Manufacturer: GOEPEL electronic GmbH
[ 1.393118] usb 1-1.1: SerialNumber: PicoTAP-0416
[ 1.456783] [drm] ib test on ring 5 succeeded
[root@localhost ~]# lsmod | grep ftdi
ничего не выдает
[@localhost uart0_inv]$ mc-ploader uart0_inv.bin
info: selected device: "PicoTAP A"
info: erasing device: 100%
info: image loading: 100%
[root@localhost ~]# echo 1 >/dev/ttyUSB0
-bash: echo: ошибка записи: Недопустимый аргумент
RE: Работа с отладочными комплектами в Linux - Added by trott about 11 years ago
На удаленной машине в Екатеринбурге следующая картина
dmesg:
[ 1.767464] systemd-udevd149: starting version 201
[ 1.773296] usb 1-8: New USB device found, idVendor=096c, idProduct=1449
[ 1.773303] usb 1-8: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 1.773307] usb 1-8: Product: PicoTAP
[ 1.773310] usb 1-8: Manufacturer: GOEPEL electronic GmbH
[ 1.773313] usb 1-8: SerialNumber: PicoTAP-0402
[ 1.952295] [drm] Initialized drm 1.1.0 20060810
[ 1.953085] r8169 Gigabit Ethernet driver 2.3LK-NAPI loaded
[ 1.953399] r8169 0000:02:00.0: irq 42 for MSI/MSI-X
<skip>
[ 10.123090] systemd-udevd311: starting version 201
[ 10.302709] SELinux: initialized (dev hugetlbfs, type hugetlbfs), uses transi
tion SIDs
[ 10.321876] SELinux: initialized (dev tmpfs, type tmpfs), uses transition SID
s
[ 11.191222] EXT4-fs (sda3): re-mounted. Opts: (null)
[ 11.323454] SELinux: initialized (dev configfs, type configfs), uses genfs_co
ntexts
[ 11.837833] usbcore: registered new interface driver pl2303
[ 11.837864] usbserial: USB Serial support registered for pl2303
[ 11.837890] pl2303 5-1:1.0: pl2303 converter detected
[ 11.850183] usb 5-1: pl2303 converter now attached to ttyUSB0
Хм. похоже, что они используют обычный ком порт. через pl2303
[trott@localhost ~]$ ls al /dev/ttyUSB0 . 1 root dialout 188, 0 Oct 11 18:34 /dev/ttyUSB0
crw-rw---
trott@localhost ~]$ lsmod | grep ftdi
нет драйвера ftdi
RE: Работа с отладочными комплектами в Linux - Added by mouse about 11 years ago
судя по dmesg, модуль ftdi_sio ничего не знает про это устройство.
предлагаю сделать:
modprobe ftdi_sio vendor=0x096c product=0x1449
симлинк должен быть точно не на raw-usb устройство
pl2303 — вполне возможно. теперь-то работает?
RE: Работа с отладочными комплектами в Linux - Added by trott about 11 years ago
после modprobe ftdi_sio vendor=0x096c product=0x1449
[ 94.203157] ftdi_sio 2-1.1:1.0: FTDI USB Serial Device converter detected
[ 94.203196] usb 2-1.1: Detected FT2232H
[ 94.203198] usb 2-1.1: Number of endpoints 2
[ 94.203200] usb 2-1.1: Endpoint 1 MaxPacketSize 512
[ 94.203201] usb 2-1.1: Endpoint 2 MaxPacketSize 512
[ 94.203203] usb 2-1.1: Setting MaxPacketSize 512
[ 94.204674] usb 2-1.1: FTDI USB Serial Device converter now attached to ttyUSB0
[ 94.204760] ftdi_sio 2-1.1:1.1: FTDI USB Serial Device converter detected
[ 94.204811] usb 2-1.1: Detected FT2232H
[ 94.204813] usb 2-1.1: Number of endpoints 2
[ 94.204815] usb 2-1.1: Endpoint 1 MaxPacketSize 512
[ 94.204817] usb 2-1.1: Endpoint 2 MaxPacketSize 512
[ 94.204820] usb 2-1.1: Setting MaxPacketSize 512
[ 94.205277] usb 2-1.1: FTDI USB Serial Device converter now attached to ttyUSB1
и minicom -s отвечает
minicom: невозможно открыть /dev/ttyUSB0: Время ожидания соединения истекло
minicom: невозможно открыть /dev/ttyUSB1: Время ожидания соединения истекло
[root@localhost ~]# ls al /dev/ttyUSB*. 1 root dialout 188, 0 окт 17 00:04 /dev/ttyUSB0
crw-rw---
crw-rw----. 1 root dialout 188, 1 окт 17 00:04 /dev/ttyUSB1
RE: Работа с отладочными комплектами в Linux - Added by trott about 11 years ago
это тоже не работает
[root@localhost mcp-sdk-ftdi-master]# make load
/usr/local/src/mcp-sdk-ftdi-master/load-ftdi.sh
Unable to open 'Dual RS232-HS B'.
Unable to lock 'Dual RS232-HS B'.
Interrupted.
make: *** [load] Ошибка 1
RE: Работа с отладочными комплектами в Linux - Added by krufter_multiclet about 11 years ago
На плате HW1 UART выведен отдельно, через PicoTap он не выведен! К UART необходимо подключаться отдельным проводом. Колодка чёрная по виду как COM порт - это и есть UART0!
RE: Работа с отладочными комплектами в Linux - Added by trott about 11 years ago
понятно. и если подключаться, то нужно искать ком порт на компьютере или покупать переходник от USB, тот который определится как pl2302. Хм.. а на плате LDM-MCp UART выведен через PicoTap?
RE: Работа с отладочными комплектами в Linux - Added by krufter_multiclet about 11 years ago
Да на плате LDM всё включено в один вывод. На LDM плате всё выведено через FTDI.
RE: Работа с отладочными комплектами в Linux - Added by sprin about 11 years ago
Здравствуйте.
1. Есть ли способ получить данные из памяти МП теми средствами, что идут в отладочном комплекте HW1-MCp04?
2. Какой кабель подойдет для UART0 из списка USB->COM и что ещё потребуется, чтобы заработал UART0? (драйвер?)
RE: Работа с отладочными комплектами в Linux - Added by trott about 11 years ago
самый дешевый кабель выглядит подходящим.
http://key.ru/shop/aksessuary_kabeli_perehodniki/kabeli_perehodniki/usb/kabel_usb_-_com_rs232_18m_umc/#tab_features
http://radiodesign.ru/aa-330/perexodnik-usb-com-bf-810-dlya-analizatora-aa-330m.html
он на чипе PL-2303. Судя по dmesg на удаленной машине в Екатеринбурге используют кабель на таком же чипе.
драйвер в Линуксе должен подгрузится автоматически
RE: Работа с отладочными комплектами в Linux - Added by krufter_multiclet about 11 years ago
sprin wrote:
Здравствуйте.
1. Есть ли способ получить данные из памяти МП теми средствами, что идут в отладочном комплекте HW1-MCp04?
2. Какой кабель подойдет для UART0 из списка USB->COM и что ещё потребуется, чтобы заработал UART0? (драйвер?)
1) Да есть такой способ, но надо найти время и расписать подробно как это сделать
2) Кабель переходник USB-COM можно взять любой, однако всё равно придётся перекрестить RX и TX. Немного позже нарисую картинку.
RE: Работа с отладочными комплектами в Linux - Added by trott almost 11 years ago
Нарисуйте, пожалуйста картинку.
я пробовал 2 варианта
1-1 2-3 3-2 4-4 5-5 6-6 7-7 8-8 9-9
и
1-1 2-3 3-2 4-6 5-5 6-4 7-8 8-7 9-9
Оба варианта не сработали для меня. USB-COM у меня на микросхеме pl2302
RE: Работа с отладочными комплектами в Linux - Added by krufter_multiclet almost 11 years ago
USB-COM сами спаяли или купили? Картинку через часика 2-3 нарисую.
RE: Работа с отладочными комплектами в Linux - Added by trott almost 11 years ago
USB-COM купил. проверил его работу с внешним модемом. на команду at модем ответил ok
RE: Работа с отладочными комплектами в Linux - Added by krufter_multiclet almost 11 years ago
Подключение должно выглядеть вот так. Если не получается что-то принять по uart попробуйте поменять местами 2 и 3 выводы на разъёме COM.
com_connect.jpg (11.4 KB) com_connect.jpg | подключение COM |
RE: Работа с отладочными комплектами в Linux - Added by sprin almost 11 years ago
trott wrote:
Нарисуйте, пожалуйста картинку.
я пробовал 2 варианта
[...]и
[...]
Оба варианта не сработали для меня. USB-COM у меня на микросхеме pl2302
Я поменял местами RX-TX. Попробуйте файл из примеров: "HW1-MCp04"->"c"->"uart", там используется UART0 (сначала я попробовал пример где был UART3, но ничего не получилось, думал неправильно перепаял, но тот файл из примеров заработал нормально)