Forum: Mikrocontroller und Digitale Elektronik Error: Flash Download failed - Cortex-M4"


von Max K (Gast)


Lesenswert?

Hallo,

ich arbeite mit dem Evaluation Board MCB4300 (LPC4350) und der 
Entwicklungsumgebung µVision5 und habe folgendes Problem.

Ich habe ein Projekt angelegt und möchte nun den Programmcode auf den 
MCB4300 laden. Wenn ich auf "Build" drücke, so bekomme ich keine 
Fehlermeldung (0 Error(s), 0 Warning(s)), falls ich anschließend auf 
"Load" drücke, so kommt die Fehlermeldung: "Error: Flash Download failed 
- Cortex-M4"" und im "Build Output" steht: "No Algorithm found for: 
1A000000H - 1A000F07H, Erase skipped!"

In den "Target Options" habe ich folgendes ausgewählt:


Device: LPC4350 --> LPC4350:Cortex-M4


Target: IRAM1: 0x10000000 (Start) und 0x20000 (Size)


Utilities: Settings -> Flash Download -> RAM for Algorithm: 0x10000000 
(Start), 0x1000 (Size)


Utilities: Settings -> Flash Download -> Programming Algorithm -> Add
kann man zwischen folgenden auswählen:

- LPC18xx/43xx S25FL032 SPIFI 4M (Flash Size) Ext. Flash SPI (Device 
Type) MDK Core (Origin
- RC28F640J3x Dual Flash 16M Ext. Flash 32-bit MDK Core
- S29GL064N Dual Flash 16M Ext. Flash 32-bit MDK Core

LPC18xx/43xx S25FL032 SPIFI Start: 0x14000000 Size: 0x00400000
RC28F640J3x Dual Flash Start: 0x00000000 Size: 0x01000000
S29GL064N Dual Flash Start: 0x1C000000 Size: 0x01000000



Ich habe LPC18xx/43xx S25FL032 ausgewählt, jedoch funktioniert es immer 
noch nicht, weiß jemand woran das liegen kann? Oder hatte jemand 
dasselbe Problem?

von W.S. (Gast)


Lesenswert?

Was willst du denn in das SPIFI Interface laden? Das ist für einen außen 
angebeppten seriellen Flash-Rom. Ich nehme doch an, daß du den internen 
Flash programmieren willst.

Tja, wie immer: Lies das Manual, versuche den Chip zu verstehen und sieh 
zu, wie du mit der Programmier-Hardware umgehen lernst. Die meisten 
Leute, die hier mit solchen Problemen aufschlagen, haben bloß gelernt, 
wie man eine IDE startet und dann auf F7 (oder ne andere Taste) drückt.

Ich hab zwar nicht nachgeschaut, nehme aber trotzdem mal an, daß der 
Chip über einen Bootlader verfügt. Also schau dir mal FlashMagic an und 
versuche es ggf. damit.

W.S.

von Jim M. (turboj)


Lesenswert?

W.S. schrieb:
> Ich nehme doch an, daß du den internen
> Flash programmieren willst.

Wenn man keine Ahnung hat...
Der LPC4350 hat keinen internen Flash! Da muss also ein externer Flash 
Chip irgendwie programmiert werden.

Die Doku auf
http://www.keil.com/support/man/docs/mcb1800/mcb1800_fp_download.htm

spricht von Boot Jumpern, de korrekt gesetzt sein müssen.

von Max K (Gast)


Lesenswert?

W.S. schrieb:
> Ich nehme doch an, daß du den internen
> Flash programmieren willst.

Eben, das ist mein Problem. Ich habe keinen internen Flash. Davor habe 
ich mit dem LPC4357 gearbeitet, der hatte einen internen Flash und ich 
konnte auch die Beispielprogramme von Keil nutzen. Aber der LPC4350 hat 
keinen.

Aber es müsste trotzdem möglich sein, den Controller irgendwie zu 
nutzen. Auch die Jumper habe ich gesetzt nach SPIFI, statt EMC, aber es 
will einfach nicht klappen.

von Sven B. (scummos)


Lesenswert?

Der Controller hat keinen Flash, du kannst da nix draufladen. Du kannst 
das Programm höchstens in den RAM laden und direkt von dort starten, 
dann ist es aber weg sobald du den Strom wegnimmst. Oder von externem 
Flash booten.

: Bearbeitet durch User
von Jim M. (turboj)


Lesenswert?

Max K schrieb:
> Auch die Jumper habe ich gesetzt nach SPIFI, statt EMC

Möchte das Handbuch das so haben? Auf der oben verlinkten Seite steht es 
genau anders herum. Das könnte den Fehler erklären.

von Max K (Gast)


Lesenswert?

Jim Meba schrieb:
> Möchte das Handbuch das so haben? Auf der oben verlinkten Seite steht es
> genau anders herum.

Ich habe beides ausprobiert, aber hat nicht geklappt. Dies hatte ich in 
dieser pdf-Datei gelesen und ausprobiert.

www.keil.com/appnotes/docs/apnt_241.asp

Also kann man sagen das es SPIFI nicht sein kann, da man sonst einen 
externen Flash an den Controller anschließen müsste?

von W.S. (Gast)


Lesenswert?

Jim Meba schrieb:
> Wenn man keine Ahnung hat...
> Der LPC4350 hat keinen internen Flash! Da muss also ein externer Flash
> Chip irgendwie programmiert werden.
>

Tja, dann mußt du dir eben ne kleine App scheiben, die du in den RAM 
laden kannst und die dann ihrerseits deinen externen seriellen 
NAND-Flash mit deinem Code beschreibt. Vorausgesetzt, dieses Board ist 
so gestaltet, daß es dort nur eben diesen per SPIFI mit dem µC 
verbundenen Flash gibt und daß so eine App nicht schon bei deinem 
Programmierzegs dabei ist. Wenn nicht, dann such mal, was denn sonst so 
an Flash auf dem Board ist.

So ähnliche Verhältnisse gab's auch bei der Lernbetty, die ebenfalls 
keinen internen Flash hatte, sondern wo selbiger als separater IC 
draußen dran war. Außer, daß der eingebaute Bootlader nur zum Laden 
eines weiteren Laders ausgelegt war, gab es keine wesentlichen 
Unterschiede zu einem internen Flash. Aber SPIFI ist was GANZ anderes.

W.S.

von Jim M. (turboj)


Lesenswert?

W.S. schrieb:
> Tja, dann mußt du dir eben ne kleine App scheiben,

Das ist ein Keil Board, und er benutzt die Keil Umgebung. Da sollten die 
Tools eigentlich komplett geliefert werden, zumal auch eine 
entsprechende Doku existiert.

Wende Dich mal an den Support. Könnte ja durchaus was kaputt sein.

von Max K (Gast)


Lesenswert?

Also da ich keinen internen Flash habe, so muss ich den Programmcode in 
den RAM oder externen Flash laden.

Nun habe ich bei den Target Options folgendes gewählt:

Utilities: Settings->Flash Download-> Programming Algorithm -> Add:

S29GL064N Dual Flash   16M   Ext. Flash 32-bit   MDK-Core

Wenn ich nun auf "Load" drücke, ist der erste Eindruck - es 
funktioniert! - jedoch nach kurzer Zeit kommt die Fehlermeldung:

Flash Timeout. Reset the Target and try it again.

und gleich danach:

Error: Flash Download failed - "Cortex-M4"

von Jürgen S. (starblue) Benutzerseite


Lesenswert?

Max K schrieb:
>
> Ich habe ein Projekt angelegt und möchte nun den Programmcode auf den
> MCB4300 laden. Wenn ich auf "Build" drücke, so bekomme ich keine
> Fehlermeldung (0 Error(s), 0 Warning(s)), falls ich anschließend auf
> "Load" drücke, so kommt die Fehlermeldung: "Error: Flash Download failed
> - Cortex-M4"" und im "Build Output" steht: "No Algorithm found for:
> 1A000000H - 1A000F07H, Erase skipped!"

1A000000H ist die Adresse vom bei dir nicht vorhandenen internen Flash,
das Löschen/Schreiben dort kann also nicht funktionieren.
Irgendwas ist an der Konfiguration des Projekts faul,
hattest du mal einen LPC4357 ausgewählt?

> Ich habe LPC18xx/43xx S25FL032 ausgewählt,

Das sollte richtig sein, das ist jedenfalls der Baustein auf dem Board, 
und er hängt an der SPIFI-schnittstelle.
(Ich habe ein MCB4300 mit LPC4357 benutzt, das also selbst noch nicht 
ausprobiert.)

Vielleicht setzt du das Projekt mal sauber neu auf?

von Matthias (Gast)


Lesenswert?

Ich könnte dir ein konfiguriertes Projekt schicken. Am besten wäre der 
externe 32-bit NOR Flash. Der ist am schnellsten. Wo kann ich dir das 
hin mailen?

von Max K (Gast)


Lesenswert?

Matthias schrieb:
> Ich könnte dir ein konfiguriertes Projekt schicken. Am besten wäre der
> externe 32-bit NOR Flash.

Vielen Dank erstmal. Nach langem ausprobieren, habe ich es nun 
hinbekommen. Ich habe nochmal das Blinky Programm ausprobiert und zwar 
konnte man dort zwischen Flash, RAM, externer Flash und SPIFI für den 
LPC4357 auswählen. Deshalb habe ich es anfangs nicht ausprobiert da es 
nicht für den LPC4350 gedacht ist, dachte ich mir. Aber mit dem externen 
Flash hat es nun geklappt.

Im endeffekt spielt es ja keine Rolle ob LPC4357 oder LPC4350, da ja bei 
beiden der externe Flash benutzt wird.

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.