nik.laus 0 1 июля, 2009 Опубликовано 1 июля, 2009 · Жалоба Доброго времени суток, форумчане! Есть чип от silabs cp2102. (К нему есть силабовский драйверы, которыми я не пользуюсь, потому что при некоторых обстоятельствах они вешают мне систему...) Есть открытые драйверы в ядра линукса. cp210x.ko называеться модуль. Находиться в kernel-source/drivers/usb/serial/cp210x.c. "Устройство" мое - это просто один cp2102 чип на плате и usb шнурочек. На чипе Rx и Tx запаяны между собой. Тобишь, я в чип/порт/ttyUSB0 записываю что-то и это-же получаю (по идее). Кто-то пользуеться этим драйвером, очень хочеться услышать как он работает у Вас, работает ли правильно. Дело в том, что когда я записываю первый раз в порт - я получаю это же значение обратно. Для всех последующих попыток поведение не определено. Возможные случаи - это вываливаеться полностью буфер, тоесть, я туда буквы "х", а мне обратно содржимое буфера чипа с буквой "х" на конце. Или же он просто выдает перевод строки... Функции чтения и записи в чип модуль использует стандартные (из файла generic.c) - это usbserial модуль. я сделал modprobe usbserial debug=1 и понял, что после того, как я туда записываю символ "а", я его получаю обратно, но ведь потом я (драйвер) пишет туда '\r' и получает... и так бесконечно, пока есть хоть один процесс, который читает из ttyUSB0. Вопросы: Это он только у меня так работает, или еще у когото??? Я понимаю (или думаю, что понимаю) что это где-то глюк в ядра... ведь у меня один чип с закорочеными Рх и Тх... Может быть, надо чип сначала как-то настроить программой конфигурации последовательных портов, такой как minicom например??? Большое спасибо за время и внимение! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ukpyr 0 1 июля, 2009 Опубликовано 1 июля, 2009 · Жалоба Дело в том, что когда я записываю первый раз в порт - я получаю это же значение обратно.Может замкнуты RX/TX ? использую преобразователь на этом чипе в программаторе AVR910 (avrdude) и через модуль serial в Питоне - все работает отлично. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 16 1 июля, 2009 Опубликовано 1 июля, 2009 · Жалоба Может замкнуты RX/TX ? "Устройство" мое - это просто один cp2102 чип на плате и usb шнурочек. На чипе Rx и Tx запаяны между собой. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nik.laus 0 1 июля, 2009 Опубликовано 1 июля, 2009 · Жалоба Rx и Tx замкнуты. Просто я ожидаю того, что я туда что-то записал - тоже и считал. Первый раз так и получаеться, но после (я незнаю где затык, возможно в драйвере), драйвер сам! записывает '\r' в чип, естественно, его же и получает... и так в каком-то бесконечном цикле... А я думаю, что правильно было-бы (опять таки... я думаю...) чтобы я туда пакет данных записал, чип мне обратно этот же пакет. И все. Ждет следующего, а не пишет туда символы возврата каретки... Спасибо, что быстро ответили! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sasamy 9 1 июля, 2009 Опубликовано 1 июля, 2009 · Жалоба Есть открытые драйверы в ядра линукса. cp210x.ko называеться модуль. Находиться в kernel-source/drivers/usb/serial/cp210x.c. "Устройство" мое - это просто один cp2102 чип на плате и usb шнурочек. На чипе Rx и Tx запаяны между собой. Тобишь, я в чип/порт/ttyUSB0 записываю что-то и это-же получаю (по идее). Дело в том, что когда я записываю первый раз в порт - я получаю это же значение обратно. Чем пишите/читаете - какая-то своя программа или стандартные утилиты типа echo/cat ? Я понимаю (или думаю, что понимаю) что это где-то глюк в ядра... ведь у меня один чип с закорочеными Рх и Тх... Поспешные выводы. Обычно в ванильном ядре драйверы все же работают немнога :) Может быть, надо чип сначала как-то настроить программой конфигурации последовательных портов, такой как minicom например??? Для начала попробуйте настроить raw режим например так #stty -F /dev/ttyUSB0 raw потом пробуйте писать/читать. текущее состояние можно посмотреть например так #stty -F /dev/ttyUSB0 -a Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nik.laus 0 6 июля, 2009 Опубликовано 6 июля, 2009 · Жалоба to sasamy: читаю cat /dev/ttyUSB0 пишу cat > /dev/ttyUSB0 << EOF с помощью echo что-то не получаеться. патылся настроить чип как Вы советовали... stty -F /dev/ttyUSB0 raw вот что выдает при stty ... -a speed 115200 baud; rows 0; columns 0; line = 0; intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0; -parenb -parodd cs8 hupcl -cstopb cread clocal -crtscts -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel -iutf8 opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke попробовал на 9600, без результата : ( Последовательность моих действий: tail -f /var/log/kern.log | tee kern.log в другом окне терминала cat /dev/ttyUSB0 - открываем и читаем из порта cat > /dev/ttyUSB0 << EOF > hello world > EOF - записываем в порт (echo и echo -n не работали...) В окне лога ядра я вижу, что в порт я записал, пижу, что я из него прочитал, а также я еще вижу, что он туда еще что-то (символ возврата каретки '\r') записывает... Потом читает. Потом пустое туда пишет... и еще кучу непонятно чего туда валит, чего я не просил... прикрепляю лог (kernlog.txt) Может быть нужно еще какие-то настройки модемные поменять? Заранее огромнейшее спасибо за внимание и советы. kernlog.txt Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sasamy 9 6 июля, 2009 Опубликовано 6 июля, 2009 (изменено) · Жалоба с помощью echo что-то не получаеться. патылся настроить чип как Вы советовали... stty -F /dev/ttyUSB0 raw вот что выдает при stty ... -a speed 115200 baud; rows 0; columns 0; line = 0; intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0; -parenb -parodd cs8 hupcl -cstopb cread clocal -crtscts -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel -iutf8 opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke Может быть нужно еще какие-то настройки модемные поменять? Судя по выхлопу вашего stty -a - это не raw режим и потом что значит не работает echo ? 1 В первом терминале #stty -F /dev/ttyUSB0 raw -echo #cat /dev/ttyUSB0 2 Во втором терминале #echo "hello world" > /dev/ttyUSB0 смотрим что вылезло в первом. в вашем случае проблема в том что включено локальное echo (то что добавлено -echo в stty его отключает). во время этих действий не должны работать другие программы с этим портом иначе они могут переопределить настройки так как будут для него управляющим терминалом. PS если по каким то неизвестным причинам echo все же не работает (хотя с чего бы это :) можно и так как вы раньше делали через cat Изменено 6 июля, 2009 пользователем sasamy Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nik.laus 0 7 июля, 2009 Опубликовано 7 июля, 2009 · Жалоба to Sasamy: Заработало! *куча радостного вопля* Очень очень большое спасибо! Заработало после того, как установил raw режим и -echo (раньше я echo не отключал, и не думал отключать). Даже echo, не только cat теперь работает. Проблема решена! Спасибо! Еще один вопрос, где мне начать читать про настройки терминалов/модемов и т.д. Просто работать с stty не умею и надо где-то почерпнуть информацию об этом. Если подскажите, как эта тема называеться, буду рад. Огромное спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sasamy 9 7 июля, 2009 Опубликовано 7 июля, 2009 · Жалоба Еще один вопрос, где мне начать читать про настройки терминалов/модемов и т.д. Просто работать с stty не умею и надо где-то почерпнуть информацию об этом. Я не специалист в этом, по stty как и практически любой команде в linux можно смотереть man #man stty короткую подсказку можно и так #stty --help Последовательные порты/терминалы такие же древние как и сами ос, так что информации море, правда в основном на английском. Что-то советовать не могу, потому что не занимаюсь этим. Имхо поиск можно начать тут http://tldp.org/HOWTO/Serial-HOWTO.html кое-что есть на русском - при наличии интернета найдете быстро. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nik.laus 0 7 июля, 2009 Опубликовано 7 июля, 2009 · Жалоба to Sasamy: Уже и нашел и почитал. :) Поспешные выводы. Обычно в ванильном ядре драйверы все же работают немнога Действительно поспешные! :) Большое спасибо! Тему можно закрывать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nik.laus 0 14 июля, 2009 Опубликовано 14 июля, 2009 · Жалоба Что-то я погорячился... Или тему закрывать, или новую открывать... : ( Вообщем, *плакаю*... Дали мне готовое устройство... на этом, cp2102, чипе. Пустышка отлично работала. А готовое не работает... Позволяет в него записывать, но обратно ничего не выдает... Я в логе не вижу *read_bulk_callback... Под виндой, говорят, работает... Как-то раз товарищь запулил туда из /dev/urandom'а, что-то выдало. Очень был удивлен... Посмотрели dmesg - 8250.ko запустился и отрабатывал как com port. Вытянули и опять вставили - запустился уже cp210x... который ничего нам не выдал. Я откровенно незнаю куда лезть... Ведь и спецификации нету : ( И спаришать где незнаю... Буду баловаться с параметрами, скоростью и т.д.... И даже незнаю, куда держать ориентир для того, чтобы решить эту задачу... Толи в драйверы разные лезть, толь с stty баловаться (а вдруг что получитсья) Где почитать я тоже без понятия... В гугле тоже не нашел чего-либо стоящего... : ( Поэтому у меня опять кризис жанра и неизвестно куда копать... : ( Вообщем, если кто подскажет, куда копать, когда непонятно куда копать... : ((( буду очень и очень благодарен и признателен! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nik.laus 0 15 июля, 2009 Опубликовано 15 июля, 2009 · Жалоба А с утра оказалось, что девайс надо устанавливать на 4800 бит/секунду. И все начало работать. Всем спасибо за внимание и терпение! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться