Wie wird Firmware von der externen Flash-Speicherschnittstelle zum PIC-Mikrocontroller ausgeführt?

Ich habe sowohl PIC18- als auch PIC24-Mikrocontroller mit 256 KB Flash-Speicher.

Meine Codegröße beträgt 400 kB und kann nicht mehr im Flash-Speicher dieser MCUs gespeichert werden. Also denke ich darüber nach, einen externen Flash-Speicher zu verwenden, um den Programmcode zu speichern.

Kann ich meine ausführbare Datei im externen Flash speichern und von dort ausführen? Wie mache ich das?

Warum wählen Sie nicht stattdessen einen PIC mit größerem Flash-Speicher? Sollte einfacher sein.
Sind das 400 KiB Code (Anweisungen)? Ein großer Teil davon sind konstante Daten, die Sie möglicherweise nur in einem externen Speicher (I2C/SPI-EEPROM, Flash-Karte usw.) ablegen.
@Alin: Ich möchte die Kosten meines Projekts nicht erhöhen und habe bereits viele Controller mit 256 KB Flash-Speicher.

Antworten (1)

Es gibt PIC24- und dsPIC33-Modelle mit 512 KB Flash.

PIC18F8622 & 8722 und einige andere PIC18F (z. B. 87J50, 97J60) haben eine externe Busschnittstelle, Sie können dort einen parallelen Flash (Typ 29xx) platzieren, und der externe Bus kann bis zu 2 MB adressieren.

Aus dem Datenblatt können wir entnehmen, dass dies zum Speichern von Programmcode verwendet werden kann:

Der External Memory Bus (EMB) ermöglicht dem Gerät den Zugriff auf externe Speichermedien (wie Flash, EPROM, SRAM usw.) als Programm- oder Datenspeicher .

Die Verwendung anderer Arten von Schnittstellen zur Verbindung mit einem externen Flash könnte problematisch sein, da Sie den Code nicht direkt vom Flash ausführen könnten, sondern den Code vor dem Ausführen in den RAM kopieren müssten - aber da diese Mikrocontroller dies tun extrem begrenzte RAM-Ressourcen, würde dies die Nützlichkeit einer solchen Lösung stark einschränken (Sie müssten eine Art Paging-/Overlay-Technik implementieren).

Hier ist das Produktauswahltool von Microchip, mit dem Sie nach Modellen mit bestimmten Merkmalen suchen können: http://www.microchip.com/maps/microcontroller.aspx

@Valko: Vielen Dank für Ihre Anleitung. Wir können also, wie Sie zuvor gesagt haben, eine Schnittstelle mit einer Größe von bis zu 2 MB (29xx) herstellen. Ich weiß nicht, wie dieses Zeug beim Codieren funktioniert. Wenn Sie ein Beispiel haben, ist es besser für mich.