PORTAL
                                   FORUM
                                UPLOAD
                             UŻYTKOWNICY
                          FAQ   BBCode
                       STATYSTYKI
                    DOWNLOAD

Serwisanci GSM

 

forum.support-gsm.pl

 Szukaj • Grupy • Rejestracja • Zaloguj

Poprzedni temat :: Następny temat
Troche o DCT3
Autor Wiadomość

tom

Dołączył: 23 Cze 2007
Posty: 49
Skąd: Kamienna Góra/Wawa

Wysłany: 2007-06-23, 23:03   Troche o DCT3

Temat w sumie nie powinien zaszkodzic bo DCT3 robia wszyscy, ale tutaj bedzie z innej beczki... Dla bardziej ciekawych i wnikliwych - jak to wszystko dziala.
Narazie mam lekki syf na HDD i nie moge wszystkiego znalezc, ale postaram sie tutaj umiescic troche swoich starych kodow zrodlowych odpowiedzialnych za flashowanie, liczenie sum kontrolnych, naprawe EEPROM-u protokolik komunikacji i wiele innych spraw ;)

Na poczatek sumy kontrolne i podzial flash-a na MCU i PPM

ASM - uzyty stary PMODE Eclipse Operating System - ale wiekszosc procek latwa w analizie :)

Kod:

;********************************************************************
;***                       NOKIA DCT3 Checksum TEST               ***
;***             v 1.0b by ToM/Urmet Developers 10.08.2002        ***
;********************************************************************

.386
CODE32 SEGMENT PUBLIC PARA USE32 'CODE'
ASSUME  CS:CODE32,DS:CODE32,ES:CODE32

INCLUDE EOS.INC  ;EOS - Eclipse Operating System




filesize    dd ?
Bufor1        dd 0


mcu_ver    db 200 dup (0)
ppm_ver    db 200 dup (0)
ppm_pack    db 0,13,10,0,0

ppm_base    dd 0
ppm_end        dd 0
mcu_end        dd 0

_pack_x    db 'x',0


cyfry        db '0123456789ABCDEF'
Cyfra        db '00000000h$'
PlikDat        db 'Flash.bin',0
PlikMcu        db 'mcu.bin',0
PlikPPM        db 'ppm.bin',0

Info        db 13,10,'MCU & PPM Test ',13,10,13,10,0,0
Msg1        db 'Adres Pliku : ',0,0
Msg2        db 'Rozmiar Pliku :',0,0
Msg3        db 'MCU Software version : ',0,0
Msg4        db 'MCU Flash Chksum...OK.',13,10,0,0
Msg5        db 'PPM Not found!',13,10,0,0
Msg6        db 'PPM Software version : ',0,0
Msg7        db 'PPM Languge Pack : ',0,0
Msg8        db 'PPM Chksum...OK.',13,10,0,0
Msg9        db 'MCU Flash Chksum (Temp)...OK.',13,10,0,0
err1        db 'BAD!',13,10,0,0
err2        db 'Bad MCU Flash Chksum!',13,10,0,0
err3        db 'Bad PPM Block Chksum!',13,10,0,0
err4        db 'MCU Flash Chksum (Temp)..BAD!',13,10,0,0
br        db 13,10,0,0


;******************************* MACRA i Inne Procki **********************

Pisz    MACRO Napis
    pushad
    mov    ah,9
    mov    edx,O Napis
    int    21h
    popad
    ENDM


PiszHex    MACRO Liczba
    pushad
    mov    esi,O cyfry
    mov    edi,O cyfra

    mov    eax,Liczba
    push    eax
    ror    eax,16
    xor    ebx,ebx
    shr    ah,4
    mov    bl,ah
    mov    cl,B [esi+ebx]
    mov    B [edi],cl
    inc    edi
    pop    eax
    push    eax
    ror    eax,16
    xor    ebx,ebx
    shl    ah,4
    shr    ah,4
    mov    bl,ah
    mov    cl,B [esi+ebx]
    mov    B [edi],cl
    inc    edi
    pop    eax
    push    eax
    ror    eax,16
    xor    ebx,ebx
    shr    al,4
    mov    bl,al
    mov    cl,B [esi+ebx]
    mov    B [edi],cl
    inc    edi

    pop    eax
    push    eax
    ror    eax,16
    xor    ebx,ebx
    shl    al,4
    shr    al,4
    mov    bl,al
    mov    cl,B [esi+ebx]
    mov    B [edi],cl
    inc    edi

    pop    eax
    push    eax
    xor    ebx,ebx
    shr    ah,4
    mov    bl,ah
    mov    cl,B [esi+ebx]
    mov    B [edi],cl
    inc    edi

    pop    eax
    push    eax
    xor    ebx,ebx
    shl    ah,4
    shr    ah,4
    mov    bl,ah
    mov    cl,B [esi+ebx]
    mov    B [edi],cl
    inc    edi

    pop    eax
    push    eax
    xor    ebx,ebx
    shr    al,4
    mov    bl,al
    mov    cl,B [esi+ebx]
    mov    B [edi],cl
    inc    edi

    pop    eax
    xor    ebx,ebx
    shl    al,4
    shr    al,4
    mov    bl,al
    mov    cl,B [esi+ebx]
    mov    B [edi],cl
    inc    edi

    mov    ah,9
    mov    edx,O Cyfra
    Int    21h
    popad
    ENDM




