STM32F746 Discovery Schlafmütze

Gast #4545728
Lesenswert?

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) #4545803
Lesenswert?

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 #4545817
Lesenswert?

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) #4545834
Lesenswert?

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 #4545853
Lesenswert?

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 #4545881
Lesenswert?

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 #4545886
Lesenswert?

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 #4545969
Lesenswert?

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 #4546175
Lesenswert?

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 #4546711
Lesenswert?

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

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