Debuggen von AT91SAM7x

OP #3409460
Lesenswert?

Ich würde gerne meine Mikrocontroller debuggen. Dazu hat der AT91SAM7x 
ja eine Debug Unit mit einem Input (DRXD) und einem Output (DTXD). Ich 
habe die Debug Unit jetzt soweit konfiguriert und kann auch auf dem 
Oszilloskop ein Signal auf DTXD sehen.
Aber wie kann ich dieses Signal benutzen. Es handelt sich ja um ein 
UART. Ist dies irgendwie kompatible mit RS232 und kann ich mir da jetzt 
einen Stecker drauflöten? Bräuchte ich dafür nicht noch weiter 
Leitungen? Kann ich mir einen RS232 auf USB adapter besorgen und die 
Debug-Ausgabe dann einfach mir mit Putty anschauen?

Edit: Also, anscheinend tut es das. Ich habe DRXD und DTXD einfach mit 
einem rs232 stecker verbunden und mit putty mir das angeschaut. Leider 
scheint da immer noch etwas verdreht zu sein. Ich habe bei putty 
eingestellt:

no parity
no flow control
Data Bits: 7
Stop Bits: 1

und das ganze auf dem chip so eingestellt:
1
 /* Reset and disable receiver */
2
    AT91C_BASE_DBGU->DBGU_CR = AT91C_US_RSTRX | AT91C_US_RSTTX;
3

4
    /* Disable interrupts */
5
    AT91C_BASE_DBGU->DBGU_IDR = 0xFFFFFFFF;
6

7
    /* Configure PIOs for DBGU */
8
    AT91C_BASE_PIOA->PIO_ASR = AT91C_PA27_DRXD | AT91C_PA28_DTXD;
9
    AT91C_BASE_PIOA->PIO_BSR = 0;
10
    AT91C_BASE_PIOA->PIO_PDR = AT91C_PA27_DRXD | AT91C_PA28_DTXD;
11

12
    /* === Configure serial link === */
13
    /* Define the baud rate divisor register [BRGR = MCK / (9600 * 16)] */
14
    AT91C_BASE_DBGU->DBGU_BRGR = 312;  //muesste 9600 entsprechen
15
    /* Define the USART mode */
16
    AT91C_BASE_DBGU->DBGU_MR = AT91C_US_PAR_NONE | AT91C_US_CHMODE_NORMAL;
17

18
    /* Disable the RX and TX PDC transfer requests */
19
    AT91C_BASE_DBGU->DBGU_PTCR = AT91C_PDC_RXTDIS;
20
    AT91C_BASE_DBGU->DBGU_PTCR = AT91C_PDC_TXTDIS;
21

22
    /* Enable transmitter */
23
    AT91C_BASE_DBGU->DBGU_CR = AT91C_US_TXEN;

Dann rufe ich eine funktion zum debuggen mit dem folgenden inhalt auf:
1
void dbgu_print_ascii(const char *buffer)
2
{
3
    while (*buffer != '\0') {
4
        while (!(AT91C_BASE_DBGU->DBGU_CSR & AT91C_US_TXRDY));
5
        AT91C_BASE_DBGU->DBGU_THR = (*buffer++ & 0x1FF);
6
    }
7
}

Leider kommt dabei nur Buchstabengewirr raus. Hat da jemand eine Idee?
OP #3417806
Lesenswert?

Danke Jim und Steffen,

Die Baudrate scheint zu stimmen, bin mir aber nicht 100% sicher, da ich 
ja keinen clock pin habe (wie kann ich das sonst messen?). Ich habe auf 
8bit gewechselt. Merkwürdiger weise, scheinen all bits um eins nach 
rechts geshiftet und geflippt zu sein.

> The Debug Unit operates as a UART, (asynchronous mode only)

Heißt das, dass ich das prinzipiell an einen RS232 Stecker anschließen 
und dann mit meinem PC verbinden kann oder ist das so nicht gedacgt? Und 
wenn ich in putty alle Werte richtig setze tut es das?

> supports only 8-bit character handling (with parity)

Heißt das 7bit + 1 bit parity oder 8bit + 1bit parity.

Eigentlich habe ich alle Varianten schon ausprobiert, aber ich komme da 
einfach nicht auf einen grünen Zweig. Tut mir Leid für die Amateur 
fragen.
OP #3419459
Lesenswert?

Tim schrieb:
> Beitrag "Unterschied zwischen UART und RS232"
> Pegel beachten!

Also, nur falls hier nochmal jemand auf den Thread stößt. Tim hatte mein 
Problem richtig erkannt.

Meine Lösung:
Habe mir den MAX232 chip (Datenblatt: 
http://www.ti.com/lit/ds/symlink/max232.pdf), eine RS232 Stecker besorgt 
und 5x 470nF besorgt(im Datenblatt sind 1uF angegeben, scheint aber auch 
zu passen). Dann habe ich alles verlötet wie im Datenblatt beschrieben.

Tut es sau gut!
Gast #3419489
Lesenswert?

Lucas G. schrieb:
> Ich würde gerne meine Mikrocontroller debuggen. Dazu hat der AT91SAM7x
> ja eine Debug Unit mit einem Input (DRXD) und einem Output (DTXD).

Zum Debuggen hat der Atmel JTAG.

Die DBGU ist kein vollwertiger Debug-Zugang. Darüber kann man zwar 
wunderbar U-Boot und ähnliche Terminals legen bzw einen Ablauf loggen, 
aber für mehr eher weniger geeignet.

Atmel bietet für seine Controller abgespeckte Segger J-Link an 
(funktionieren nur auf Atmels) die sind empfehlenswert.
Gast #3419726
Lesenswert?

Ich hab den für 99€ in Erinnerung, aber ja das ist er.
Mit dem arbeite ich mit SAM7, SAM3, SAM4 seit Jahren. Schade ist 
lediglich, dass die orginal Segger-Tools (i.e. J-Flash ARM) noch eine 
zusätzlcihe Lizenz Option wollen.

Das braucht man dann aber eher beim Flashen von Kleinserien, der Rest 
geht unter den üblichen IDEs von Haus aus. (Keil, IAR, Atmel Studio)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren