Fórum témák

» Több friss téma
Fórum » PIC illesztése TCP/IP - ETHERNET - IDE felületen
Lapozás: OK   15 / 18
(#) _vl_ válasza pajti2 hozzászólására (») Máj 17, 2013 / 1
 
Az Ethernetnek kötelezően van saját külső órajele, ezért nincs neki oszcillátora. Arról megy az egész MAC blokk.
Szerintem a leglényegesebb alsó korlát az lehet, hogy vétel közben a DMA képes legyen betolni az SRAM-ba a vett adatokat. Ez 10Mbps esetén (ha csak a DMA használhatná a memória buszát) 32bit -> 320ns -> 3.125MHz-es minimum buszsebességet jelentene. 100Mbps esetén meg 10x ennyit. Nyilván ennyivel még nem fog működni, hiszen a CPU feldolgozóegysége is igényel sávszélességet.
(#) pajti2 válasza _vl_ hozzászólására (») Máj 17, 2013 /
 
Fény derült a rejtélyre, köszönöm.
(#) _vl_ válasza _vl_ hozzászólására (») Máj 17, 2013 /
 
Amúgy butaságot írtam: 10Mbps esetén 100ns-onként jön egy bit, szóval 32 bit az 3.2us, azaz 312kHz, és 100Mbps-nél lesz 3.125MHz.
(#) watt hozzászólása Máj 20, 2013 /
 
Sziasztok!
Szenvedek a Stack-el, nagyon kényes. Próbálok mellé illeszteni egy USART kommunikációt. Már ott elakadtam, hogy ha nem bájtonként megszakításdban veszek, küldök, akkor már 25bájt egyben vétele problémát okoz a StackTask() időzítésében. Igyekeztem a helpben erről infót keresni, de konkrét időket nem találtam. Ha tudtok erről valamit, kérem írjátok meg!
Jelenleg valahogy működik, de időnként kiakad még így is. POST módban küldök egy ajax kérést, amire 23 változót küld válaszként egy xml-be a HTML/Javascript program. Eközben USART-on veszek 50bájt körüli csomagot, amit megjelenítek a válaszon keresztül az oldalon.
Lehet, hogy nem az időtúllépés a gond, de jelenleg ezt szeretném kizárni, ha lehet.
Minden más fontosnak gondolt infót is szívesen veszek a Stack-el kapcsolatban!
Köszi!
(#) _vl_ válasza watt hozzászólására (») Máj 20, 2013 /
 
A POST hatására indítasz valamit, aminek az eredményét kapod vissza a soros porton, és azt akarod a POST-ra válaszként visszaadni? Ez nem túl szerencsés megoldás. Én inkább azt csinálnám, hogy aszinkron legyen a művelet: a "művelet indítása" c. POST hatására elindítod a folyamatot, és visszaadod a választ, hogy "elindítva", majd utána a böngésző időnként megkérdezi egy "mi a státusz?" c. GET kéréssel, hogy hol tart az eredmény. A soros porton jövő választ természetesen interruptban fogadod, az eredményt letárolod a memóriában. Amikor jön a "mi a státusz?" c. kérés, akkor a memóriából szolgálod ki.
Az AJAX amúgy nagy barátja a JSON nevű formátumnak, ami "tisztább, szárazabb érzés" az XML-hez képest.
A hozzászólás módosítva: Máj 20, 2013
(#) watt válasza _vl_ hozzászólására (») Máj 20, 2013 /
 
Szia!
Nem. Sorosan jön időnként egy csomag, amit ajax POST kérésre adok válaszul a böngészőnek, amit js kezel le XMLHttpRequest módszerrel.
A GET-el az a baj, hogy az IE nem jól kezeli a karakterkódolást, nemrég beszéltünk erről...
A JSON-t megnézem, de nem hiszem, hogy ezen múlna.
A hozzászólás módosítva: Máj 20, 2013
(#) _vl_ válasza watt hozzászólására (») Máj 20, 2013 /
 
A soros vonalon jövő byte-okat mindenképpen interruptból kell fogadni, és persze amikor éppen nincs mit olvasni, akkor nem állhatunk meg az ISR közepén, hogy megvárjuk a következőt.
Logikusan a beérkezett dolgokat letárolod valami memóriaterületre, és a POST kérést ebből tudod kiszolgálni. Nem látok indokot arra, hogy ez ne működjön normálisan.
Az XML/JSON a problémád szempontjából mindegy, csak megemlítettem.
A GET/POST kérdéskör pedig szintén nem befolyásolja ennek a működését, azt használod, amelyik előnyösebb.
A hozzászólás módosítva: Máj 20, 2013
(#) watt válasza _vl_ hozzászólására (») Máj 20, 2013 /
 
Igen, pont ez a bajom, hogy ez így történik, még is időnként belefagy a StackApplications() -> HTTPServer() rutinba. Próbálom kideríteni miért. Ehhez debuggolni kéne, de ez nem túl egyszerű és egyébként se szeretném, mert az a PIC, amit használok 1000x írható, így kicsit féltem.
Jelenleg változtattam a gyári megoldáson, egy Timer3 megszakításban pollingolom az egyébként main loop-ban lévő rutinokat, hogy biztosan rájuk kerüljön a sor időszakonként. Ez már az USB stack-nél bevállt. Így sikerül elkülöníteni, hogy hol fagy ki, mert benne marad a megszakításban, néhány LED-el követhető. Kicsit időigényes. Az érdekes lehet, hogy nem azonnal fagy ki, van mikor percekig jól működik.
Köszi, hogy foglalkoztál a kérdéssel!
(#) watt válasza watt hozzászólására (») Máj 20, 2013 / 1
 
Arra sikerült rájönnöm, hogy a megszakításból nem lehet pollingolni a rutinokat, mert az időzítésük az alacsony megszakításban futó timertől függ, ami nem fut le, ha nem ér ki valamelyik rutinból a stack, ha az a magas megszakításban kezelődik le és ott ragad.
A bonyolultság miatt nem tudom leírni, mi mindent módosítottam, de most úgy néz ki jobb lett, azaz egy ideje nem fagyott le.
A hozzászólás módosítva: Máj 20, 2013
(#) watt hozzászólása Jún 1, 2013 /
 
Sokat szenvedek a kapcsolat szakadása miatt. Először azt hittem, én szúrok el valamit, de visszatöltöttem a gyári demót, ami belső hálón keresztül szépen megy, de kintről meghívva ugyanúgy lefagyogat, néha feléled, megy egy darabig, majd újra leakad, előfordul, hogy végleg.
Nincs valami ötletetek, hogy mitől lehet ez?
(#) _vl_ válasza watt hozzászólására (») Jún 1, 2013 /
 
Hogyan hívod meg kintről? Valami routered van, és port-forwardingot használsz?
(#) watt válasza _vl_ hozzászólására (») Jún 1, 2013 /
 
Igen. Az is lehet, hogy a szolgáltatónál van valami problem. Rajta vagyok ezen is...
A hozzászólás módosítva: Jún 1, 2013
(#) potyo válasza watt hozzászólására (») Jún 2, 2013 /
 
Ha belső hálón stabilan megy, akkor nem valószínű, hogy a PIC-el lesz a probléma. Vagy a router szórakozik, vagy a szolgáltató. Vagy egyik sem, csak az internetről eleve nagy forgalom áramlik a géped felé (mindenféle portscan, ipscan, stb.), és mivel gondolom meghagytad a kontrollert a 80-as porton, ezért egyszerűen megfojtja a forgalom. Első körben állítsd át valami nagyobb számú portra, és nézd meg úgy, mi történik.
(#) watt válasza potyo hozzászólására (») Jún 2, 2013 /
 
Köszönöm a tippet, kipróbálom!
(#) watt válasza potyo hozzászólására (») Jún 2, 2013 /
 
Ha megadom az új portot az IP után (192.168.0.108:89) akkor megy(igaz így is kiakad gyorsan, amit én írtam oldalt, majd kicsit később magához tér stb.). Lehet átirányítani portra valahogy egy IP hívást? Vagy hol kell még beállítani valamit az ETH97.h-n (HTTP_PORT) kívül, hogy a beállított port legyen az alapértelmezett?
(#) _vl_ válasza watt hozzászólására (») Jún 2, 2013 /
 
Függetlenül a tapasztalt jelenségtől (aminek vagy van ehhez köze, vagy nincs) az a nagy igazság, hogy szerintem ezek a KB-ban mérhető belső memóriával rendelkező mikrokontrollerek nem igazán nyerőek ilyen célokra úgy általában.
Több szituáció is van, amit nehéz értelmesen kezelni rajtuk:
- erőforráskorlátok: ha bárki válogatás nélkül el tudja érni, akkor nem tud hatékony stratégia lenni bennük arra az esetre, ha valaki elkezdi igénybevenni a mikrokontroller szűkös erőforrásait (pl. szimplán csak TCP kapcsolatokat kezd nyitni, és ennyi); erre lehet az megoldás, hogy egy VPN mögé dugod, azaz még TCP kapcsolatot se tudjon rájuk nyitni az, akit nem authentikált valami eszköz már korábban,
- erőforráskorlát + TCP RTT: a korlátozott memóriaméret miatt a TCP window nem tud nagy lenni, a TCP window méret * az RTT értéke pedig egy felső korlátot ad a mindenkor elérhető maximális sávszélességre; ez LAN-on kívül azért zavaróan alacsonnyá is válhat,
- hibakezelés: a TCP működésében kritikus tényező az újraküldés kezelése, mind a küldőnek, mind a fogadónak korrektül kell a szabványt implementálnia, különben csomagok vesztése esetén nagyon lelassul a kommunikáció; ha bugok vannak a TCP stack működési logikájában, akkor előfordulhat, hogy LAN-on még nagyjából működik, hiszen ritkán vesznek el csomagok, míg távolabbról már problémás lesz, és egy-egy elveszett csomagnál megfagy teljesen a kommunikáció.
(#) watt válasza _vl_ hozzászólására (») Jún 2, 2013 /
 
Szia! Sok űr van még nálam a témában, de szerintem a TCP stack a ludas. Belső hálón próbálva is gázos. Elmegy egy kérés POST formában, majd erre válaszol egy csomaggal, amit a program szerint egyenként tölt fel az XML-be (void HTTPPrint(DWORD callbackID) HTTPPrint.h) egy switch ágait ütem szerint meghívogatva. Ha egy bizonyos kritikus ponton megszakad a folyamat(pl. egy megszakítás), belefagy az egészbe. Ha frissítem az oldalt, megint működik egy darabig. A pontot nem tudom elcsípni, mert nem szó szerint fagy le, akkor a frissítést sem tudná fogadni, csak a kapcsolat szakad meg. Bevallom nem tiszta milyen kapcsolat van itt, egyáltalán hogyan folyik a kommunikáció bájt szinten, ebbe sokkal jobban bele kellene ásnom magam, de reméltem, hogy erre nem lesz szükség (ettől kellene megmentenie egy gyári stacknek, nem? ) . Bele kell ásnom magam az egész lelkébe, de még az elején vagyok, sok a zűrzavar a fejemben...
A hozzászólás módosítva: Jún 2, 2013
(#) _vl_ válasza watt hozzászólására (») Jún 2, 2013 /
 
Szerintem kb. egy rendes oprendszer (pl. egy Linux) van azon a szinten, hogy megmentsen teljesen a TCP stack problémáitól. Ott van elég erőforrás ahhoz, hogy mindenféle "hack" nélkül korrektül lehessen implementálni a szabványt, és ott van reálisan annyi tesztelési emberév beleölve, hogy zökkenőmentesen menjen.
A kliens oldalra kell egy tcpdump/wireshark, abból általában látszik, hogy melyik ponton áll meg a kommunikáció.
(#) watt válasza _vl_ hozzászólására (») Jún 2, 2013 /
 
Jelenleg egy button-al hívom meg az ajax függvényt, ami elküldi a POST csomagot, de a PIC ezt már nem veszi észre. Az MPLAB-ban nem látom az ethernet puffert, illetve nem tudom hogyan lehetne belenézni. Csatolom a fájlokat, amikkel most próbálkozok. A JavaScript a gyáriból átemelve működik(amit én írtam, azt hittem hibás, de ez ugyanúgy gázos, talám még jobban is).
A hozzászólás módosítva: Jún 2, 2013
(#) watt válasza watt hozzászólására (») Jún 2, 2013 /
 
Azt hiszem akkor akad ki, amikor a callback közben a válaszokat küldi és ez megszakad. Próbálok valami jelzőt betenni, hogy a folyamat során ne történjen megszakítás. Annyiban jelent ez gondot, hogy nem egy körben kerül elküldésre az adat. Nem is értem, hogyan áll ez össze az xml-be?
(#) watt válasza watt hozzászólására (») Jún 2, 2013 /
 
Ez se jött be, kicsit jobb, de így is leakad.
(#) watt válasza potyo hozzászólására (») Jún 2, 2013 /
 
Néztem a Whireshark-al, a böngésző nem küldi el a gomb nyomására a csomagot. Legalább is ha jól gondolom, hogy az elküldött kérés akkor is látszik, ha nem érkezik rá válasz.
(#) potyo válasza watt hozzászólására (») Jún 2, 2013 /
 
Ezt ki tudod úgy próbálni, hogy kikapcsolod a picet, és megnézed, úgy látszik-e a böngésző adatküldése.
(#) _vl_ válasza watt hozzászólására (») Jún 2, 2013 /
 
A wireshark minden egyes Ethernet csomagot megmutat. Praktikus lenne viszont olyan HTML/AJAX/Javascript kódot használni, amit előtte PC-n (= nem PIC-es webszerverrel) kipróbáltál...
(#) watt válasza _vl_ hozzászólására (») Jún 2, 2013 /
 
Hogyan lehet szűrni, hogy csak az a forgalom jelenjen meg, ami a szerverrel kapcsolatos?
(#) t-dani válasza watt hozzászólására (») Jún 2, 2013 /
 
Szia!

Pl. beírod a Filter sorba a következőt:

ip.src == 192.168.0.2

vagy éppen ezt:

ip.dst == 192.168.0.2

Aztán végül mellette az "Apply" gomb.
(#) killbill hozzászólása Jún 2, 2013 /
 
Sziasztok!

Microchip WIFI G Demo board-dal (DV102412, PIC32) kapcsolatban van tapasztalatotok? Bekapcsolom, kettot-harmat villog a zold LED es lerohad. Amikor megvettuk, nem ment. Visszavittuk a csipkedbe, ott mukodott, utana itthon is. Rejtély. Egy hetig nem nyultunk hozza, most megint rossz. Elem jo, tapot mertem szkoppal a radio modulon, nem rogyik meg, semmi gond. Tudtok errol valamit? Masik kerdes, hogy az ebbe a modulba gyarilag egetett sw forrasa honnan szerezheto meg? A neten nem talaljuk sehol, a microchip-nel nincs meg, csak a nem G-s modulhoz valo.

Elore is koszi,
Andor
(#) killbill válasza t-dani hozzászólására (») Jún 2, 2013 /
 
De a kettot kombinalhatod is:

ip.src == 192.168.0.2 || ip.dst == 192.168.0.2

Igy minden csomagot latsz, ami errol vagy erre az IP-re jon/megy.

De a tcp.source == 80 is hasznos lehet. Zarojelezhetsz, van && || operator.
(#) watt válasza t-dani hozzászólására (») Jún 2, 2013 /
 
Szuper, köszi mindkettőtöknek!
(#) holovacegy hozzászólása Okt 29, 2013 /
 
Sziasztok!

Apróhirdetésbe tedd.
A hozzászólás módosítva: Okt 29, 2013
Következő: »»   15 / 18
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem