STM32F746 Discovery Schlafmütze

Gast #4545728
Mit dem EMAC Treiber unter LWIP hab ich den seltsamen Effekt das ich 
nach einer Weile erst das Board anpingen muß um Zugriff auf den HTML 
Server zu erhalten.
Da mbed rtos nicht in Frage kommt vermute ich das die 
Defaulteinstellungen des LAN8742A Chips nicht stimmen.
Weiß einer welches Bit in welchem PHY Register zu setzen ist um diesen 
Effekt abzuschalten?

m.f.G.
Dieter Gräf
(Firma: TU Darmstadt)
F7 kann Daten cachen. DMA nach SRAM1/2 muss das beachten, sonst gibt es 
seltsame Effekte.
Abhilfen:
- DCACHE nicht einschalten, was aber den Zugriff auf Daten im Flash 
enorm verlangsamt
- Sicherstellen, das DMA Buffer nur aus dem DTCM Ram genommen werden
- Cache Flush an der richtigen Stelle

Beschrieben z.B. unter 
http://chibios.org/dokuwiki/doku.php?id=chibios:articles:cortexm7_dma_guide

Was spricht gegen RTOS Mbed?
Hast Du einen Blick auf Ethernut SVN Head geworfen? 
https://sourceforge.net/projects/ethernut/files/
Gast
Uwe B. schrieb:
> - DCACHE nicht einschalten, was aber den Zugriff auf Daten im Flash
> enorm verlangsamt

Es sei denn, man greift per ITCM auf den Flash zu und lässt den ART an, 
dann brauchts den D-Cache nicht. Ist laut irgendeiner AppNote angeblich 
sogar minimal schneller - jedenfalls kann der D-Cache sich dann auf den 
SRAM konzentrieren.

Glaube aber kaum dass es daran liegt. Ist wohl eher ein Problem mit dem 
Network Stack:

Dieter Graef schrieb:
> um Zugriff auf den HTML
> Server zu erhalten.
Das ist doch eine sehr vage Fehlerbeschreibung. Reagiert der IP-Stack 
denn auf den TCP-Verbindungsaufbau? Kommt da überhaupt was zurück?

Dieter Graef schrieb:
> vermute ich das die
> Defaulteinstellungen des LAN8742A Chips nicht stimmen.
Du meinst dass der irgendwann nur noch ICMP Pakete, aber keine IP Pakete 
mehr durchlässt? Klingt unwahrscheinlich, da der PHY sich den Payload 
der Frames gar nicht anschauen sollte...
(Firma: TU Darmstadt)
Dr. Sommer schrieb:
> Uwe B. schrieb:
>> - DCACHE nicht einschalten, was aber den Zugriff auf Daten im Flash
>> enorm verlangsamt
>
> Es sei denn, man greift per ITCM auf den Flash zu und lässt den ART an,
> dann brauchts den D-Cache nicht. Ist laut irgendeiner AppNote angeblich
> sogar minimal schneller - jedenfalls kann der D-Cache sich dann auf den
> SRAM konzentrieren.

Ich rede von Daten im Flash! Und Daten bekommt der F7 nicht aus dem 
ITCM.
Mit einem fundierten Gegenbeweis lasse ich mich aber ueberzeugen...

Codezugriff ueber ITCM mit ggf aktivierten ART braucht aber Code, der 
nach 0x00200000 gelinkt ist. Das ist zumindestens gewoehnungsbeduerftig.
Gast
Uwe B. schrieb:
> Ich rede von Daten im Flash!

Achso, sag das doch :o) Normal greift man ja nicht auf viele Daten im 
Flash zu, aber bei einem Webserver kann das wohl anders aussehen...

Uwe B. schrieb:
> Das ist zumindestens gewoehnungsbeduerftig.
Na, eine andere Zahl ins Linkerscript zu schreiben ist jetzt keine große 
Umgewöhnung. Nur der J-Link ist verwirrt wenn man ihm sagt dass er an 
Adresse 0x00200000 flashen soll (erkennt/erkannte er nicht als Flash), 
aber dem kann man mit einer AT> Anweisung aushelfen:
1
MEMORY
2
{
3
  ITCM_Flash  : ORIGIN = 0x00200000,  LENGTH = 1024K
4
  AXIM_Flash  : ORIGIN = 0x08000000,  LENGTH = 1024K
5
}
6

7
SECTIONS {
8
  .text : ALIGN_WITH_INPUT {
9
    *(.text)
10
    /* ... */
11
  } >ITCM_Flash AT> AXIM_Flash

Dann kann man wie gewohnt ganz "normal" programmieren, man sollte halt 
bloß den ART einschalten.
Gast
Dr. Sommer schrieb:
> Du meinst dass der irgendwann nur noch ICMP Pakete, aber keine IP Pakete
> mehr durchlässt? Klingt unwahrscheinlich, da der PHY sich den Payload
> der Frames gar nicht anschauen sollte...

stimmt tatsächlich er wacht auch mit web auf wenn man geduldig den 
Refreshknopf drückt.
bei Ping siehts so aus:

Ping wird ausgeführt für 192.168.2.26 mit 32 Bytes Daten:
Antwort von 192.168.2.23: Zielhost nicht erreichbar.
Antwort von 192.168.2.26: Bytes=32 Zeit=1005ms TTL=255
Antwort von 192.168.2.26: Bytes=32 Zeit=3ms TTL=255
Antwort von 192.168.2.26: Bytes=32 Zeit=5ms TTL=255

da werd ich wohl lwip durchforsten müssen.


Dr. Sommer schrieb:
> Achso, sag das doch :o) Normal greift man ja nicht auf viele Daten im
> Flash zu, aber bei einem Webserver kann das wohl anders aussehen...

Der Server holt sich die Daten von der SD Karte das fand ich am 
bequemsten.

m.f.G.
Dieter
Gast
Dieter Graef schrieb:
> stimmt tatsächlich er wacht auch mit web auf wenn man geduldig den
> Refreshknopf drückt.
Na sowas. Schau dir doch mal mit Wireshark an was passiert wenn du das 
erste mal (erfolglos) die Seite aufrufst. Kommt da irgendwas zurück?

Dieter Graef schrieb:
> Der Server holt sich die Daten von der SD Karte das fand ich am
> bequemsten.
Das ist auf jeden Fall langsamer als der interne Flash... Vielleicht ist 
die Karte in einem Standby Modus oder wird gar abgeschaltet? Setz doch 
mal Breakpoints in die Zugriffsfunktion und rufe dann die Website auf...
Gast
Ich hätt im wirklichem Leben Sleepmodedebugger werden sollen.Immer schön 
Kaffetrinken und 2 mal am Tag eine Taste drücken.
Jetzt kommts: mit den Optionen
#define LWIP_DEBUG
und
#define NETIF_DEBUG                 LWIP_DBG_ON
kommt der Fehler nicht.
Was mach ich denn nu?

m.f.G.
Dieter
Gast
Dr. Sommer schrieb:
> Vielleicht ist
> die Karte in einem Standby Modus oder wird gar abgeschaltet? Setz doch
> mal Breakpoints in die Zugriffsfunktion und rufe dann die Website

Wie immer hat Dr. Sommer recht.Es ist die SD Karte. Den Treiber hatte 
ich von der 1Bit SPI Fraktion übernommen und nur auf 4 Bit getrimmt. Ich 
werd mal gucken ob ich nicht bei jedem fopen direkt bei der Karte gucken 
muß ob sie noch 4Bit kann.

m.f.G.
Dieter
Gast
Problem gelöst:
Man muß bei der Statusabfrage welche vor jedem open aufgerufen wird 
nicht nur den Vorhandenseinpin abfragen sondern den Kartenstatus direkt 
abfragen, dann wacht sie wieder auf.

m.f.G.
Dieter

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.