{"id":572,"date":"2013-05-23T23:56:26","date_gmt":"2013-05-23T21:56:26","guid":{"rendered":"http:\/\/blog.embedded-system-design.de\/?p=572"},"modified":"2013-05-23T23:56:26","modified_gmt":"2013-05-23T21:56:26","slug":"xmega-a1-xplained-unter-linux-devttyacm0-gelost","status":"publish","type":"post","link":"https:\/\/blog.embedded-system-design.de\/index.php\/2013\/05\/23\/xmega-a1-xplained-unter-linux-devttyacm0-gelost\/","title":{"rendered":"XMEGA-A1 XPlained unter Linux (\/dev\/ttyACM0)"},"content":{"rendered":"<p>Ich habe heute eine Weile damit verbracht, das XMEGA-A1 XPlained Evaluation-Kit unter Linux ansprechbar zu machen. Es dient der Evaluierung des ATxmega128A1 Mikrocontrollers. Bei mir zum Test der Implementierung eines Protokollstacks. Dabei gibt es folgendes Problem: Per USB angesteckt, wird zwar eine Ger\u00e4tedatei \/dev\/ttyACM0 angelegt, jedoch l\u00e4sst sich diese Schnittstelle nicht \u00f6ffnen. Nach einiger Zeit lieferte Minicom eine Fehlermeldung.<\/p>\n<p>Mit strace ist die Problemstelle recht schnell gefunden. Der Systemaufruf open() liefert -EINVAL zur\u00fcck. Nach einigem Suchen wurde ich <a title=\"XPlained ttyACM-Problem\" href=\"http:\/\/www.avrfreaks.net\/index.php?module=PNphpBB2&amp;file=viewtopic&amp;t=127185\">hier<\/a> f\u00fcndig. Das Problem liegt an einer \u00e4lteren Firmware im UC3 Board-Controller. Der AT32UC3B1256 Schnittstellen-Controller funktioniert nicht mit der ausgelieferten Firmware unter Linux. Updaten hilft!<\/p>\n<p>Die Firmware ist ein Beispiel des Atmel Software Framework (ASF) und muss in neuer Version neu \u00fcbersetzt werden. Dazu habe ich das Atmel-Studio 6.1 installiert. Das Beispiel hei\u00dft &#8222;USB Device CDC Example &#8211; Board Controller&#8220; (ASF 3.8.1). Die Standardeinstellungen in diesem Projekt f\u00fchren dazu, dass sich das Evaluation-Board mit der USB-PID 0x2310 meldet (eigentliche PID des XMEGA-A1 XPlained ist 0x2122). Daher sind kleine Konfigurationen im Code vorzunehmen:<\/p>\n<p>In der Datei <em>asf-3.8.1\/common\/services\/usb\/usb_atmel.h<\/em> ist die Zeile<\/p>\n<p style=\"padding-left: 30px;\"><code>#define USB_DEVICE_PRODUCT_ID USB_PID_ATMEL_UC3_CDC_DEBUG<\/code><\/p>\n<p>zu\u00e4ndern in<\/p>\n<p style=\"padding-left: 30px;\"><code>#define USB_DEVICE_PRODUCT_ID USB_PID_ATMEL_XPLAINED<\/code><\/p>\n<div id=\"attachment_580\" style=\"width: 300px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/blog.embedded-system-design.de\/wp-content\/uploads\/2013\/05\/IMG_20130522_1330091.jpg\"><img aria-describedby=\"caption-attachment-580\" loading=\"lazy\" class=\"size-medium wp-image-580\" title=\"XMEGA-A1 XPlained\" alt=\"IMG_20130522_133009(1)\" src=\"http:\/\/blog.embedded-system-design.de\/wp-content\/uploads\/2013\/05\/IMG_20130522_1330091-300x225.jpg\" width=\"300\" height=\"225\" \/><\/a><p id=\"caption-attachment-580\" class=\"wp-caption-text\">Zum Aktualisieren der Firmware im Board-Controller muss der Bootloader-Jumper (roter Pfeil) \u00fcberbr\u00fcckt sein.<\/p><\/div>\n<p>Das erzeugte Hex-File kann \u00fcber den Bootloader in den AT32UC3B1256 geladen werden. Dazu muss der Bootloader-Jumper vor dem Anschlie\u00dfen des USB-Ports gesetzt sein &#8211; also ein kleines bisschen L\u00f6ten oder kurz mit Pinzette \u00fcberbr\u00fccken. Mit dem <a title=\"DFU-Programmer Project\" href=\"http:\/\/dfu-programmer.sourceforge.net\/\">DFU-Programmer<\/a> kann das Hex-File anschlie\u00dfend \u00fcbertragen werden; ggf. unter Windows den im Archiv enthaltenen USB-Ger\u00e4tetreiber installieren.<\/p>\n<p style=\"padding-left: 30px;\"><code>dfu-programmer at32uc3b1256 erase<br \/>\ndfu-programmer at32uc3b1256 flash --suppress-bootloader-mem XPlained-BoardController-ASF-3.8.1-AT32UC3B1256.hex<br \/>\ndfu-programmer at32uc3b1256 start<\/code><\/p>\n<p>Nach dem Firmware-Update kann unter Linux die Schnittstelle ge\u00f6ffnet sowie Zeichen ausgegeben und gelesen werden.<\/p>\n<p><strong>Update<\/strong><\/p>\n<p>Mir scheint es so, als w\u00fcrde das L\u00f6schen des Empfangepuffers noch nicht korrekt funktionieren. Nur jedes zweite \u00d6ffnen der Schnittstelle liefert Daten. Dann aber zun\u00e4chst veraltete. Hier muss noch nachgebessert werden.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ich habe heute eine Weile damit verbracht, das XMEGA-A1 XPlained Evaluation-Kit unter Linux ansprechbar zu machen. Es dient der Evaluierung des ATxmega128A1 Mikrocontrollers. Bei mir zum Test der Implementierung eines Protokollstacks. Dabei gibt es folgendes Problem: Per USB angesteckt, wird zwar eine Ger\u00e4tedatei \/dev\/ttyACM0 angelegt, jedoch l\u00e4sst sich diese Schnittstelle nicht \u00f6ffnen. Nach einiger Zeit &hellip; <\/p>\n<p><a class=\"more-link btn\" href=\"https:\/\/blog.embedded-system-design.de\/index.php\/2013\/05\/23\/xmega-a1-xplained-unter-linux-devttyacm0-gelost\/\">Weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1,5,8,16],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.embedded-system-design.de\/index.php\/wp-json\/wp\/v2\/posts\/572"}],"collection":[{"href":"https:\/\/blog.embedded-system-design.de\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.embedded-system-design.de\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.embedded-system-design.de\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.embedded-system-design.de\/index.php\/wp-json\/wp\/v2\/comments?post=572"}],"version-history":[{"count":0,"href":"https:\/\/blog.embedded-system-design.de\/index.php\/wp-json\/wp\/v2\/posts\/572\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.embedded-system-design.de\/index.php\/wp-json\/wp\/v2\/media?parent=572"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.embedded-system-design.de\/index.php\/wp-json\/wp\/v2\/categories?post=572"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.embedded-system-design.de\/index.php\/wp-json\/wp\/v2\/tags?post=572"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}