hallo zusammen.
Ich habe in µVision eine Motorsteuerung geschrieben die auch ganz gut
funktioniert. Jetzt geht es darum, das Programm in den Flash zu brennen
und zwar so dass es funktioniert.
Ich benutze ein EVA-Board von ertec mit einem Infineon C167CR-16F mit
128kB internem Flash. Auf dem board sind zwei 1MBit RAM-Bausteine. Zum
Flashen benutze ich memtool3 von Infineon.
Ich weiss, das ich etwas in den "Options for Target" und/oder in der
START167.A66 ändern muss, aber was, oder wie ich am besten an das
Problem herangehe, ist mir im Moment noch schleierhaft.
Kann mmir da jemand helfen oder nen Tip geben?!
mfg der niels...
Hi,
ich hab mal mit den Dingern was machen dürfen (fürs Studium). Um da wat
in den Flash zu bekommen, musste man die Adressbereiche entsprechend
einstellen (war im Datenblatt zum Eva-Board kurz beschrieben) und es
muss eine hex-file generiert werden, die dann mit einem Extratool in den
Flash geladen wurde. Mit den Einstellungen für den Monitor oder
Debugg-Modus hat es nicht funktioniert.
Vielleicht helfen dir die Sachen als Stichpunkte weiter...
Gruß,
Gast.
hallo.
@gast:
die speicherbereiche - genau das ist mein problem. was muß ich wo wie
einstellen?!
@Carsten
du bist nicht der erste der das fragt, aber ja - der C167CR-16F hat 128
kB Flash.
http://www.keil.com/dd/docs/datashts/infineon/d167r16f.pdf
und was ist OTP?
mfg der niels...
OTP heißt OneTimeProgramming, also nur einmal programmierbar.
O.K. das Teil ist ja noch aus der Siemens-Zeit, kein Wunder findet man
bei Infineon keine Info drüber.
Die Einstellungen der Speicherbereiche sind in den Projektsettings
(glaube bei Linker) einzustellen.
aber was muss ich wie ändern?
soweit ich mich da jetzt reingelesen habe, denke ich dass in SYSCON und
einem BUSCON sich was ändern muss, oder irgendwas mit Chipselect. auch
die ROM- und RAM-Bereiche sind doch jetzt sicher woanders. und wo steht
eigentlich die INTERRUPT-VECTOR-Tabelle?
mfg der niels...
Du musst den EA Pin auf 1 legen, somit wird vom internen Speicher
gestartet und kein externen Bus konfiguriert.
Wenn du unter target (in den Projketsettings) "use on-chip ROM"
auswählst werden dir die Bereiche beim Linker-Locator richtig
eingetragen. Dann musst du ggf. nur noch die Resettabelle (L166 Misc)
anpassen - steht im Datenblatt wo die liegt (typischerweise ab dem 1.
Byte im Programmspeicher - Resetvektor).
Dieses Thema wurde schon ein paar mal hier durchgekaut, einfach mal die
Suchfunktion verwenden.
> Seit wann gibt es C167CR mit Flash?
Ich benutze Flash Derivate seit ca. 5 Jahren.
O.K. man lernt nie aus, aber die sind nicht mehr bei Infineon
erhältlich, oder lieg ich auch da falsch.
Sind zumindest nicht mehr auf der Webseite erwähnt, noch in der
aktuellen Preisliste.
niels (Gast)
wenn du im debugging-modus vom ram aus arbeitest, simuliert ein ram
bereich das flash. wenn du das flash nun effektiv laden möchstest, musst
du hardwaremässig nix ändern (wie einige geschrieben haben).
Was anders sein muss, sind die Target Options (Speicherbereiche die du
auswählst - standartwerte Rom von 0x0 aus, ram von 0x100000 ausgehend
(nicht vergessen unter L166 Misc -> User Selections die Einträge
anzupassen)
beim flashen solltest du das Start167.A66 von keil zusätzlich
verewenden, damit der controller in einem definierten zustand ist
(kannst es auch beim debuggen drinlassen, aber hat dort null wirkung),
wobei dieses je nach deveriat angepasst werden muss, falls es probleme
gibt werden sie wohl hier sein...
es funktioniert nur soweit, dass die kontroll-led erlischt, was soviel
bedeutet wie EINIT-command ausgeführt.
ich hab jetzt wieder die orginal START167.A66 von keil eingefügt.
meine "Options for Target" sehen so aus:
TARGET:
(x) Use On-chip ROM
(x) Use On-chip CAN+XRAM
Memory Model: Small
ROM - 0x000000 - 0x8000
RAM - 0x100000 - 0x8000
und der Linker-Controll-String:
TO "29_03_2007"
RESERVE (8H-0BH, 0ACH-0AFH, 0x3E900-0x3EAFF)
VECTAB (0x000000)
CLASSES (ICODE (0x0-0x7FFF), NCODE (0x20000-0x2FFFF),
FCONST (0x0-0x7FFF, 0x18000-0x2FFFF), HCONST (0x0-0x7FFF,
0x18000-0x2FFFF),
XCONST (0x0-0x7FFF, 0x18000-0x2FFFF), NCONST (0x4000-0x7FFF),
NDATA (0x100000-0x103FFF), NDATA0 (0x100000-0x103FFF),
SDATA (0xF600-0xFDFF), SDATA0 (0xF600-0xFDFF),
IDATA (0xF600-0xFDFF), IDATA0 (0xF600-0xFDFF),
FDATA (0x100000-0x107FFF), FDATA0 (0x100000-0x107FFF),
HDATA (0x100000-0x107FFF), HDATA0 (0x100000-0x107FFF),
XDATA (0x100000-0x107FFF), XDATA0 (0x100000-0x107FFF))
CINITTAB (0x18000-0x2FFFF)
ich hoffe es kennt sich jemand mehr aus als ich und hat eine idee wo der
fehler liegen könnte
mfg der niels...