Hi, nachdem ich selbst nichts im Netz dazu gefunden habe, veröffentliche ich mal ein kleines howto, wie man den beliebten DX-ISP Programmieradapter (USB) unter Linux ans Laufen bringt. Was man benötigt: -Den DX-ISP - Adapter selbst: http://www.wiesolator.de/index.php?area=AVR&topic=AVR-Progger%20Diamex%20DX-ISP -Linux Kernel ab 2.6.24, abzufragen mit uname -a Linux Arbeitsrechner 2.6.34.7-0.3-desktop #7 SMP PREEMPT Sat Oct 23 00:23:14 CEST 2010 x86_64 x86_64 x86_64 GNU/Linux 2.6.24 deswegen, weil ab diesem imHo der ttyACM-Treiber enthalten ist. -Den ttyACM-Treiber Dieser ist bei Distributionskerneln in der Regel schon enthalten. Bei selbstkompilierten Kernel muss man ihn ggf. hinzufügen. Ob der ttyACM-Treiber installiert ist, sagt einem ein tail -f /var/log/messages wenn man den Adapter ansteckt: Feb 26 12:44:50 Arbeitsrechner kernel: [ 1501.803403] usb 7-1: new full speed USB device using uhci_hcd and address 3 Feb 26 12:44:50 Arbeitsrechner kernel: [ 1501.981131] usb 7-1: New USB device found, idVendor=16c0, idProduct=2a9b Feb 26 12:44:50 Arbeitsrechner kernel: [ 1501.981134] usb 7-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0 Feb 26 12:44:50 Arbeitsrechner kernel: [ 1501.981137] usb 7-1: Product: DX-ISP Feb 26 12:44:50 Arbeitsrechner kernel: [ 1501.981138] usb 7-1: Manufacturer: Stange Distribution Feb 26 12:44:50 Arbeitsrechner kernel: [ 1501.984174] cdc_acm 7-1:1.0: ttyACM0: USB ACM device Wichtig ist die letzte Zeile; erscheint sie, kann man den folgenden Abschnitt überspringen: -Installation des ttyACM - Treibers- tobias@Arbeitsrechner: su tobias@Arbeitsrechner:~> cd /usr/src/linux tobias@Arbeitsrechner:/usr/src/linux> make menuconfig In dem Menu navigiert man zu /drivers/usb/ und wählt dann "usb modem (cdc acm) support aus, und zwar als Modul ("M"). dann die module mit make modules make modules_install übersetzen und installieren. Nun sollte sich der ttyACM-Treiber melden, sobald der Adapter erneut angesteckt wird: Feb 26 12:44:50 Arbeitsrechner kernel: [ 1501.984174] cdc_acm 7-1:1.0: ttyACM0: USB ACM device -Nutzung des Adapters- Betrachten wir noch einmal die Zeile Feb 26 12:44:50 Arbeitsrechner kernel: [ 1501.984174] cdc_acm 7-1:1.0: ttyACM0: USB ACM device aus /var/log/messages. Netterweise teilt einem der Treiber gleich mit, welchem virtuellen Com-Port er nutzt (hier ttyACM0). Über diesen Com-Port lässt sich der Adapter jetzt als Stk500v2 ansprechen. Dazu muss avrdude so konfiguriert werden, dass es als seriellen Port den virtuellen com-Port /dev/ttyACMx nutzt. Die Parameter hierfür sind: -P <com-Port> also z.B. -P /dev/ttyACM0 -c <Programmer> also -c stk500v2 avrdude -p atmega168 -P /dev/ttyACM0 -c stk500v2 -B 1 -U flash:w:nano_os.hex Damit ist der Adapter unter Linux einsatzbereit! gruß tobi
Hallo, ich bin mir nicht sicher, wohin damit. Daher hänge ich das mal hier dran. Vielleicht hilft das ja mal jemandem. Ich verwende den gleichen Programmer unter FreeBSD, dort ist das alles allerdings ein bischen anders. Irgendwelche Kernelmodule muss man unter FreeBSD nicht installieren, das geht alles out-of-the-box. Ich hab mir dieses kleine Script erstellt, das mir via sysctl den entsprechenden Port raussucht:
1 | #!/bin/sh
|
2 | |
3 | modem=`sysctl -a | grep umodem | grep DX-ISP | sed 's/.%desc.*//'` |
4 | |
5 | if test -n "$modem"; then |
6 | U=`sysctl -a | grep $modem | grep pnpinfo | awk '{print $12}' | awk -F= '{print $2}'` |
7 | if test -n "$U"; then |
8 | echo "/dev/cua$U" |
9 | else
|
10 | echo "MODEM-$modem-HAS-NO-CUA" |
11 | fi
|
12 | else
|
13 | echo "NO-MODEM-FOUND" |
14 | fi
|
Der Vollständigkeit halber, so sieht die Ausgabe des Kernels aus, wenn man das Teil anschliesst:
1 | ugen4.3: <Stange Distribution> at usbus4 |
2 | umodem2: <Stange Distribution DX-ISP, class 2/0, rev 2.00/1.01, addr 3> on usbus4 |
3 | umodem2: data interface 1, has CM over data, has break |
Mit sysctl kann man sich dann raussuchen, welcher Port der virtuelle Serial ist:
1 | $ sysctl dev.umodem.2 |
2 | dev.umodem.2.%desc: Stange Distribution DX-ISP, class 2/0, rev 2.00/1.01, addr 3 |
3 | dev.umodem.2.%driver: umodem |
4 | dev.umodem.2.%location: bus=1 hubaddr=1 port=4 devaddr=3 interface=0 |
5 | dev.umodem.2.%pnpinfo: vendor=0x16c0 product=0x2a9b devclass=0x02 devsubclass=0x00 sernum="" release=0x0101 mode=host intclass=0x02 intsubclass=0x02 intprotocol=0x01 ttyname=U2 ttyports=1 |
6 | dev.umodem.2.%parent: uhub4 |
Interessant ist hier die vorletzte Zeile, der Port ist: ttyname=U2 Das Device ist also: /dev/cuaU2 Und das ist dann die Ausgabe des obigen Scriptes. @Mods: falls das doch nicht richtig hier ist, bitte wenn möglich verschieben.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.