Hallo Martin,
ich habe in den letzten Monaten zwei Projekte mit Spansion-Controllern
realisiert und mein Fazit ist: Hardware top, Software flop!
Angefangen habe ich mit dem FM4 Evaluierungsboard SK-FM4-U120-9B560. Der
integrierte Debugger funktioniert gut und das Board ist vielseitig
einsetzbar. Nach ersten positiven Erfahrungen habe ich ein eigenes Board
mit einem MB9BF566LPMC1-G-JNE2 entworfen. Der geringe
Beschaltungsaufwand, die 5V-Kompatibilität, der integrierte
UART/USB-Bootloader und die zahlreichen Schnittstellen und ADC-Kanäle
haben das Design sehr einfach gemacht. Die Probleme begannen dann mit
der Software. Hier ein paar Auszüge:
1. Ich habe die CoIDE verwendet und dabei auf die mitgelieferte Version
der Spansion "Peripheral Driver Library" (PDL) zurückgegriffen. Die von
Coocox bereitgestellte Version kennt allerdings das L-Package des
spezifischen Controllers nicht. Entsprechende Defines fehlen, sodass das
Projekt von Anfang an unkompilierbar ist. Allerdings lässt sich das
Problem durch Aktualisierung der entsprechenden Dateien recht leicht
beheben.
2. Die Treiber werden durch relativ komplexe und unzureichend
dokumentierte Structs konfiguriert. Dabei gibt es einige
Unstimmigkeiten. So gibt es beim CSIO/SPI-Treiber ein Flag zum
Konfigurieren der Polarität des Chipselect. Dieser Flag hat jedoch -
auch in der aktuellen Version von PDL - keinen Effekt. Die Polarität ist
immer positiv, also High beim Aktivieren des Slaves, was bei SPI alles
andere als der Regelfall ist... Alternativ kann der CS natürlich auch
durch die Software kontrolliert werden.
3. Häufig gibt es auch Rechtschreibfehler in den Structs wie etwa
"u8ComapreChannel" beim ADC, was den schlechten Qualitätseindruck der
Bibliothek noch verstärkt. Der ADC ist ein gutes Beispiel für die
schlechte Dokumentation. So muss man z.B. Felder wie enSamplingTimeN0,
enSamplingTime0, enSamplingTimeN1, enSamplingTime1, u8SamplingMultiplier
oder u8EnableTime mit möglichst sinnvollen Werten befüllen. Wer mag kann
sich gerne mal in der Dokumentation
(http://www.spansion.com/downloads/FM4-AN709-00003-E.pdf) die Seite 28
ansehen und versuchen daraus schlau zu werden...
4. Ein wenig geschockt war ich, als ich versucht habe die Funktionen zum
Zugriff auf den Work Flash in der Konfigurationsdatei freizuschalten.
Das Ergebnis waren wiedermal schwere Fehler beim Kompilieren. Der Grund:
die Datei work_flash.c ist voller Copy-Paste-Fehler! Die Quelle ist die
sehr verwandte Datei main_flash.c. Wenn man neben Work Flash auch die
Main Flash Funktionen aktiviert, so kompiliert der Code. Wenn man nur
Work Flash Funktionen aktivieren will, so muss man zunächst einige
#ifdefs korrigieren. Auch hier ist die Doku übrigens wieder äußerst
dürftig und das Fehlen einer Lesefunkton irritiert zunächst. Allerdings
kann man direkt mit "zurechtgebogenen" Pointern vom Flash lesen, sodass
das kein echtes Manko ist.
Beim googeln solcher Probleme findet man übrigens nichts. Teilweise
hatte ich das Gefühl der erste Mensch zu sein, der versucht einen
Spansion FM4 zu programmieren...
Es gibt zum PDL einige kleine Beispielprogramme, die allerdings kaum
kommentiert sind.
Schlussendlich habe ich alle für mich wichtigen Funktionen irgendwie ans
Laufen bekommen. Allerdings war das häufig nur durch Trail-and-Error und
dem Studium des PDL-Codes sowie der Dokumentation der Register möglich.
Am FM3 habe ich mich auch kurz versucht, aber der PDL-Vorgänger l3 ist
von noch schlechterer Qualität. Außerdem scheinen die FM3-Produkte gar
nicht mehr gepflegt zu werden. Es gibt auch keinen Support der Spansion
FM3 Prozessoren in CoIDE.
Ob die Situation jetzt nach der Übernahme durch Cypress besser wird muss
sich noch zeigen. Die PSoCs von Cypress sind ja hervorragend
dokumentiert. Ich hoffe darauf, denn die Hardware ist klasse!
Gruß,
Oliver