- 12V Akku mit 280 Ah bauen         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 22

Thema: Variablenproblem mit Printbin

  1. #11
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Anzeige

    Powerstation Test
    Weiß schon, nur macht er Streß, wenn man downloaden will. War mir aber wurst, so arg isses ja auch nicht, und wenn du was selber programmierst, weißt du erstens wenigstens, warum du abstürzt, und zweitens, man kann weiterbasteln und sich das Zeugs so herrichten, wie man es braucht.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  2. #12
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    28.03.2004
    Beiträge
    185
    disavr.exehttp://www.mikrocontroller.net/attac...471/disavr.exe verwendet zwar Labels, dafür ist das Ergebnis aber nackter ASM-Code (ohne Quelltext-Bezug).

    man tauscht ein Problem gegen das andere...

  3. #13
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Sieh da, da klappt das runterladen. Danke.
    Schau'n wir mal:
    Output DisAVR.eXE
    Code:
    	  ; Atmel AVR Disassembler v1.30
    	  ;
             .cseg
             .org	0
    
                                  ; 0000 940C
              nop                 ; 0001 002A
              reti                ; 0002 9518
              nop                 ; 0003 0000
              reti                ; 0004 9518
              nop                 ; 0005 0000
              reti                ; 0006 9518
              nop                 ; 0007 0000
              reti                ; 0008 9518
              nop                 ; 0009 0000
              reti                ; 000A 9518
              nop                 ; 000B 0000
              reti                ; 000C 9518
              nop                 ; 000D 0000
              reti                ; 000E 9518
              nop                 ; 000F 0000
              reti                ; 0010 9518
              nop                 ; 0011 0000
              reti                ; 0012 9518
              nop                 ; 0013 0000
              reti                ; 0014 9518
              nop                 ; 0015 0000
              reti                ; 0016 9518
              nop                 ; 0017 0000
              reti                ; 0018 9518
              nop                 ; 0019 0000
              reti                ; 001A 9518
              nop                 ; 001B 0000
              reti                ; 001C 9518
              nop                 ; 001D 0000
              reti                ; 001E 9518
              nop                 ; 001F 0000
              reti                ; 0020 9518
              nop                 ; 0021 0000
              reti                ; 0022 9518
              nop                 ; 0023 0000
              reti                ; 0024 9518
              nop                 ; 0025 0000
              reti                ; 0026 9518
              nop                 ; 0027 0000
              reti                ; 0028 9518
              nop                 ; 0029 0000
              ldi    r24, 0x5F    ; 002A E58F
              out    SPL, r24     ; 002B BF8D
              ldi    YL, 0x40     ; 002C E4C0
              ldi    ZL, 0x38     ; 002D E3E8
              mov    r4, ZL       ; 002E 2E4E
              ldi    r24, 0x08    ; 002F E088
              out    SPH, r24     ; 0030 BF8E
              ldi    YH, 0x08     ; 0031 E0D8
              ldi    ZH, 0x08     ; 0032 E0F8
              mov    r5, ZH       ; 0033 2E5F
              ldi    ZL, 0xFE     ; 0034 EFEE
              ldi    ZH, 0x07     ; 0035 E0F7
              ldi    XL, 0x60     ; 0036 E6A0
              ldi    XH, 0x00     ; 0037 E0B0
              clr    r24          ; 0038 2788
    AVR0039:  st     X+, r24      ; 0039 938D
              sbiw   ZL, 0x01     ; 003A 9731
               brne  AVR0039      ; 003B F7E9
              ldi    r24, 0x33    ; 003C E383
              out    UBRR, r24    ; 003D B989
              ldi    r24, 0x00    ; 003E E080
              out    ?0x20?, r24  ; 003F BD80
              ldi    r24, 0x18    ; 0040 E188
              out    UCR, r24     ; 0041 B98A
              clr    r6           ; 0042 2466
              ldi    r24, 0x04    ; 0043 E084
              sts    0x0060, r24  ; 0044 9380 0060
              ldi    r19, 0x0E    ; 0046 E03E
              ldi    XL, 0x61     ; 0047 E6A1
              ldi    XH, 0x00     ; 0048 E0B0
                                  ; 0049 940E
              nop                 ; 004A 0052
              ldi    r19, 0x01    ; 004B E031
              ldi    XL, 0x60     ; 004C E6A0
              ldi    XH, 0x00     ; 004D E0B0
                                  ; 004E 940E
              nop                 ; 004F 0052
              cli                 ; 0050 94F8
    AVR0051:  rjmp   AVR0051      ; 0051 CFFF
    AVR0052:  ld     r24, X+      ; 0052 918D
              rcall  AVR0057      ; 0053 D003
              dec    r19          ; 0054 953A
               brne  AVR0052      ; 0055 F7E1
              ret                 ; 0056 9508
    AVR0057:  sbis   USR, 5       ; 0057 9B5D
              rjmp   AVR0057      ; 0058 CFFE
              out    UDR, r24     ; 0059 B98C
              ret                 ; 005A 9508
    AVR005B:  sbiw   ZL, 0x01     ; 005B 9731
               brne  AVR005B      ; 005C F7F1
              ret                 ; 005D 9508
              set                 ; 005E 9468
              bld    r6, 2        ; 005F F862
              ret                 ; 0060 9508
              clt                 ; 0061 94E8
              bld    r6, 2        ; 0062 F862
              ret                 ; 0063 9508
             .exit
    Output avr_dis.eXE (Picnicks Hexhacker)
    Code:
    .NOLIST
    .INCLUDE		"M32DEF.INC"
    .LIST
    INIT:
    	JMP	L_0x0054
    INT0ADDR_:
    	RETI
    .DB	0x00, 0x00	;..
    INT1ADDR_:
    	RETI
    .DB	0x00, 0x00	;..
    INT2ADDR_:
    	RETI
    .DB	0x00, 0x00	;..
    OC2ADDR_:
    	RETI
    .DB	0x00, 0x00	;..
    OVF2ADDR_:
    	RETI
    .DB	0x00, 0x00	;..
    ICP1ADDR_:
    	RETI
    .DB	0x00, 0x00	;..
    OC1AADDR_:
    	RETI
    .DB	0x00, 0x00	;..
    OC1BADDR_:
    	RETI
    .DB	0x00, 0x00	;..
    OVF1ADDR_:
    	RETI
    .DB	0x00, 0x00	;..
    OC0ADDR_:
    	RETI
    .DB	0x00, 0x00	;..
    OVF0ADDR_:
    	RETI
    .DB	0x00, 0x00	;..
    SPIADDR_:
    	RETI
    .DB	0x00, 0x00	;..
    URXCADDR_:
    	RETI
    .DB	0x00, 0x00	;..
    UDREADDR_:
    	RETI
    .DB	0x00, 0x00	;..
    UTXCADDR_:
    	RETI
    .DB	0x00, 0x00	;..
    ADCCADDR_:
    	RETI
    .DB	0x00, 0x00	;..
    ERDYADDR_:
    	RETI
    .DB	0x00, 0x00	;..
    ACIADDR_:
    	RETI
    .DB	0x00, 0x00	;..
    TWSIADDR_:
    	RETI
    .DB	0x00, 0x00	;..
    SPMRADDR_:
    	RETI
    .DB	0x00, 0x00	;..
    L_0x0054:
    	LDI	r24,0x5F
    	OUT	SPL,r24
    	LDI	YL,0x40
    	LDI	ZL,0x38
    	MOV	r4,ZL
    	LDI	r24,0x08
    	OUT	SPH,r24
    	LDI	YH,0x08
    	LDI	ZH,0x08
    	MOV	r5,ZH
    	LDI	ZL,0xFE
    	LDI	ZH,0x07
    	LDI	XL,0x60
    	LDI	XH,0x00
    	CLR	r24
    L_0x0072:
    	ST	X+,r24
    	SBIW	ZL,0x0001
    	BRNE	L_0x0072
    	LDI	r24,0x33
    	OUT	UBRRL,r24
    	LDI	r24,0x00
    	OUT	UBRRH,r24
    	LDI	r24,0x18
    	OUT	UCSRB,r24
    	CLR	r6
    	LDI	r24,0x04
    	STS	0x0060,r24
    	LDI	r19,0x0E
    	LDI	XL,0x61
    	LDI	XH,0x00
    	CALL	L_0x00A4
    	LDI	r19,0x01
    	LDI	XL,0x60
    	LDI	XH,0x00
    	CALL	L_0x00A4
    	CLI
    L_0x00A2:
    	RJMP	L_0x00A2
    L_0x00A4:
    	LD	r24,X+
    	RCALL	L_0x00AE
    	DEC	r19
    	BRNE	L_0x00A4
    	RET
    L_0x00AE:
    	SBIS	UCSRA,UDRE
    	RJMP	L_0x00AE
    	OUT	UDR,r24
    	RET
    L_0x00B6:
    	SBIW	ZL,0x0001
    	BRNE	L_0x00B6
    	RET
    .DB	0x68, 0x94, 0x62, 0xF8, 0x08, 0x95, 0xE8, 0x94	;h.b.....
    .DB	0x62, 0xF8, 0x08, 0x95	;b...
    Ein Kommentar: Nach unbedingten Sprüngen und wenn keine Sprung oder Call daraufhinzeigt, bring ich den Code im Dumpformat.
    Wenn nämlich Bascom oder sonstwer Text-Literale etc. abspeichert, will ich das auch lesen können.

    Aber logo, die Hackerei fängt danach erst an, und Arbeit bleibt es immer.

    An einem brauchbaren Source-Bezug bin ich noch am Arbeiten. Ist halt so, daß ich inzwischen etwas Übung habe und das eigentlich fast nicht mehr brauche.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  4. #14
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    @Tomas Ich häng da eine Zip rein
    Angehängte Dateien Angehängte Dateien
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  5. #15
    Erfahrener Benutzer Begeisterter Techniker Avatar von albundy
    Registriert seit
    16.10.2004
    Beiträge
    282
    @Robert

    nicht schlecht, dein Disassembler. Womit hast du das Tool geschrieben ?

    Eine Analyse der ISR - Routinen bezüglich der Push und Pop Arien, wäre toll.
    Das man auf einen Blick sehen kann, welche Register gesichert werden müssen.
    Ich mache es immer "zu Fuss", und das ist recht umständlich, wenn viele Verzweigungen vorhanden sind.

  6. #16
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Nun, danke, das ist mit MS VC++ Entenscheiss-Edition gemacht.

    Du meinst jetzt eine Analyse durch Ablauftracing ? Das ist halt dann schon knapp am AVR-Simulator dran.
    Man sollte mal zusammenfassen, welche Fragestellungen noch nicht durch Simulatoren etc. abgedeckt sind.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  7. #17
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    28.03.2004
    Beiträge
    185
    PicNick - tolle Arbeit !!

    Habe auch mal die Disassambler-Outputs zwischen avr_dis.eXE und DisAVR.eXE verglichen. Das hornalte AVR-Tool kennt nicht mal den vollen Atmega-Befehlssatz und sagt immer NOP.

    Hier ein Code-Schnipsel (Atmega169):

    AVR-Studio:
    Code:
    +00000126:   3007        CPI     R16,0x07     
    +00000127:   F410        BRCC    PC+0x03      
    +00000128:   940C0134    JMP     0x00000134   
    +0000012A:   91800124    LDS     R24,0x0124
    avr_dis.eXE (Picnicks Hexhacker)
    Code:
          CPI      r16,0x07
          BRCC     L_0x0254
          JMP      L_0x0268
    L_0x0254:
          LDS      r24,0x0124
    und jetzt kommt Schrott: DisAVR.eXE
    Code:
              cpi    r16, 0x07    ; 0126 3007
               brsh  AVR012A      ; 0127 F410
                                  ; 0128 940C
              nop                 ; 0129 0134
    AVR012A:  lds    r24, 0x0124  ; 012A 9180 0124
    An einem brauchbaren Source-Bezug bin ich noch am Arbeiten.
    Wäre nicht ein AfterBurner für den AVR-Studio-Ausgabefile einfacher zu programmieren? Immerhin steckt da alles schon drin - es fehlen nur die Labels!
    Beispiel:
    Code:
    265:          If Len(lcd_textbuffer) >= 7 Then
    +00000125:   2F08        MOV     R16,R24          Copy register
    +00000126:   3007        CPI     R16,0x07         Compare with immediate
    265:          If Len(lcd_textbuffer) >= 7 Then
    +00000127:   F410        BRCC    PC+0x03          Branch if carry cleared
    +00000128:   940C0134    JMP     0x00000134       Jump
    266:             Lcd_scrollmode = 1                                   'Scroll If Text Is Longer Than Display Size
    +0000012A:   91800124    LDS     R24,0x0124       Load direct from data space

  8. #18
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Ja, man muß schauen, wo man hin will, was man erreichen will.
    Persönlich verwend' ich das Zeugs meistens als Bascom-Inline & Library Generator. d.h. wenn mir was nicht paßt, disassemblier' ich das Programm und verwende umgeschriebene Teile für inline oder library.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  9. #19
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    28.03.2004
    Beiträge
    185
    weil wir gerade so schön am disassemblieren sind...
    hier ein weiterer AVR-Disassembler - obiger Code mit IDA:
    Code:
    ROM:0125                 mov     r16, r24
    ROM:0126                 cpi     r16, 7
    ROM:0127                 brcc    loc_12A
    ROM:0128                 jmp     loc_134
    ROM:012A ; ---------------------------------------------------------------------------
    ROM:012A
    ROM:012A loc_12A:                                ; CODE XREF: sub_112+15j
    ROM:012A                 lds     r24, unk_100124
    Leider bekommt auch IDA den Bascom-OBJ-Code (Source-Bezug) nicht mit eingebunden.

  10. #20
    Erfahrener Benutzer Begeisterter Techniker Avatar von albundy
    Registriert seit
    16.10.2004
    Beiträge
    282
    @Robert

    das ist mit MS VC++ Entenscheiss-Edition gemacht.
    das kenne ich nicht. Aber heisst VC++ nicht Visual C++ ? Da hättest du doch auch eine visuelle Oberfläche erstellen können.
    Das war nur so ein Gedanke.
    Ich bin zwar in der DOS Zeit zum PC gekommen, habe mich aber bis heute nicht mit Kommandozeilen Programmen angefreundet.

    Du meinst jetzt eine Analyse durch Ablauftracing ?
    nicht direkt Tracing, sondern einfach nur alle Sprungziele in der ISR abklappern und die darin benutzten Register auflisten. Um diese dann in Bascom (NoSave) von Hand zu sichern.

    @Tomas

    Das hornalte AVR-Tool kennt nicht mal den vollen Atmega-Befehlssatz
    wie soll es auch ??? Ich kann mich gar nicht mehr erinnern, wann das Tool beim AVRStudio dabei war. Jedenfalls zu einer Zeit, als nicht mal an ATMega's zu denken war und wurde seit dem nie neu rausgebracht.
    Das hängt sicher auch mit nicht gewolltem ReverseEngeneering zusammen.

    Leider bekommt auch IDA den Bascom-OBJ-Code (Source-Bezug) nicht mit eingebunden.
    das wäre mir neu. Ich werde es morgen mal mit dem Code von einem ATMega32, den ich gerade am Wickel habe, probieren.
    Welche Version hast du benutzt ?

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests