Forum: Mikrocontroller und Digitale Elektronik 2.Frage zu Ethernet-System von LPC2468


von Joe (Gast)


Lesenswert?

Hallo,

da der LPC2468 ein eingenen DMA, SRAM-Buffer und AHB Bus
besitzt, wird der Prozessor minimal belastet, was ich nicht verstehe
ist, der Prozessor wird doch jedesmal mit Interrupt benachrichtigt, wenn
es Daten Vorliegen oder nicht, das ist doch eine Belastung oder?
Außerdem ist im Datenblatt zu finden, dass die Benachrichtigung durch
Interrupt beim Senden oder Empfangen der Ethernet-Daten Optional ist,
gibt es noch eine andere Art der Benachrichtigung?

Andere Frage :Bei der Umwandlung Seriel/Ethernet, welche Faktoren müssen
berücksichtigt werden, damit sowohl Ethernet-Daten als auch
Serielle-Daten nicht verloren gehen, und welche Einschränkungen gibt es
dabei(Interupt-latenz, Baudrate der serielle Schnittstelle..)?

Vielen Dank!

von Joe (Gast)


Lesenswert?

Wie wird der uC von DMA-Controller benachrichtigt das es Ethernet-Daten 
gibt die bearbeitet werden müssen, und umgekehrt: wie sendet der uC 
seine Daten über DMA?

Diese Beide Fragen machen mich verrückt, vor allem weil ich in einem 
Ethernet-Treiber, der DMA benutzt, nicht finde, wo ein Interrupt 
installiert ist, und weil im Datenblatt steht das ein Interrupt optional 
ist.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

DMA = der Datentransfer geschieht ohne Zuhilfenahme des Prozessors der 
kann derweil was anders machen (Tetris spielen).
Optional = Du kannst dich per interupt benachrichtigen lassen, ODER du 
kannst einfach regelmäßg nachschauen ob was nuees da ist/gesendet werden 
kann.

von Joe (Gast)


Lesenswert?

Ok, nehmen wir mal an der Prozessor bearbeitet gerade eine ISR von einer 
seriellen Schnittstelle, und in dem Moment wird ein Paket in Ethernet 
Buffer empfangen, das heisst man muss gewährleisten, dass der Prozessor 
genug Zeit hat um nachzuschuen ob Ethernet-Pakete vorliegen und dabei 
darf keine serielle Daten verloren gehen, ist das richtig?

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Sag doch einfach mal was dir konkret sorgen macht.
Von der Prozessorseite her dauert das Empfangen von Seriellen Daten und 
Ethernet so laaaaaaaaange das er das auch nacheinader machen kann ohne 
das was passiert.

von Joe (Gast)


Lesenswert?

Was mir sorger macht ist, dass ich nicht vorhersehen kann wielange der 
Prozessor braucht bis er eine ISR bearbeitet hat, als Beispiel diese 
ISR:
1
void CAN1_ISR_Rx(void) 
2
{
3
  static unsigned int *pDest;
4
  
5
  // initialize destination pointer
6
  pDest = (unsigned int *) &(mRxCAN[us_mRxIN]);
7
  
8
  *(pDest++) = CAN1RFS;  // Frame
9
  *(pDest++) = CAN1RID; // ID    
10
  *(pDest++) = CAN1RDA; // Data A
11
  *(pDest++) = CAN1RDB; // Data B
12
  
13
  us_mRxIN++;
14
  if (us_mRxIN >= MAX_QUEUE )
15
  {
16
    us_mRxIN = 0;
17
  }
18
  
19
  CAN1CMR = RELEASE_RECV_BUF; 
20
}
21
22
23
void CAN_Handler(void) 
24
{    
25
 
26
  CAN1_ISR_Rx();
27
  
28
  VICVectAddr = 0;    /* Acknowledge Interrupt */
29
  return;
30
}
Wie kann ich jetzt berchnen wie lange er dafür braucht, z.B bei 500KBaud 
wenn der CAN-Controller mit 18Mhz getaktet wird.

Danke

von Joe (Gast)


Lesenswert?

Hallo,

kann mir bitte jemand dabei helfen,  wie kann man berechnen wielange ein 
ARM7TDMI braucht um einen Programmsegment auszuführen.Gibt es vielleicht 
irgendwo einen Tutorial dazu?

Vielen Dank

von Andreas K. (a-k)


Lesenswert?

Joe wrote:

> kann mir bitte jemand dabei helfen,  wie kann man berechnen wielange ein
> ARM7TDMI braucht um einen Programmsegment auszuführen.

Der mit grossem Abstand einfachste Weg: nachmessen. Wenn's ein LPC2000 
ist, dann hat der netterweise 32bit Timer mit voller Taktrate und mit 
etwas Glück ist mindestens einer davon noch frei (z.B. der PWM-Timer).

Exakt berechnen (lies: nachzählen) wird "etwas" aufwendig, weil ein ARM7 
zwar eine recht einfache Pipeline hat, aber dann doch noch ein paar 
Feinheiten wie Wartezyklen bei nichtsequentiellem Zugriff, diverse 
Puffer, Bussysteme unterschiedlicher Geschwindigkeit usw.

von Joe (Gast)


Lesenswert?

Ich will das nur ungefähr wissen, mit dem Timer ist das eine nette Idee, 
aber sagen wir mal ich starte den Timer, wenn ich im ISR eintrette und 
stoppe ihn, wenn ich fertig damit bin, dieses hin und her zum und von 
Timer wird auch dazu berechnet oder nicht?

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
Noch kein Account? Hier anmelden.