PC Programma

Postby arjen h. » Wed Jan 09, 2008 12:00 am

pjongenHierbij dan de beloofde beschrijving + wat software over de USB Bootloader voor het Data Acquisitie kaartje.
Suggestie: nieuw onderwerp "Bootloader" maken en je zip-file daar posten. Kunnen andere belangstellenden de bootloader makkelijk(er) vinden.

Waardevolle uitbreiding en duidelijk stukje proza in het word-document. Mijn complimenten!
Het Elektor forum is voor de lezers; voor een vraag aan de redactie kun je het beste Elektor een email sturen.
arjen h.
Moderator
 
Posts: 1290
Joined: Thu Jan 02, 2014 10:40 am

Postby velswijk » Thu Jan 24, 2008 12:00 am

Als afronding van mijn bijdrage aan deze discussie kan ik melden dat mijn USB I/O kaart gereed is. Ik heb hem gebouwd op basis van het ontwerpje van ArjenH op een Conrad Printje (geweldig spul, vind ik), en [na het ontdekken - en herstellen - van het een keer te vaak verwisselen van D+/D-] liep alles meteen goed: hardware werd gedetecteerd, driver geladen, het testprogramma van pjongen gestart, en zie: alles OK.

Bijna een soort anticlimax...

Het viel mij nog op dat de MCHPUSB library blijkbaar exclusief gebruik maakt van het USB device; ten minste, toen ik tegelijkertijd het "spaanse" demo-programma startte klaagde dat, dat het geen pipes kon openen. Heeft iemand hierover nog een mening? Ik zou het niet onhandig vinden als verschillende programma's tegelijkertijd gebruik konden maken van de kaart. Er zitten genoeg verschillende in- en uitgangen op.

Nu over naar de interessante problemen: het modificeren van de hele boel.

vr.gr.
PvE
velswijk
 
Posts: 16
Joined: Thu Jan 02, 2014 3:42 pm

Postby pjongen » Thu Jan 24, 2008 12:00 am

Het viel mij nog op dat de MCHPUSB library blijkbaar exclusief gebruik maakt van het USB device; ten minste, toen ik tegelijkertijd het "spaanse" demo-programma startte klaagde dat, dat het geen pipes kon openen. Heeft iemand hierover nog een mening?


Zoals jij je dat voorstelt gaat het niet. Dat ligt niet aan MCHPUSB.

Pipes zijn data-wegen naar een "End_Point" in het USB device.
Voor input en output heb je ieder één End_Point nodig.
In een USB device zijn 16 End_Point paren mogelijk. (met de nadruk op mogelijk)

End_Point 0 (EP0-In en EP0-Out) is een bijzonder End_Point, dat wordt gebruikt tijdens de enumeratie en doet verder niet meer mee.

De testprogramma's openen:
out_pipe= "\\MCHP_EP1";
in_pipe= "\\MCHP_EP1";

Het is onmogelijk dat een End_Point aan 2 programma's of drivers wordt toegewezen, dat staat Windoos gewoon niet toe (en terrecht!).

Of het mogelijk is dat een tweede programma/driver gebruik maakt van een van de andere End_Points (als die er zijn in het USB device) weet ik niet. Daar heb ik geen ervaringe mee.

Ik heb mijn programma even aangepast en geprobeerd EP2 te openen, maar dat mislukt. Dus zonder in de PIC microcode te kijken kan ik dus zeggen dat er in de firmware van de PIC alleen maar EP0 en EP1 voorzien is.

En hieronder het bewijs uit de firmware:
/* PICDEM FS USB Demo (using generic usb class template) */ 
#define USBGEN_INTF_ID 0x00
#define USBGEN_UEP UEP1
#define USBGEN_BD_OUT ep1Bo
#define USBGEN_BD_IN ep1Bi
#define USBGEN_EP_SIZE 64

#define MAX_EP_NUMBER 2 // UEP2


Twee endpoint van 64 byte elk. Geen van de functies in de DataAquisitie FW gebruikt 64 bytes overigens.


