Notes on the Penguino AVR drivers and interfaces

Warning

This page contains technical notes about the underlying protocols and libraries used by the Penguino AVR software and firmware. Most users will find the provided libraries will cover their needs.

USB Device

USB Vendor ID

0x16D0

USB Product ID

0x04CA

Manufacturer String

"Icy Labs"

Product String

"Penguino AVR"

USB Interfaces

USB Interface Association Descriptor (IAD) used to enumerate the "programming" and "serial" functions as separate devices. See MSDN article

Using the IADs, 3 interfaces are grouped into 2 functions:

Interface

Function

Interface Description

0

Serial

Communications class - Control

1

Serial

Communications class - Data

2

Programming

Flipper programming/JTAG

The 2 serial interfaces implement the "Control" and "Data" interfaces of the USB Communications Device Class ACM device, which acts as a modem, or more commonly as a USB-RS232 converter.

The last interface is an Icy vendor-specific interface used by Flipper to communicate JTAG with the user chip.

Firmware

The AT90USB82 on the Penguino AVR is factory loaded with firmware implementing the above interfaces. It also supports jumping to the on-chip Atmel bootloader, allowing for firmware upgrades.

The firmware is based on the brilliant LUFA library, which provides all the USB handling. Though only advised for advanced users, the sources are available through SVN:

cd LUFA-VER/Projects
svn co https://dev.icy.com.au/svn/icyprog/penprog-firmware/PenFirm/
cd PenFirm
make

Updating Penguino firmware manually

Warning

THIS CAN BRICK PENGUINOS

After flipping the Penguino into DFU mode:

dfu-programmer at90usb82 erase
dfu-programmer at90usb82 flash penguino-avr-firmware-''DATE''.hex
dfu-programmer at90usb82 reset

Drivers

The CDC ACM part of the Penguino USB firmware is standards compliant, so on smart operating systems like Linux, it enumerates without any special drivers. On both Windows and Mac OS X, special drivers are required to tell the OS which driver to use - in both cases, a driver already exists, it's just a matter of matching it.

Software/PenguinoAVR/Drivers/Technical (last edited 2010-02-02 06:07:10 by TheoJulienne)