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

Re: Flashspeicher löschen Kategorie: Progr. Assembler, TaskingTools, OS (von Thomas, http://www.tho-bai.de - 23.09.2004 16:32)
Als Antwort auf Re: Flashspeicher löschen von Gordon Klimm - 22.09.2004 13:13
Ich nutze:
C-Control II Unit, CC2-Application-Board
Vielen Dank für eure Hilfe. Hatte leider noch keine Zeit mir die disassemblierten Codes anzuschauen, werde das aber sicher
bald tun. Ich möchte prinzipiell auch nicht den vorhandenen Bootloader modifizieren, sondern meinen
eigenen schreiben um an die Grundlagen der Mikrocontrollerprogrammierung zu gelangen. Die Einteilung
in Primary und Secondary Loop ist somit sicherlich nur ein Aspekt den man beachten muss, wenn man
den genauen Ablauf verstehen will. Dass die eigentliche boot.hex dann mit einmal gesendet wird ist mir klar.
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. Ich habe zur Kontrolle des Ablaufs an verschiedenen
Stellen Ausgaben auf eine 8-LED-Leiste an Port P1L eingefügt. Diese zeigen mir den korrekten Ablauf,
nur das nach dem Laden des eigentlichen Programms nichts passiert. Ich habe auch noch keine Funktion
zum Laden von Hex-Files eingefügt sondern arbeite erstmal nur mit Binary-Files. Hier mal mein
bisheriger Code:
_____________________________________________________________________________________________
Primary Loop
_____________________________________________________________________________________________

        ;Code fuer LED
        mov P1L, #04
        extr #1
        mov DP1L, FFh
        ;eigentlicher Beginn
        mov   R0, #FA60h        ;enhaellt Adresse des
                                ;naechsten Bytes
W0:
        jnb   S0RIR, W0         ;warten, bis ein Byte
                                ;empfangen wurde
        movb  [R0], S0RBUF      ;Byte speichern
        bclr  S0RIR             ;Receive-Flag zuruecksetzen
        cmpi1  R0, #FAD3h       ;vergleiche ob Ende
                                ;erreicht+incrementiere R0
        jmpr  cc_NE, W0         ;Springe zu W0 wenn
                                ;R0!=FAD3h
        nop                     ;"Auffuellen" der 32 Byte

_____________________________________________________________________________________________
Secondary Loop:
_____________________________________________________________________________________________
; (0xFA60)
;LEDs
mov     P1L, #33
extr    #1
mov     DP1L, 0FFh
nop

; --- Bus-Konfiguration initialisieren ------------------------------------------
mov     SYSCON, #7800h
nop
mov     SYSCON, #7800h
nop
;Kontroll-Led
mov P1L, #AA
; --- DPPx initialisieren -------------------------------------------------------
mov     DPP0, #0
mov     DPP1, #1
mov     DPP2, #2
mov     DPP3, #3

; --- ADDRSEL1 initialisieren ---------------------------------------------------
mov     ADDRSEL1, #1008h
; --- set up WR# as an output -----------------------------------------------
bset    P3.13             ; set WR#
bset    DP3.13            ; make WR# an output

; --- set up serial port ----------------------------------------------------
bset    DP3.10
mov     S0CON, #8011h   ; enable, 8N1, asynchron
mov     S0BG,  #01h             ; 19200Baud
mov     S0TIC, #0
mov     S0RIC, #0
mov     S0EIC, #0


; --- Ende der Systeminitialisierung --------------------------------------------
DISWDT          ;disable watchdog
EINIT           ;Ende der Initialisierung
;Kontroll-LED
mov P1L, #BB


; --- Code an Adresse 0 laden ---
mov     R0, #0
mov P1L, #04            ;Kontroll-LED
W0:
jnb     S0RIR, W0       ;Auf Zeichen warten
mov     P1L, #08                ;Kontroll-LED
movb    [R0], S0RBUF    ;In Speicher schreiben
bclr    S0RIR
mov     P1L, #02                ;Kontroll-LED
cmpi1   R0, #0Ch        ;12 Byte lesen
jmpr    cc_NE, W0
mov P1L, #01            ;Kontroll-LED
;0x0D 0xFF             ; ENDLOSSCHLEIFE!!! - zum Testen ob
                        ;Secondary Loop vollständig durchlaufen wurde
nop
SRST                    ;Software-Reset

_____________________________________________________________________________________________
Das Hauptprogramm, hier zum Test nur ein kurzes Programm das alle LEDs an P1L leuchten lässt.
_____________________________________________________________________________________________

mov     P1L,#06Ch
extr    #1
mov     DP1L,#0FFh
endl:   jmp     endl


Wie gesagt, mit Hilfe der einzelnen LED beschaltungen habe ich mich dann langsam soweit vorangetastet
bis der Code bis zum Ende der Secondary Loop lief. Das eigentliche Hauptprogramm sollte sich nun
an Adresse 0 befinden und eigentlich nach dem Software-Reset in der Secondary Loop abgearbeitet werden.
Es passiert jedoch nichts, au�er, dass offensichtlich schon ein Reset ausgeführt wird, da auch die
letze von mir ausgegebene Belegung an P1L nicht mehr aktiv ist. Dies lässt darauf schlie�en, dass
ein Reset durchgeführt wurde, da beim Reset alle Ports auf Eingang gesetzt werden und somit keine
der LEDs mehr leuchten kann.

Vielen Dank nochmal für eure Hilfe!!!

GruÃ?

Thomas

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. Werde mir das bei nächster Gelegen-
heit mal genauer anschauen... Hoffe ich komme heute noch dazu. Vielleicht sieht aber auch jemand
von euch meinen Fehler.
Wie könnte ich z.B. überprüfen, dass mein Code auch tatsächlich an Adresse 0 im Segment 0 steht?



Meine Seite: http://www.tho-bai.de


    Antwort schreiben


Antworten:

Re: Flashspeicher löschen (von André H. - 23.09.2004 19:02)
    Re: Flashspeicher löschen (von Thomas - 25.09.2004 15:25)
        Re: Flashspeicher löschen (von André H. - 26.09.2004 9:29)