Guten Tag, im Moment beschäftige ich mich mit dem Entwurf einer Hardware auf Basis eines STM32H735. Da schon abzusehen ist, dass der interne Flash nicht ausreichen wird, wollte ich einen externes RAM anbinden, aus dem auch Code ausgeführt werden soll. Nun stehe ich vor der Entscheidung, ob ich den RAM als - SDRAM mit 16 Bit Anbindung (166MHz) oder - per Octo SPI (Hyperbus/Hyperram) (200Mhz DDR) anbinde hat jemand schon Erfahrung zu dem Thema? Die Fragen die mich beschäftigen: Wie gut kann der Code im externen RAM per SWD „gedebuged“ werden? Wie sieht die Langzeit-Verfügbarkeit von SDRAM aus? Die Application-Prozessoren von ST besitzen mittlerweile ein DDR3/4-Interface. Welcher Speicher hat bei der Codeausführung geschwindigkeitsmäßig die Nase vorne? Schöne Grüße, Kalli
Kalli L. schrieb: > im Moment beschäftige ich mich mit dem Entwurf einer Hardware auf Basis > eines STM32H735. Da schon abzusehen ist, dass der interne Flash nicht > ausreichen wird, wollte ich einen externes RAM anbinden, aus dem auch > Code ausgeführt werden soll. > Nun stehe ich vor der Entscheidung, ob ich den RAM als > - SDRAM mit 16 Bit Anbindung (166MHz) oder > - per Octo SPI (Hyperbus/Hyperram) (200Mhz DDR) anbinde > hat jemand schon Erfahrung zu dem Thema? > > Die Fragen die mich beschäftigen: > Wie gut kann der Code im externen RAM per SWD „gedebuged“ werden? Wahrscheinlich genau so gut wie im internen Flash, ist ja aus CPU-Sicht alles eins. > Wie sieht die Langzeit-Verfügbarkeit von SDRAM aus? Naja, endlich. Auch mobiler SDRAM ist schon lange auf dem absteigenden Ast. Kann aber auch sein, daß der sich in den Nischen noch 10 Jahre und länger hält. > Welcher Speicher hat bei der Codeausführung geschwindigkeitsmäßig die > Nase vorne? Vermutlich der SDRAM, denn der der hat rein rechnerisch mehr Bandbreite 16 Bit x 166 MHz = 2.65Gbit/s, der Hyperbus nur 8x200= 1.6Gbit/s. Da liegen natürlich noch Pufer (Cache) dazwischen, je nach Testfall kann man mehr oder weniger Unterschiede sehen. Kleine Codestücken, welche in den Cache passen, machen wahrscheinlich keinen Unterschied.
Falk B. schrieb: >> - per Octo SPI (Hyperbus/Hyperram) (200Mhz DDR) anbinde > der Hyperbus nur 8x200= 1.6Gbit/s. Da DDR -> 3.2Gbps
Kalli L. schrieb: > Welcher Speicher hat bei der Codeausführung geschwindigkeitsmäßig die > Nase vorne? Das kommt darauf an wie gut die Caches funktionieren, wie linear der Code abläuft und wie die Daten liegen. Hyperram ist dafür gedachte größere Datenblöcke am Stück zu lesen oder zu schreiben. Was er gar nicht gut kann sind wahlfreie Zugriffe. Je nach den Zugriffsmustern helfen da Caches ein bischen drüber hinweg. Das "Problem" beim Hyperram ist, das es keine separaten Adressleitungen gibt. Wenn ein Zugriff sequentiell erfolgt ist das ohne größere Auswirkungen, weil der Hyperram intern die Adresen inkrementiert. Ansonsten muss vor jedem Zugriff halt immer erst die Adresse übertragen werden und Wartezyklen eingeschoben werden. Das drückt dann den Durchsatz massiv. Aus dem STM Forum: https://community.st.com/t5/stm32-mcus-products/stm32h735-hyperbus-speed-byte-vs-word-32bit-vs-qspi/td-p/107150 Dort gibt es alle möglichen Ergebnisse :-) Du solltest das ganze also mit Deinem Code/Anwendungsfall testen. Alles andere ist Spekulation.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.