USART

USART im Kernel aktivieren:

Das NGW100 besitzt 4 Serielle Schnittstellen die von Atmel als USARTs bezeichnet werden.
Diese USARTs werden von 0 bis 3 durchnummeriert. (USART 0-3)
USART = Universal asynchronous receiver/transmitter, siehe USART Wikipedia.

Note: Zu beachten ist das der USART1, der von der Konsole an den RS232 Stecker geführt wird, über einen Pegelwandler MAX3232E läuft und somit auf eine Spannung von 5,5V angehoben wird. Siehe Datenblatt MAX3232
Die anderen USARTs, die über die Pfostenleisten gehen, arbeiten mit einem Pegel von +0V und +3,3V.

Hier einmal die Zuordnung:
USART 0: Port PA06 – Port09
USART 1: Port PA20 bzw. Serielle Konsole
USART 2: Port PB26 – PB27
USART 3: Port PB15 – PB19

Pakete: quilt
sudo apt-get install quilt

1. Wechseln in das Kernel-Source Verzeichniss
cd (path to buildroot)/project_build_avr32/atngw100/linux-2.6.27.6/

2. Erstellen einer erstmal leeren Patch-Datei
quilt new enable-two-usarts.patch

Falls man nicht vi benutzen möchte, kann auch ein anderen Editor angeben werden.
EDITOR=gedit
export EDITOR

3. Bearbeiten der Source-Datei „setup.c“
quilt edit arch/avr32/boards/atngw100/setup.c

4. Hinzufügen folgender Zeilen unter „at32_map_usart(1, 0);“ um USART2 und USART3 zu aktivieren.
at32_map_usart(2, 1); /* USART 2: /dev/ttyS1 */
at32_map_usart(3, 2); /* USART 3: /dev/ttyS2 */

Damit die Serielle Schnittstelle auch als Device verfügbar ist muss noch unter „at32_add_device_usart(0);“ folgendes hinzugefügt werden:
at32_add_device_usart(1);
at32_add_device_usart(2);

-> Speichern und beenden

5. Änderungen in den Patch übernehmen
quilt refresh

6. Kopieren der Patch-Datei ins das target patch device Verzeichniss:
mkdir (path to buildroot)/target/device/Atmel/atngw100/kernel-patches

cp (path to buildroot)/project_build_avr32/atngw100/linux-2.6.27.6/patches/enable-two-usarts.patch (path to buildroot)/target/device/Atmel/atngw100/kernel-patches/linux-2.6.27.6-100-atngw100-enable-two-usarts.patch

7. *Optional: Löschen des uImages, um ein rebuild des Kernels zu triggern:
rm (path to buildroot)/project_build_avr32/atngw100/linux-2.6.27.6/arch/avr32/boot/images/uImage

8. Zurück im buildroot Verzeichniss mittles „make“ einen rebuild des Kernels ausführen:
cd (path to buildroot)/
make

Danach das neue rootfs auf eine SD-Karte kopieren und sich der neuen Seriellen Schnittstellen erfreuen.

Note: Bei mir musste ich ein komplett neues buildroot aufsetzten, da es mit dem bereits verwendeten nicht funktioniert hat.

Quellen:
http://www.cibomahto.com/2007/11/enabling-extra-serial-ports-for-the-ngw100/
http://www.avrfreaks.net/wiki/index.php/Documentation:Linux/Serial
http://www.avrfreaks.net/index.php?name=PNphpBB2&file=printview&t=49083&start=0
http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=59415