mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik C167CR - Ändern der Optionen und START167 zum Flashen


Autor: niels (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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...

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Carsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Seit wann gibt es C167CR mit Flash? Entweder du hast ein XC167 (da gibt 
es kein CR) oder du hast einen C167 als OTP vorliegen.

Autor: niels (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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...

Autor: Carsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: niels (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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...

Autor: Carsten St. (carsten)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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).

Autor: Max Murks (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Carsten St. (carsten)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: niels (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Ratschläge!

Werde das dann gleich mal ausprobieren.

mfg der niels...

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
 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...

Autor: niels (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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...

Autor: Max Murks (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein Unterschied zwischen, starten vom RAM (über Loader oder Debugger) 
und Flash ist:

   ggf. - Watchdog disablen !!!
        - CS-Speicherzuordnung
        - End of initialization
        - Interrupts freigeben !!!


        DISWDT
        MOV  SYSCON,   #0x0080
  MOV  ADDRSEL1, #0x406
  MOV  ADDRSEL2, #0x2008
  MOV  BUSCON0,  #0x48f
  MOV  BUSCON1,  #0x48f
        EINIT

        @_CALL( _main, R1)



       void main()
       {
          // InitHardware...
          Init();

          // Interrupts freigeben
          IEN=1;

          ....

          while(1);

       }


GRUNDSÄTZLICH!

1. Hardware analysieren
1.1 FLASH Größe, RAM Größe
1.2 Welche CS-Signale zu welchen Speicherbausteinen (CS0=FLASH; CS1=RAM)
?
1.3 Boot Info Hardware Codiert (P0H, P0L) über Pullup Widerstände

2. Software Konfiguration
2.1 SYSCON gemäß Hardware konfigurieren (siehe Datenblatt)
2.2 BUSCONX gemäß Hardware konfigurieren (siehe Datenblatt)
2.3 ADDRSELX gemäß Hardware konfigurieren (siehe Datenblatt)

3. Compiler/Linker/Locater Einstellungen
3.1 ROM-Bereich festlegen (LocMemRom=0h-01FFh,10000h-2FFFFh)
3.2 RAM-Bereich festlegen (LocMemRam=0F000h-0F1FFh, 30000h-3FFFFh)

Kurz gesagt:
Hardware, Firmware und Linker/Locater müssen aufeinander abgestimmt
werden!




Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.