list output v.s. studios disassembler - JTAG simmulator Err.

Go To Last Post
2 posts / 0 new
Author
Message
#1
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Has anyone seen this error before:
AVR Studio Sees different code than in CVAVR list file:
specifically see the "byte_1 = spi(ZEROS);" assembler

Compiling with a CVAVR 1.24.6 I get this in the list file:
; 6093 byte_0 = spi(ZEROS); //zero followed by upper 7 A/D bits
00176b 940e 1e8e CALL SUBOPT_0x8A
00176d 2f0e MOV R16,R30
; 6094 byte_1 = spi(ZEROS); //next 8 A/D bits
00176e 940e 1e8e CALL SUBOPT_0x8A
001770 2f1e MOV R17,R30
; 6095 byte_2 = spi(ZEROS); //LSB followed by 7 zeros
001771 940e 1e8e CALL SUBOPT_0x8A
001773 2f2e MOV R18,R30

When in AVR STudio 4.11 in the disassembler view - Studio sees the 2nd spi remote call with a bogus address for the subroutine of 0x00000000 instead of 0x00001EB8

Any suggestions would be benneficial - I'd upgrade to 4.11 SP3 but it get some sort of framework error and it won't even open up.

Erick

6093: byte_0 = spi(ZEROS); //zero followed by upper 7 A/D bits
+0000178D: 940E1EB8 CALL 0x00001EB8 Call subroutine
+0000178F: 2F0E MOV R16,R30 Copy register
6094: byte_1 = spi(ZEROS); //next 8 A/D bits
+00001790: 940E0000 CALL 0x00000000 Call subroutine
+00001792: 2F1E MOV R17,R30 Copy register
6095: byte_2 = spi(ZEROS); //LSB followed by 7 zeros
+00001793: 940E1EB8 CALL 0x00001EB8 Call subroutine
+00001795: 2F2E MOV R18,R30 Copy register

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I have found that 2-word operations where the address operand falls on a word-address boundary that is a multiple of 0x40 disassemble with the address operand replaced by 0x0000. Quite a problem when you want to examine a large program read from an AVR with STK500 where the source code is not available!
I have passed it to Atmel with examples.