TextColor    MACRO ColNr
        push    ecx
        push    eax
        push    esi
        mov    ah,09
        mov    al,32
        mov    bl,ColNr
        mov    bh,0
        mov    cx,80
        DosInt    10h
        pop    esi
        pop    eax
        pop    ecx
        ENDM

;****************************** Wlasciwy Program ****************

Start32:

    call    debug
    mov    ax,0a55ah
    xchg    al,ah
    mov    bx,0a55ah
    xchg    bl,bh
    cmp    ax,bx
    jz    ok1__
    jmp    zle1
ok1__:
    cmp    ax,0a55ah
    je    zle1
    nop
    nop
    nop
    nop
zle1:



    Textcolor 9
    Pisz    Info
    Textcolor 7

StartProgramu:
;Rezerwuj pamiec na nowy plik


    mov    ah,Load_External_File
    mov    edx,O PlikDat
    Int_Eos
    jnc    PlikOK
    jmp    Koniec
PlikOk:
    mov    Bufor1,eax
    mov    filesize,ecx
    pisz    Msg1
    piszhex    eax
    pisz    br
   
    pisz    Msg2
    piszhex    ecx
    pisz    br

;ok pobieranie danych do testu

    pisz    Msg3

    mov    esi,Bufor1

    mov    eax,D [esi+3ch]
    cmp    eax,-1
    je    Error1
    xchg    al,ah
    ror    eax,16
    xchg    al,ah
    sub    eax,200000h
    jc    Error1

    cmp    eax,filesize
    ja    Error1

    mov    eax,D [eax+esi]
    cmp    eax,-1
    je    Error1
    xchg    al,ah
    ror    eax,16
    xchg    al,ah
    sub    eax,200000h
    jc    Error1

    cmp    eax,filesize
    ja    Error1
    add    esi,eax

;ok plik ok w esi mamy wersje softu MCU
;Kopiowanie stringu

    mov    edi,O mcu_ver

    xor    ebx,ebx
Kopiuj1:
    mov    al,B [esi+ebx]
    cmp    al,0ah
    jne    Ok1
    mov    al,32
Ok1:
    mov    B [edi+ebx],al
    inc    ebx
    cmp    ebx,32
    jne    kopiuj1

;Wyswietl wersje MCU   
    pisz    mcu_ver
    pisz    br

;Sprawdz Sume kontrolna

    mov    esi,Bufor1
    mov    ecx,0
    mov    ebx,0

nex_chk2:
    imul    edx,ebx,6

    mov    eax,[esi+edx+24h]
    xchg    al,ah
    ror    eax,16
    xchg    al,ah
    shr    eax,8
    cmp    eax,0ffffffh
    je    chk1

    mov    edx,[esi+edx+27h]
    xchg    dl,dh
    ror    edx,16
    xchg    dl,dh
    shr    edx,8

    inc    ebx

    cmp    eax,edx
    jg    chk1

    sub    edx,eax

    sub    eax,200000h
    jc    chk1

    push    ecx
    mov    ecx,eax
    add    ecx,edx
    cmp    ecx,filesize
    pop    ecx
    ja    chk1

    shr    edx,1
    inc    edx

    push    ebx

nex_chk1:

    mov    bx,W [eax+esi]
    xchg    bl,bh
    add    cx,bx
    add    eax,2
    dec    edx
    jne    nex_chk1

    mov    ppm_base,eax

    pop    ebx

chk1:
    cmp    ebx,2
    jae    chk2
    cmp    eax,0ffffffh
    jne    nex_chk2
chk2:
    mov    bx,W [esi+22h]
    xchg    bl,bh

    cmp    cx,bx
    jz    ok_chk

;Zla suma Kontrolna
    pisz    Err2
    jmp    Koniec

;Suma kontrolna OK.
ok_chk:
    pisz    Msg4

;-----
nex_ppm_f:
    mov    ebx,ppm_base
    mov    mcu_end,ebx
    mov    esi,Bufor1
    mov    eax,[ebx+esi]
    lea    esi,[esi+ebx+4]
    cmp    eax,'MPP'
    je    ppm_1
    cmp    eax,'VMPP'
    sub    esi,1
    je    ppm_1

    mov    eax,ppm_base
    mov    ax,0
    add    eax,10000h
    mov    ppm_base,eax
    cmp    eax,filesize
    jbe    nex_ppm_f

    pisz    Msg5
    jmp    Koniec

