🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.os.linux
Article #895932

Re: Sterowniki USB-RS232 Exar

#895932
From: Pszemol
Date: Sun, 15 May 2016 13:41
175 lines
10548 bytes
Czy istnieje jakiś limit na ilość cyfr w urządzeniu reprezentującym
port szeregowy w Linuxie?

Myślę o rozwiązaniu następującym - użycie mechanizmu udev
i zmodyfikowanie sposobu w jakim przydzielane są nazwy portów.
Zamiast kolejnego wolnego numeru portu ttyXUSB0, ttyXUSB1
chcę aby tworzyły się urządzenia według wzoru ttyXUSBthap
gdzie t - typ portu (1-RS485, 2-pętla prądowa, 0-RS232, itp), h - to
numer huba lub numer gniazda USB na sterowniku/komputerze
liczone od 0 do ilości portów USB na użytym sterowniku (h-1),
a - to adres urządzenia na płytce huba, czyli numer portu w hubie (0-3)
i ostatnia cyfra p - to już port w obrębie DUARTa (0-1) czy QUARTa (0-3).

Czyli chcę aby po wetknięciu huba do drugiego gniazda sterownika
mającego płytkę 2x rs232 w czwartym gnieździe tego huba
pojawiły się w systemie dwa nowe porty o nazwach/numerach
ttyXUSB0130 i ttyXUSB0131. Rozwijając te nazwy mamy:
typ 0: RS232
numer portu 1: drugi port
numer gniazda huba 3: czwarte gniazdo huba

I teraz zastanawiam się czy może lepiej byłoby numerować od 1
a nie od 0, aby wyeliminować port o nazwie ttyXUSB0000 :)

Co o tym myślicie?