Als je meerdere EP's definieerd moet je ook in de firmware steeds onthouden van welk EP een request komt en naar welk EP het antwoord moet. Dit soort code heb ik in het user deel van de FW niet gezien en het zou ook een forse programeer inspanning vergen die te maken.

Als je meerder programma's gebruik wil laten maken van dit ene device dan is het beter een programma te maken dat met de PIC praat en dat vervolgens request kan ontvangen van meerdere andere programma's. (over tcp/ip bv). Dit gebruik ik in mijn project om de verschillende onderdelen met elkaar te laten praten.

Peter
pjongen
 
Posts: 64
Joined: Thu Jan 02, 2014 3:37 pm

Postby velswijk » Thu Jan 24, 2008 12:00 am

pjongen
Pipes zijn data-wegen naar een "End_Point" in het USB device.
Voor input en output heb je ieder één End_Point nodig.


Ik ben bekend met de EP-structuur van USB devices; het is zeker niet onlogisch (en simpel) om een EP te laten corresponderen met een pipe-paar, maar een meer geavanceerde driver zou *per gebruiker* een pipe-paar kunnen gebruiken, en zelf de multiplexing naar 1 EP kunnen doen. Of dit zinvol is hangt een beetje af van de functionaliteit van het USB device, maar voor de I/O kaart zou dat zeker kunnen.

Ik had de EP-structuur van de kaart ook al in de firmware gelezen, dus ik had hierop wel verdacht kunnen zijn.


Als je meerdere EP's definieerd moet je ook in de firmware steeds onthouden van welk EP een request komt en naar welk EP het antwoord moet. Dit soort code heb ik in het user deel van de FW niet gezien en het zou ook een forse programeer inspanning vergen die te maken.


Daar heb ik ook naar zitten kijken resp. zoeken. De hele firmware zou daarvoor een stuk systematischer opgezet moeten worden dan het nu is. Voor een generieke USB driver zou dat zeker moeten, maar of het lonend is voor een simpel device is maar de vraag. Voor mijn doel, met potentieel veel inkomende en uitgaande signalen, zou het wel nuttig zijn. Maar voorlopig kan ik even uit de voeten met de huidige versie (maar mijn handen jeuken...).


Als je meerder programma's gebruik wil laten maken van dit ene device dan is het beter een programma te maken dat met de PIC praat en dat vervolgens request kan ontvangen van meerdere andere programma's.


Mee eens (merk op dat dit precies is waar ik hierboven over sprak); maar dit creeert wel een potentiele bottleneck in de PC/PIC combinatie wegens te weinig parallellisme, dus wel oppassen geblazen.

vr.gr.
PvE
velswijk
 
Posts: 16
Joined: Thu Jan 02, 2014 3:42 pm

Postby arjen h. » Thu Jan 24, 2008 12:00 am

velswijkIk heb hem gebouwd op basis van het ontwerpje van ArjenH ... liep alles meteen goed: hardware werd gedetecteerd, driver geladen, het testprogramma van pjongen gestart, en zie: alles OK.
MOOI . Leuk dat je mijn printje hebt nagemaakt.
velswijkNu over naar de interessante problemen: het modificeren van de hele boel.
And that is where its all about !!!
Het Elektor forum is voor de lezers; voor een vraag aan de redactie kun je het beste Elektor een email sturen.
arjen h.
Moderator
 
Posts: 1290
Joined: Thu Jan 02, 2014 10:40 am

Postby velswijk » Thu Jan 24, 2008 12:00 am

Arjen H.
velswijkIk heb hem gebouwd op basis van het ontwerpje van ArjenH
MOOI . Leuk dat je mijn printje hebt nagemaakt.


Nou ja, een ietsje veranderd/verbeterd: afmetingen verkleind, Boot switch aangebracht en voeding weggelaten. Maar ere wie ere toekomt. ).

vr.gr.
PvE
velswijk
 
Posts: 16
Joined: Thu Jan 02, 2014 3:42 pm

Previous

Return to 2007-11 USB data-acquisitiekaart

Who is online

Users browsing this forum: No registered users and 1 guest