bad_bl_chk:
    pisz    err3
    jmp    Koniec


ppm_1:
    pisz    Msg6


;ok plik ok w esi mamy wersje softu PPM
;Kopiowanie stringu

    mov    edi,O ppm_ver

        xor    ebx,ebx
Kopiuj2:
    mov    al,B [esi+ebx]
    cmp    al,0ah
    jne    Ok2
    mov    al,32
Ok2:
    mov    B [edi+ebx],al
    inc    ebx
    cmp    ebx,32
    jne    kopiuj2

;Wyswietl wersje MCU   
    pisz    ppm_ver
    pisz    br

    pisz    Msg7


    mov    ebx,ppm_base
    mov    esi,Bufor1
    lea    esi,[esi+ebx+28h]
    jmp    find_p0

bd_pck:
    lea    esi,_pack_x
    jmp    end_pck

find_p0:
    lodsb
    cmp    al,'A'
    jb    bd_pck
    cmp    al,'z'
    ja    bd_pck

    lodsb
    cmp    al,0
    jne    bd_pck
    sub    esi,2

end_pck:
    mov    al,[esi]
    mov    ppm_pack,al

    pisz    ppm_pack

;----------------------------

    mov    esi,ppm_base
    add    esi,bufor1
    add    esi,2ch

;Decode Block

nex_tst_ppm:
    call    get_test_block
    jc    end_of_blk
    jnz    bad_bl_chk

    add    esi,ecx
    jmp    nex_tst_ppm

end_of_blk:
    pisz    Msg8



    mov    eax,esi
    add    eax,40h
    sub    eax,bufor1
   
    mov    ax,0
    add    eax,10000h

    mov    ecx,filesize
    sub    ecx,eax   
    jnc    ppm_zs
    mov    ecx,0

ppm_zs:
    shr    ecx,16
    inc    ecx

    mov    esi,bufor1
    mov    ax,W [esi+22h]
    add    esi,filesize
    sub    esi,6

nex_ppm_zs:

    cmp    ax,[esi]
    jz    ok_chk1
    sub    esi,10000h
    loop    nex_ppm_zs

    pisz    Err4
    jmp    Koniec

ok_chk1:
    add    esi,6
    sub    esi,bufor1
    mov    ppm_end,esi

    pisz    Msg9

;******************** Zapis Plikow ****************

;Mcu


    mov    ah,Write_External_File
    mov    edx,O PlikMCU
    mov    esi,Bufor1

    mov    ecx,mcu_end
    Int_Eos


    mov    ah,Write_External_File
    mov    edx,O PlikPPM
    mov    esi,ppm_base
    add    esi,bufor1

    mov    ecx,ppm_end
    sub    ecx,ppm_base
    Int_Eos

;Test
    mov    esi,bufor1
    add    esi,40h
    mov    ecx,ppm_end
    shr    ecx,6
    dec    ecx
;tu box liczy sygnature

    shl    ecx,1
    xor    ebx,ebx

nex_chk1z:
    xor    eax,eax
    mov    al,[esi]
;    call    swap_eax

    add    ebx,eax
    mov    al,[esi+1]
;    call    swap_eax

    add    ebx,eax
    add    esi,20h
    loop    nex_chk1z

    piszhex    ebx
    pisz    br
    not    ebx
    piszhex    ebx
    pisz    br




   
    jmp    Koniec











get_test_block:
    cmp    [esi+14h],dword ptr 0
    je    _dumfile

    mov    eax,[esi]    ;chksum
    call    swap_eax
    mov    edx,eax
   
    mov    eax,[esi+4]    ;block size
    call    swap_eax

    push    eax
    push    esi
    lea    ecx,[eax-4]
    shr    ecx,2
    add    esi,4

    xor    ebx,ebx
   

nex_bl_ch:
    lodsd
    call    swap_eax
    add    ebx,eax
    loop    nex_bl_ch
    cmp    ebx,edx
    pop    esi
    pop    ecx
    clc
    ret
_dumfile:
    stc
    ret

swap_eax:
    xchg    al,ah
    ror    eax,16
    xchg    al,ah
    ret




Koniec:
    TextColor 7
    mov    ax,4c00h    ;Zakoncz Program
    int    21h                 


Error1:
    pisz err1
    jmp Koniec





            CODE32 ENDS

            END
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Nie możesz ściągać załączników na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Mapa Forum

 Serwisanci GSM

Powered by phpBB modified by Przemo © 2003 phpBB Group 

 
statystyka

gastrolog warszawa - Gry Wyścigowe - Praca - merten - hotele kraków - Kredyt mieszkaniowy