"Pszemol" <Pszemol@PolBox.com> wrote in message 
news:nh5ot5$1bt$1@dont-email.me...
> "Sebastian Biały" <heby@poczta.onet.pl> wrote in message 
> news:nh5b05$8or$1@node2.news.atman.pl...
>> On 2016-05-13 01:29, Pszemol wrote:
>>> W swoim urządzeniu "przemysłowym" będę miał fefnaście takich
>>> samych portów (albo fefnaście i jeszcze trochę) z tym że będą one po
>>> 2 lub po 4 na jedno urządzenie USB Exara, wszystko podłączone
>>> przez USB huba lub dwa.
>>
>> Idę o zaklad że o ile jako tako ustabilizujesz kolejnośc po wlaczeniu
>> to jesli ktoś złosliwie przestawi dziurkę USB moga być kłopoty.
>
> Nie powinno być chyba aż tak źle ?
> USB DUART od Exara powinien zawsze raportować oba swe kanały
> w odpowiedniej kolejności. Tych USB-DUARTów będzie 4 na jednym
> HUBie i każda karta z takim DUARTem będzie mieć dwa GPIO
> dedykowane na rozpoznanie w którym gnieździe HUBa siedzi...
> Wiec mamy już 8 UARTów o jako-takiej orientacji gdzie są na HUBie.
> Teraz muszę rozpracować problem tego na którym HUBie jest
> który port, no i jego typ interfejsu jakoś przekazać do systemu (GUI).
>
>> Podejrzane tez i to sporo jest ilośc tych portów. Dlaczego jest ich aż 
>> tyle? RS485 zapewnia wiele urządzeń na wspólnej magistrali.
>
> Oczywiście że zapewnia, i będzie ich tam na jednej skrętce RS485
> około 16. Takich skrętek będzie po dwie na UART (4 na 1 karcie).
> W szczególności możesz mieć więc 4 duarty na HUBie, na każdym
> 2 porty RS485 więc masz 8 skrętek RS485 napędzanych z jednego
> HUBa.
> Kazdy HUB może mieć mieszaninę kart różnych typów, np. kartę
> z dwoma RS232 albo kartę z 4 portami RS485, lub 1 RS232 i 2 RS485.
> Do wyboru do koloru, w zależności od potrzeb konkretnej instalacji
> u klienta i konstelacji jego konkretnych urządzeń.
>
>>> Niektóre z tych portów będą na płytkach w standardzie RS232,
>>> inne RS485, jeszcze inne będą szeregową pętlą prądową...
>>> Ponieważ kostka USB-UART od Exara oferuje oprócz typowych linii
>>> RXD, TXD, RTS, CTS itp jeszcze kilka linii we/wy (GPIO) to mogę
>>> na takiej swojej płytce zakodować czy te dwa porty to są RS232
>>> a te są RS485 a te są z interfejsem pętli prądowej.
>>> Jak teraz umieścić w systemie linuxa informację na temat rodzaju
>>> interfejsów jakie są dołączone na końcu uarta na potrzeby aplikacji?
>>
>> Nie wiem czy linux w ogóle dostanie te informacje - RS485 i RS232
>> niczym się nie róznią od strony software drivera.
>
> Linux sam z siebie oczywiście informacji takiej nie dostanie...
> Bo skąd miałby wiedzieć co ja mam na płytce? :-)
> Ja pytam jak tą informację zgrabnie przesłać mam po
> odczytaniu pinów GPIO na USB-DUARTcie aby nie złamać
> przypadkiem jakichś linuksowych taboo :-)
>
>> Płyty główne przemysłowe z którymi miałem do czynienia
>> konfigurowano zworkami (rzadko kiedy w biosie).
>> OS nie widział różnicy.
>
> Mi chodzi o to, aby użytkownik mógł uszkodzoną kartę z dwoma
> portami RS232 (na przykład) wyjąć z gniazda, włożyć tam nową
> w to samo miejsce i aby aplikacji/konfiguracji nie musiał ruszać.
> Taki jest cel do osiągnięcia.
>
> Oprócz tego chodzi o to, aby ułatwić samą konfigurację, i aby
> nie oferować całej plejady portów które z natury rzeczy samej
> nie nadają się do podłączenia do tego typu urządzeń (stąd te
> filtry o których pisałem wczoraj: wybierz np. tylko RS485).
>
>>> Innymi słowy, zamiast pytać użytkownika konfigurującego drukarkę,
>>> na którym porcie ma drukarkę, i oferować mu fefnaście portów
>>> do wyboru chcę odfiltrować te z pętlą prądową czy RS485 i pokazać
>>> mu tylko te RS232.
>>
>> Zgaduje że sie nie da. Szczegóły w instruckji do scalaka.
>
> Instrukcja scalaka podaje że scalak oferuje 10 pinow GPIO dla każdego
> kanału UARTa (10 linii licząc oprócz dedykowanych linii RXD i TXD).
> Te linie możesz sobie przeznaczyć na jakieś RTS/CTS/CDC czy inne
> funkcje - w szczególności zostaje 2-3 linie na ustalenie typu karty
> według ustalonego kodu: np. 000 to 2xRS232, 001 to 4xRS485, 010 to
> 2 pętle prądowe, 011 to 1xRs232 + 2xRS485 itp, itd... Typów będzie 8 :-)
> Tą informację chcę przekazać systemowi i jakość ułatwić życie aplikacji.
>
>>> W innej części tej samej aplikacji chciałbym
>>> na odmianę skonfigurować inne urządzenie, które tylko gada po
>>> pętli prądowej i chciałbym automatycznie wyszukać z tych kilkunastu
>>> ttyXUSB?? ten który ma na swym końcu pętlę prądową...
>>
>> Zasugeruje inne rozwiązanie które sam stosowałem: aplikacja zaczynała 
>> pracę od komunikacji na każdym porcie wyszukując urzadzenia. Tak, to 
>> marna rada jeśli urządzenia głupie.
>
> Strasznie długo by to trwało...
> No i problem z taką konfiguracją będziesz miał gdy w czasie startu
> jakieś urządzenie nie odpowie, będzie chwilowo wyłączone, i zostanie
> niewykryte... Będziesz okresowo powtarzał wykrywanie? Masakra.
>
>>> Czy muszę sobie radzić z jakimiś tablicami tekstowymi umieszczonymi
>>> gdzieś w systemie plików czy może jest jakiś sprytny sposób w linuxie
>>> aby "podwiesić" fachowo taką informację bezpośrednio pod ttyXUSB5
>>> a inną informację podwiesić pod /dev/ttyXUSB9?
>>
>> Masz kilka problemów:
>> a) absurdalna ilość portów wskazuje na jakiś bug w designie całości
>
> :-) fefnaście nie jest żadną konkretną liczbą.
> A urządzenie jest duże i będzie rozmawiać z ogromną liczbą peryferiów
> zgrupowanych w różnych klasach/typach w liczne grupy.
> Niech Cię to nie przeraża - poprzednie generacje takich systemów
> działały ze sztywno instalowaną matrycą portów RS232 i nie wymagały
> takiej plastycznej konfiguracji: nowa generacja jest modułowa i pojawił
> się do rozwiązania nowy problem konfiguracji. Chcemy aby była ona P&P.
>
>> b) najpierw musisz ustabilizować za pomocą udev kolejnośc stawiania i 
>> zakleić na stale druty w dziurach USB żeby nie bylo syndromu sprzątaczki
>
> Płytki robię ze specjalnymi gniazdami, nie będzie wtyczek i kabli USB.
> Będzie moduł w postaci scalaka HUBa na płytce "głównej" i 4 gniazda
> krawędziowe podające sygnały USB, zasilanie i numer portu na gnieździe.
>
>> c) potem możesz sobie aliasować za pomocą udeva jak chcesz.
>>
>> Natomiast:
>> a) uzywanie przelotek na USB w celu sterowania czymkolwiek to katastrofa. 
>> USB jest mocno niestabilne.
> Mówisz że masz bardzo złe doświadczenia... ?
> Czy używałeś już "przelotek" przemysłowych od firmy Exar?
> Czy doświadczenie masz tylko z lipnymi PL2303 lub FTDI232?
>
>> b) przelotki USB mają wiele wad, wliczając w to niekomatybilne
>> napięcia, opóźnienia, gubienie danych itp.
>
> Opóźnienia, gubienie danych - to wszystko jest przecież do opanowania
> protokołem komunikacyjnym. Każda transmisja szeregowa, nawet
> wbudowanym RS232 powinna mieć mechanizmy zabezpieczające
> ją przed gubieniem znaków czy zakłóceniami - chyba nikt poważny
> nie zakłada że dostanie każdy znak który wysłał po drugiej stronie
> kabla... zwłaszcza w środowisku przemysłowym.
>
> Co do niekompatybilnych napięć to myślisz chyba o jakichś fuszerkach.
> Ja te USB-DUARTy plus osobne drivery linii (izolowane i zasilane
> normalnie z zasilacza a nie przez diodę z RTSa) planuję zrobić na
> swoich własnych płytkach drukowanych więc to ja będę kontrolował
> poziomy napięć: DUART przecież steruje TTL 3v3 a ja jadę sygnałem dalej.
>
>> c) to się na pewno da zrobić lepiej niż na przelotkach USB.
>
> Nie znam dobrego sposobu na grupowanie klastrów po 4-8 portów
> RS232, bo chyba I2C nie jest alternatywą ze względu na gorszą
> przepustowość... Zresztą czy I2C miałoby być o tyle lepsze od USB? 
Technical Details
Message-ID: <nh9u8l$cu0$1@dont-email.me>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!goblin2!goblin1!goblin.stu.neva.ru!eternal-september.org!feeder.eternal-september.org!mx02.eternal-september.org!.POSTED!not-for-mail
References: <ngjpmr$127$1@dont-email.me> <ngkrba$r2e$1@node2.news.atman.pl> <nglttj$oh3$1@dont-email.me> <ngn6bj$87q$1@node2.news.atman.pl> <nh33ho$3qo$1@dont-email.me> <nh5b05$8or$1@node2.news.atman.pl> <nh5ot5$1bt$1@dont-email.me>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!goblin2!goblin1!goblin.stu.neva.ru!eternal-september.org!feeder.eternal-september.org!mx02.eternal-september.org!.POSTED!not-for-mail
From: "Pszemol" <Pszemol@PolBox.com>
Newsgroups: pl.comp.os.linux
Subject: Re: Sterowniki USB-RS232 Exar
Date: Sun, 15 May 2016 08:41:59 -0500
Organization: A noiseless patient Spider
Lines: 1
Message-ID: <nh9u8l$cu0$1@dont-email.me>
References: <ngjpmr$127$1@dont-email.me> <ngkrba$r2e$1@node2.news.atman.pl> <nglttj$oh3$1@dont-email.me> <ngn6bj$87q$1@node2.news.atman.pl> <nh33ho$3qo$1@dont-email.me> <nh5b05$8or$1@node2.news.atman.pl> <nh5ot5$1bt$1@dont-email.me>
Reply-To: "Pszemol" <Pszemol@BigFoot.com>
Mime-Version: 1.0
Injection-Date: Sun, 15 May 2016 13:40:37 -0000 (UTC)
Injection-Info: mx02.eternal-september.org; posting-host="1a6d3fa4af3609ccdbd33ac7cb86c1f1"; logging-data="13248"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19N9Kca9vl4kp1H+/1dBYhk"
X-MimeOLE: Produced By Microsoft MimeOLE V14.0.8117.416
In-Reply-To: <nh5ot5$1bt$1@dont-email.me>
X-Newsreader: Microsoft Windows Live Mail 14.0.8117.416
Importance: Normal
Cancel-Lock: sha1:fHUSFvMWXPmu7UoBFGxjgWDhlio=
X-Priority: 3
X-MSMail-Priority: Normal
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit