Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Wichtig: Bevor Du wegen einem Problem mit der CC2 postest, stelle sicher, daß Du
die neueste OS-Version, die neuseste Compiler-DLL und die neuesten Modulversionen benutzt!
Beachte, daß sich auf der CD zur CC2-Unit/Station auch jetzt noch die ältesten Dateien befinden!
Es gelten folgende Anleitung und Regeln: Regeln CC2Net.de-Forum
Zurück zum Artikel  (Blaue Felder sind Pflichtfelder)


Name:   UserID: 
 E-Mail:
Kategorie
Betreff
Homepage:
Link-Titel:
Link-URL:
Cookie für Name, UserID, E-Mail, Homepage-URL setzen
(Erspart die Neueingabe bei Beiträgen und Antworten)
(Zum Löschen des Cookies hier klicken)
Ich nutze:
C-Control II Unit
C164CI-Controllerboard
C-Control II Station
CCRP5 mit CC2-Unit (Conrad Roboter)
CC2-Application-Board
CC2-StarterBoard
CC2-ReglerBoard
eigenes Board
original OS     OSOPT_V2     OSOPT V3.0 OSOPT V3.1

Kommentar:
Einfügen von HTML im Kommentar:

Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a>
Bild einfügen: <img src="BILDURL">
Text formatieren: <b>fetter Text</b>  <i>kursiver Text</i> <u>unterstrichener Text</u>
Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b>
C2 Quellcode formatieren: <code>Quellcode</code>
ASM Quellcode formatieren: <asm>Quellcode</asm>
(Innerhalb eines Quellcodeabschnitts ist kein html möglich.)
Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst !  

> Hallo Thomas, > > > Ich möchte prinzipiell auch nicht den vorhandenen Bootloader modifizieren, sondern meinen > > eigenen schreiben um an die Grundlagen der Mikrocontrollerprogrammierung zu gelangen. > > Das erklärt die Fragen. ;-) > > > Es geht mir hier auch mehr um theoretisches Verständnis der Abläufe. Dies denke ich habe ich mir auch > > mittlerweile schon angeeignet (aber Danke für den Hinweis mit dem SRAM ;-)). Ich habe meinen Bootloader > > daher in mehrere Files unterteilt um die Abläufe klarer darstellen zu können. Ich kann auch schon > > die Primary und Secondary Loop einwandfrei übertragen. Auch mein eigentliches Programm wird dann > > scheinbar ohne Fehler geladen, jedoch nicht ausgeführt. > > Das stimmt so nicht. Dein Programm wird zwar empfangen, jedoch nicht in den Flash gespeichert. > Man kann nicht einfach per <asm>mov</asm> Daten in den Flash schreiben. > Dazu müssen vorher immer bestimmte Sequenzen ausgeführt werden, ähnlich wie das Löschen > des Flash. > Das sind die Sequenzen im Boot-Loader-Listing mit den ganzen 0xAAAA und 0x5555 usw. . > Am besten schaust Du Dir das einmal im OS-Listing an. > Die Routine befindet sich an Offset 0x25e4, die Löschroutine an Offset 0x2570. > Beide werden vor dem Ausführen in den internen RAM des C164CI kopiert. > Die Löschroutine erwartet die Segmentnummer in R12. > Die Schreibroutine erwartet ebenfalls die Segmentnummer in R12, sowie die Adresse > in R13 und das Datenword in R14. > Die Schreibroutine prüft nach jedem geschriebenen Word, ob dieses korrekt geschrieben > wurde. Wenn nicht, gibt's einen "BURN ERR". > > > <hr> > > Das Hauptprogramm, hier zum Test nur ein kurzes Programm das alle LEDs an P1L leuchten lässt. > > <hr> > > <asm> > > mov P1L,#06Ch > > extr #1 > > mov DP1L,#0FFh > > endl: jmp endl > > </asm> > > Beachte, daß Du nicht einfach ab Adresse 0 das Programm schreiben darfst ! > Am Anfang des Speichers eines µControllers befinden sich die Interruptvektoren. > Der Interrupt-Vektor an Addr. 0 ist der Reset-Vektor. > Von diesem springt man zum eigentlichen Programm. > Beim OS der CC2 wäre das ein <asm>JMPS 0x2226</asm>. > Wichtig ist nur, daß das Programm in Segment 0 erst hinter den Interruptvektoren anfängt, > und Du dorthin vom Rest-Vektor springen mußt. > Prinzipiell darf das Programm in Seg0 erst ab Offset 0x200 beginnen. > Alles dafür ist für Interruptvektoren reserviert. > > Mehr dazu erfährst Du aus dem Manual zum C164 ab Kapitel 5 "Interrupt and Trap Functions" > und über das Listing des OS. > Das Listing des OS ist wirklch eine sehr hilfreiche Lektüre ;-), auch wenn > es vom Stand des letzten original OS ist. ein kommentiertes Listing zu OSOPT V3.x > ist aber in Arbeit ... (Ich weiß allerdings nicht wann ich mit dem Kommentieren fertig werden.) > > > > PS: Habe auch grad bei einem kurzen Blick auf den disassemblierten Code gesehn, dass dort andere > > Einstellungen für beispielsweise das SYSCON SFR gemacht wurden. > > Diese Einstellungen betreffen u.a. die Speicherkonfiguration des C164CI. > Ich würde diese 1:1 übernehmen. ;-) > > > > Wie könnte ich z.B. überprüfen, dass mein Code auch tatsächlich an Adresse 0 im Segment 0 steht? > > Indem man nach jedem geschriebenen Wert die Speicherzelle wieder ausließt und via RS232 > als Echo zurücksendet. > So, wie ich es in der boot.hex erkennen kann, wird dies dort ebenfalls gemacht. > (Zumindest bekomme ich beimLaden ein Echo ;-) ) > > MfG André H.
Dateianhang: (.gif, .png., .jpg, .zip, .rar)
max. 256kB
max. 256kB