/Microsoft Robotics Studio/Roboboard/Main.c |
---|
0,0 → 1,285 |
/***************************************************************************** |
Project : Roboboard |
Date : 1/14/2007 |
Author : Gunter Logemann (C) ALL RIGHTS RESERVED |
Comments: This project is optimized to work with the Mikrocopter (www.mikrokopter.de) |
Redistributions of this source code (with or without modifications) or parts |
of this sourcode must retain the above copyright notice, this list of |
conditions and the following disclaimer. |
* Neither the name of the copyright holders nor the names of contributors may |
be used to endorse or promote products derived from this software without |
specific prior written permission. |
* The use of this source code permittet for non-commercial use (directly |
or indirectly) only. |
* Commercial use Is only permitted with our written permission by |
Gunter Logemann (gunter@pccon.de) |
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
POSSIBILITY OF SUCH DAMAGE. |
Chip type : ATmega8 |
Program type : Application |
Clock frequency : CPUSPEED |
*****************************************************************************/ |
#include <avr/interrupt.h> |
#include <avr/sleep.h> |
//#include <avr/signal.h> |
#include <avr/io.h> |
//#include <avr/stdio.h> |
#include "StdDefines.h" |
#include "Main.h" |
//#define CPUSPEED_20 |
//#define CPUSPEED_16 |
#define CPUSPEED_11059 |
// Macros |
#define WatchdogReset() asm("wdr") |
#define Wait() while(!(SPSR & (1<<SPIF))) |
// Define CPU speed dependant constants: |
#define MAX_RX_BUF 100 |
#define MAX_TX_BUF 100 |
unsigned volatile char SioTmp = 0; |
unsigned volatile char RxdBuffer[MAX_RX_BUF]; |
unsigned volatile char TxdBuffer[MAX_TX_BUF]; |
unsigned volatile char NeuerDatensatzEmpfangen = 0; |
unsigned volatile char UebertragungAbgeschlossen = 1; |
unsigned volatile char CntCrcError = 0; |
unsigned volatile char AnzahlEmpfangsBytes = 0; |
struct str_VersionInfo VersionInfo; |
struct str_AnalogData AnalogData; |
struct str_Exception Exception; |
// -------------------------------------------------------------------------- |
int uart_putchar (char c) |
{ |
UDR = c; |
return (0); |
} |
// -------------------------------------------------------------------------- |
SIGNAL(SIG_UART_TRANS) |
{ |
static unsigned int ptr = 0; |
unsigned char tmp_tx; |
if(!UebertragungAbgeschlossen) |
{ |
ptr++; // die [0] wurde schon gesendet |
tmp_tx = TxdBuffer[ptr]; |
if((tmp_tx == '\r') || (ptr == MAX_TX_BUF)) |
{ |
ptr = 0; |
UebertragungAbgeschlossen = 1; |
} |
UDR = tmp_tx; |
} |
else ptr = 0; |
} |
// -------------------------------------------------------------------------- |
SIGNAL(SIG_UART_RECV) |
{ |
static unsigned int crc; |
static unsigned char crc1,crc2,buf_ptr; |
static unsigned char UartState = 0; |
unsigned char CrcOkay = 0; |
SioTmp = UDR; |
if(buf_ptr >= MAX_RX_BUF) |
UartState = 0; |
if(SioTmp == '\r' && UartState == 2) |
{ |
UartState = 0; |
crc -= RxdBuffer[buf_ptr-2]; |
crc -= RxdBuffer[buf_ptr-1]; |
crc %= 4096; |
crc1 = '=' + crc / 64; |
crc2 = '=' + crc % 64; |
CrcOkay = 0; |
if((crc1 == RxdBuffer[buf_ptr-2]) && (crc2 == RxdBuffer[buf_ptr-1])) |
{ |
CrcOkay = 1; |
} |
else |
{ |
CrcOkay = 0; |
CntCrcError++; |
} |
if(!NeuerDatensatzEmpfangen && CrcOkay) // Datensatz schon verarbeitet |
{ |
NeuerDatensatzEmpfangen = 1; |
AnzahlEmpfangsBytes = buf_ptr; |
RxdBuffer[buf_ptr] = '\r'; |
} |
} |
else |
switch(UartState) |
{ |
case 0: |
if(SioTmp == '#' && !NeuerDatensatzEmpfangen) UartState = 1; // Startzeichen und Daten schon verarbeitet |
buf_ptr = 0; |
RxdBuffer[buf_ptr++] = SioTmp; |
crc = SioTmp; |
break; |
case 1: // Adresse auswerten |
UartState++; |
RxdBuffer[buf_ptr++] = SioTmp; |
crc += SioTmp; |
break; |
case 2: // Eingangsdaten sammeln |
RxdBuffer[buf_ptr] = SioTmp; |
if(buf_ptr < MAX_RX_BUF) buf_ptr++; |
else UartState = 0; |
crc += SioTmp; |
break; |
default: |
UartState = 0; |
break; |
} |
} |
// -------------------------------------------------------------------------- |
void AddCRC(unsigned int wieviele) |
{ |
unsigned int tmpCRC = 0,i; |
for(i = 0; i < wieviele;i++) |
{ |
tmpCRC += TxdBuffer[i]; |
} |
tmpCRC %= 4096; |
TxdBuffer[i++] = '=' + tmpCRC / 64; |
TxdBuffer[i++] = '=' + tmpCRC % 64; |
TxdBuffer[i++] = '\r'; |
UebertragungAbgeschlossen = 0; |
UDR = TxdBuffer[0]; |
} |
// -------------------------------------------------------------------------- |
void SendOutData(unsigned char cmd,unsigned char modul, unsigned char *snd, unsigned char len) |
{ |
unsigned int pt = 0; |
unsigned char a,b,c; |
unsigned char ptr = 0; |
TxdBuffer[pt++] = '#'; // Startzeichen |
TxdBuffer[pt++] = modul; // Adresse (a=0; b=1,...) |
TxdBuffer[pt++] = cmd; // Commando |
while(len) |
{ |
if(len) { a = snd[ptr++]; len--;} else a = 0; |
if(len) { b = snd[ptr++]; len--;} else b = 0; |
if(len) { c = snd[ptr++]; len--;} else c = 0; |
TxdBuffer[pt++] = '=' + (a >> 2); |
TxdBuffer[pt++] = '=' + (((a & 0x03) << 4) | ((b & 0xf0) >> 4)); |
TxdBuffer[pt++] = '=' + (((b & 0x0f) << 2) | ((c & 0xc0) >> 6)); |
TxdBuffer[pt++] = '=' + ( c & 0x3f); |
} |
AddCRC(pt); |
} |
//----------------------------------------------------------------------------- |
//main |
//main execution loop |
//----------------------------------------------------------------------------- |
int main(void) |
{ |
// int message structures; |
VersionInfo.identifier = XIDENTIFIER_VERSION; |
VersionInfo.majorversion = MAJORVERSION; |
VersionInfo.minorversion = MINORVERSION; |
AnalogData.identifier = XIDENTIFIER_ANALOG; |
Exception.identifier = XIDENTIFIER_EXCEPTION; |
// PORT D - unused right now |
PORTD = 0x10; |
DDRD = 0x00; |
//Enable TXEN im Register UCR TX-Data Enable & RX Enable |
// USART initialization |
// Communication Parameters: 8 Data, 1 Stop, No Parity |
// USART Receiver: On |
// USART Transmitter: On |
// USART RX/TX interrupt enable |
// USART Mode: Asynchronous |
// USART Baud rate: 57600 |
UCSRA=0x00; |
UCSRB=0xD8; |
UCSRC=0x86; |
#ifdef CPUSPEED_20 //20.000MHz |
UBRRH=0x00; |
UBRRL=0x15; |
#endif |
#ifdef CPUSPEED_16 //16.000MHz |
UBRRH=0x00; |
UBRRL=0x10; |
#endif |
#ifdef CPUSPEED_11059 //11.059MHz |
UBRRH=0x00; |
UBRRL=0x0B; |
#endif |
// Enable interrupts |
sei(); |
NeuerDatensatzEmpfangen = 0; |
// main loop |
while (1) |
{ |
if(NeuerDatensatzEmpfangen==1) { |
switch(RxdBuffer[3]) |
{ |
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
// version request |
case XIDENTIFIER_VERSION: |
SendOutData('X',0x00,(unsigned char *) &VersionInfo,sizeof(VersionInfo)); |
break; |
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
case XIDENTIFIER_ANALOG: |
break; |
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
default: |
Exception.errorcode = ERRORCODE_NOTIMPLEMENTED; |
SendOutData('X',0x00,(unsigned char *) &Exception,sizeof(VersionInfo)); |
} |
NeuerDatensatzEmpfangen=0; |
} |
} |
return(1); |
} /* main */ |
/Microsoft Robotics Studio/Roboboard/Main.h |
---|
0,0 → 1,71 |
/***************************************************************************** |
Project : Roboboard |
Date : 1/14/2007 |
Author : Gunter Logemann (C) ALL RIGHTS RESERVED |
Comments: This project is optimized to work with the Mikrocopter (www.mikrokopter.de) |
Redistributions of this source code (with or without modifications) or parts |
of this sourcode must retain the above copyright notice, this list of |
conditions and the following disclaimer. |
* Neither the name of the copyright holders nor the names of contributors may |
be used to endorse or promote products derived from this software without |
specific prior written permission. |
* The use of this source code permittet for non-commercial use (directly |
or indirectly) only. |
* Commercial use Is only permitted with our written permission by |
Gunter Logemann (gunter@pccon.de) |
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
POSSIBILITY OF SUCH DAMAGE. |
Chip type : ATmega8 |
Program type : Application |
Clock frequency : CPUSPEED |
*****************************************************************************/ |
#define XIDENTIFIER_EXCEPTION 0x00 |
#define XIDENTIFIER_VERSION 0x01 |
#define XIDENTIFIER_ANALOG 0x02 |
//--------------------------------------------------------------------------- |
struct str_VersionInfo |
{ |
unsigned char identifier; |
unsigned char majorversion; |
unsigned char minorversion; |
}; |
extern struct str_VersionInfo VersionInfo; |
#define MAJORVERSION 0x00 |
#define MINORVERSION 0x01 |
//--------------------------------------------------------------------------- |
struct str_AnalogData |
{ |
unsigned char identifier; |
int analog[8]; |
}; |
extern struct str_AnalogData AnalogData; |
//--------------------------------------------------------------------------- |
struct str_Exception |
{ |
unsigned char identifier; |
unsigned char errorcode; |
}; |
extern struct str_Exception Exception; |
#define ERRORCODE_NOTIMPLEMENTED 0x00 |
#define ERRORCODE_WRONGPARAMETER 0x01 |
/Microsoft Robotics Studio/Roboboard/Makefile |
---|
0,0 → 1,90 |
PRG = main |
OBJ = main.o \ |
MCU_TARGET = atmega8 |
OPTIMIZE = -O1 |
DEFS = |
LIBS = |
# You should not have to change anything below here. |
CC = avr-gcc |
# Override is only needed by avr-lib build system. |
override CFLAGS = -g -Wall $(OPTIMIZE) -mmcu=$(MCU_TARGET) $(DEFS) |
override LDFLAGS = -Wl,-Map,$(PRG).map |
OBJCOPY = avr-objcopy |
OBJDUMP = avr-objdump |
all: $(PRG).elf lst text eeprom |
$(PRG).elf: $(OBJ) |
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) |
clean: |
rm -rf *.o $(PRG).elf *.eps *.png *.pdf *.bak |
rm -rf *.lst *.map $(EXTRA_CLEAN_FILES) |
lst: $(PRG).lst |
%.lst: %.elf |
$(OBJDUMP) -h -S $< > $@ |
# Rules for building the .text rom images |
text: hex bin srec |
hex: $(PRG).hex |
bin: $(PRG).bin |
srec: $(PRG).srec |
%.hex: %.elf |
$(OBJCOPY) -j .text -j .data -O ihex $< $@ |
%.srec: %.elf |
$(OBJCOPY) -j .text -j .data -O srec $< $@ |
%.bin: %.elf |
$(OBJCOPY) -j .text -j .data -O binary $< $@ |
# Rules for building the .eeprom rom images |
eeprom: ehex ebin esrec |
ehex: $(PRG)_eeprom.hex |
ebin: $(PRG)_eeprom.bin |
esrec: $(PRG)_eeprom.srec |
%_eeprom.hex: %.elf |
$(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O ihex $< $@ |
%_eeprom.srec: %.elf |
$(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O srec $< $@ |
%_eeprom.bin: %.elf |
$(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O binary $< $@ |
# Every thing below here is used by avr-libc's build system and can be ignored |
# by the casual user. |
FIG2DEV = fig2dev |
EXTRA_CLEAN_FILES = *.bin *.srec |
dox: eps png pdf |
eps: $(PRG).eps |
png: $(PRG).png |
pdf: $(PRG).pdf |
%.eps: %.fig |
$(FIG2DEV) -L eps $< $@ |
%.pdf: %.fig |
$(FIG2DEV) -L pdf $< $@ |
%.png: %.fig |
$(FIG2DEV) -L png $< $@ |
/Microsoft Robotics Studio/Roboboard/RoboBoard.pnproj |
---|
0,0 → 1,0 |
<Project name="MKvideooverlay"><File path="Main.c"></File><File path="Main.h"></File><File path="main.hex"></File><File path="main_eeprom.hex"></File><File path="Makefile"></File><File path="overlay.sch"></File><File path="StdDefines.h"></File><File path="main.lst"></File></Project> |
/Microsoft Robotics Studio/Roboboard/RoboBoard.pnps |
---|
0,0 → 1,0 |
<pd><ViewState><e p="MKvideooverlay" x="true"></e></ViewState></pd> |
/Microsoft Robotics Studio/Roboboard/StdDefines.h |
---|
0,0 → 1,51 |
/******************************************************************************* |
File: StdDefines.h |
Standard definitions file. |
Created: 1.00 04/14/03 GND Gary Dion |
Version: 1.00 |
Revisions: 1.00 04/14/03 GND Initial Release. |
*******************************************************************************/ |
/* General use definitions */ |
# define TRUE (1) |
# define FALSE (0) |
# define ON (1) |
# define OFF (0) |
# define HI (1) |
# define LO (0) |
/* General status constants. */ |
# define PASS (1) |
# define OK (PASS) |
# define FAIL (0) |
# define ERROR (FAIL) |
/* Define PUBLIC as extern. */ |
#define PUBLIC extern |
/* Define PRIVATE as static. */ |
#define PRIVATE static |
/* Scalar type definitions */ |
typedef char INT8; |
typedef unsigned char UINT8; |
typedef unsigned char UCHAR; |
typedef unsigned char BOOL; |
typedef int INT16; |
typedef unsigned int UINT16; |
typedef unsigned int UINT; |
typedef short SHORT; |
typedef unsigned short USHORT; |
typedef long INT32; |
typedef unsigned long UINT32; |
typedef unsigned long ULONG; |
typedef long STATUS; |
/Microsoft Robotics Studio/Roboboard/main.bin |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/Microsoft Robotics Studio/Roboboard/main.elf |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/Microsoft Robotics Studio/Roboboard/main.hex |
---|
0,0 → 1,74 |
:1000000012C02CC02BC02AC029C028C027C026C0BF |
:1000100025C024C023C05CC021C025C01FC01EC095 |
:100020001DC01CC01BC011241FBECFE5D4E0DEBF25 |
:10003000CDBF10E0A0E6B0E0EEE7F4E002C005902E |
:100040000D92A236B107D9F711E0A2E6B0E001C0E7 |
:100050001D92AC34B107E1F7D4D110C2D1CF8CB925 |
:1000600080E090E008951F920F920FB60F92112436 |
:100070008F939F93EF93FF93809160008823D9F42F |
:1000800080916C0090916D00019690936D0080932B |
:100090006C00FC01E952FF4FE081ED3019F084362D |
:1000A000910539F410926D0010926C0081E08093FC |
:1000B0006000ECB904C010926D0010926C00FF91CA |
:1000C000EF919F918F910F900FBE0F901F901895F9 |
:1000D0001F920F920FB60F9211242F933F934F93BD |
:1000E0005F936F937F938F939F93AF93BF93EF93A0 |
:1000F000FF938CB18093620050916700543610F0EA |
:1001000010926600809162008D3009F056C0809197 |
:100110006600823009F051C010926600652F772783 |
:10012000FB01329723E730E0E20FF31F4081CB0160 |
:100130000197DC01A20FB31F2C9180916A0090916E |
:100140006B00841B9109821B91099F7090936B0037 |
:1001500080936A009C010024220F331F001C220F91 |
:10016000331F001C232F302D235C209369008F73D5 |
:10017000382F335C309368008081281729F48C91E4 |
:10018000381711F491E006C0809164008F5F80936E |
:10019000640090E080916300882309F06CC099238B |
:1001A00009F469C081E08093630050936500FB010E |
:1001B000ED58FF4F8DE080835EC0809166008130F6 |
:1001C00001F1813020F0823009F053C035C08091B8 |
:1001D0006200833239F480916300882319F481E04E |
:1001E00080936600809162008093730081E0809329 |
:1001F000670080916200992790936B0080936A005A |
:100200003AC082E08093660080916200E3E7F0E00C |
:10021000E50FF11D8083852F8F5F8093670020910C |
:10022000620080916A0090916B00820F911D909303 |
:100230006B0080936A001FC080916200E3E7F0E0EA |
:10024000E50FF11D8083543628F4852F8F5F80934E |
:10025000670002C0109266002091620080916A00DF |
:1002600090916B00820F911D90936B0080936A00B8 |
:1002700002C010926600FF91EF91BF91AF919F91E4 |
:100280008F917F916F915F914F913F912F910F903F |
:100290000FBE0F901F901895DC01892B29F420E0E8 |
:1002A00030E0A0E0B0E011C020E030E040E050E0FD |
:1002B00067ED70E0FA01E60FF71F8081280F311D0E |
:1002C0004F5F5F4FA417B507A9F73F70C90100241E |
:1002D000880F991F001C880F991F001C892F902DD3 |
:1002E000835C47ED50E0FD01E40FF51F808311961C |
:1002F0002F73235CFD01E40FF51F20831196A40FDB |
:10030000B51F8DE08C93109260008091D7008CB95E |
:100310000895FF920F931F93CF93DF938A01722F5B |
:1003200093E29093D7006093D8008093D900222362 |
:1003300019F4A3E0B0E05DC0A3E0B0E060E0C7ED79 |
:10034000D0E0F801E60FF11D90816F5F715019F454 |
:10035000FF2440E00FC0F801E60FF11D40816F5F00 |
:10036000715011F4FF2406C0F801E60FF11DF08072 |
:100370006F5F7150892F86958695835CFD01EC0F28 |
:10038000FD1F8083FD0131965527892F99278370A2 |
:10039000907082959295907F9827807F98279A01F8 |
:1003A000329522952F7023273F702327822B835C61 |
:1003B000EC0FFD1F8083FD0132964F705070440F8B |
:1003C000551F440F551F8F2D8295869586958370F6 |
:1003D000842B835CEC0FFD1F8083FD0133968F2DF2 |
:1003E0008F73835CEC0FFD1F80831496772309F0D5 |
:1003F000A8CFCD0151DFDF91CF911F910F91FF90D9 |
:1004000008950F931F93CF93DF9381E080936E0045 |
:1004100010926F008093700082E080933B011092F5 |
:10042000710080E182BB11BA1BB888ED8AB986E8F9 |
:1004300080BD10BC8BE089B97894109263000EE601 |
:1004400010E0C1E7D0E0809163008130E1F7809156 |
:100450007600813019F0823039F40DC023E0A80114 |
:1004600060E088E556DF07C01092720023E0AE011D |
:0E04700060E088E54EDF10926300E5CFFFCF1D |
:02047E0001007B |
:00000001FF |
/Microsoft Robotics Studio/Roboboard/main.lst |
---|
0,0 → 1,777 |
main.elf: file format elf32-avr |
Sections: |
Idx Name Size VMA LMA File off Algn |
0 .text 0000047e 00000000 00000000 00000094 2**1 |
CONTENTS, ALLOC, LOAD, READONLY, CODE |
1 .data 00000002 00800060 0000047e 00000512 2**0 |
CONTENTS, ALLOC, LOAD, DATA |
2 .bss 000000ea 00800062 00800062 00000514 2**0 |
ALLOC |
3 .stab 00000378 00000000 00000000 00000514 2**2 |
CONTENTS, READONLY, DEBUGGING |
4 .stabstr 00000071 00000000 00000000 0000088c 2**0 |
CONTENTS, READONLY, DEBUGGING |
5 .debug_aranges 00000020 00000000 00000000 000008fd 2**0 |
CONTENTS, READONLY, DEBUGGING |
6 .debug_pubnames 0000011d 00000000 00000000 0000091d 2**0 |
CONTENTS, READONLY, DEBUGGING |
7 .debug_info 000003bf 00000000 00000000 00000a3a 2**0 |
CONTENTS, READONLY, DEBUGGING |
8 .debug_abbrev 0000011c 00000000 00000000 00000df9 2**0 |
CONTENTS, READONLY, DEBUGGING |
9 .debug_line 00000367 00000000 00000000 00000f15 2**0 |
CONTENTS, READONLY, DEBUGGING |
10 .debug_frame 00000070 00000000 00000000 0000127c 2**2 |
CONTENTS, READONLY, DEBUGGING |
11 .debug_str 000001dc 00000000 00000000 000012ec 2**0 |
CONTENTS, READONLY, DEBUGGING |
12 .debug_loc 00000220 00000000 00000000 000014c8 2**0 |
CONTENTS, READONLY, DEBUGGING |
Disassembly of section .text: |
00000000 <__vectors>: |
0: 12 c0 rjmp .+36 ; 0x26 <__ctors_end> |
2: 2c c0 rjmp .+88 ; 0x5c <__bad_interrupt> |
4: 2b c0 rjmp .+86 ; 0x5c <__bad_interrupt> |
6: 2a c0 rjmp .+84 ; 0x5c <__bad_interrupt> |
8: 29 c0 rjmp .+82 ; 0x5c <__bad_interrupt> |
a: 28 c0 rjmp .+80 ; 0x5c <__bad_interrupt> |
c: 27 c0 rjmp .+78 ; 0x5c <__bad_interrupt> |
e: 26 c0 rjmp .+76 ; 0x5c <__bad_interrupt> |
10: 25 c0 rjmp .+74 ; 0x5c <__bad_interrupt> |
12: 24 c0 rjmp .+72 ; 0x5c <__bad_interrupt> |
14: 23 c0 rjmp .+70 ; 0x5c <__bad_interrupt> |
16: 5c c0 rjmp .+184 ; 0xd0 <__vector_11> |
18: 21 c0 rjmp .+66 ; 0x5c <__bad_interrupt> |
1a: 25 c0 rjmp .+74 ; 0x66 <__vector_13> |
1c: 1f c0 rjmp .+62 ; 0x5c <__bad_interrupt> |
1e: 1e c0 rjmp .+60 ; 0x5c <__bad_interrupt> |
20: 1d c0 rjmp .+58 ; 0x5c <__bad_interrupt> |
22: 1c c0 rjmp .+56 ; 0x5c <__bad_interrupt> |
24: 1b c0 rjmp .+54 ; 0x5c <__bad_interrupt> |
00000026 <__ctors_end>: |
26: 11 24 eor r1, r1 |
28: 1f be out 0x3f, r1 ; 63 |
2a: cf e5 ldi r28, 0x5F ; 95 |
2c: d4 e0 ldi r29, 0x04 ; 4 |
2e: de bf out 0x3e, r29 ; 62 |
30: cd bf out 0x3d, r28 ; 61 |
00000032 <__do_copy_data>: |
32: 10 e0 ldi r17, 0x00 ; 0 |
34: a0 e6 ldi r26, 0x60 ; 96 |
36: b0 e0 ldi r27, 0x00 ; 0 |
38: ee e7 ldi r30, 0x7E ; 126 |
3a: f4 e0 ldi r31, 0x04 ; 4 |
3c: 02 c0 rjmp .+4 ; 0x42 <.do_copy_data_start> |
0000003e <.do_copy_data_loop>: |
3e: 05 90 lpm r0, Z+ |
40: 0d 92 st X+, r0 |
00000042 <.do_copy_data_start>: |
42: a2 36 cpi r26, 0x62 ; 98 |
44: b1 07 cpc r27, r17 |
46: d9 f7 brne .-10 ; 0x3e <__SP_H__> |
00000048 <__do_clear_bss>: |
48: 11 e0 ldi r17, 0x01 ; 1 |
4a: a2 e6 ldi r26, 0x62 ; 98 |
4c: b0 e0 ldi r27, 0x00 ; 0 |
4e: 01 c0 rjmp .+2 ; 0x52 <.do_clear_bss_start> |
00000050 <.do_clear_bss_loop>: |
50: 1d 92 st X+, r1 |
00000052 <.do_clear_bss_start>: |
52: ac 34 cpi r26, 0x4C ; 76 |
54: b1 07 cpc r27, r17 |
56: e1 f7 brne .-8 ; 0x50 <.do_clear_bss_loop> |
58: d4 d1 rcall .+936 ; 0x402 <main> |
5a: 10 c2 rjmp .+1056 ; 0x47c <_exit> |
0000005c <__bad_interrupt>: |
5c: d1 cf rjmp .-94 ; 0x0 <__heap_end> |
0000005e <uart_putchar>: |
struct str_Exception Exception; |
// -------------------------------------------------------------------------- |
int uart_putchar (char c) |
{ |
5e: 8c b9 out 0x0c, r24 ; 12 |
UDR = c; |
return (0); |
} |
60: 80 e0 ldi r24, 0x00 ; 0 |
62: 90 e0 ldi r25, 0x00 ; 0 |
64: 08 95 ret |
00000066 <__vector_13>: |
// -------------------------------------------------------------------------- |
SIGNAL(SIG_UART_TRANS) |
{ |
66: 1f 92 push r1 |
68: 0f 92 push r0 |
6a: 0f b6 in r0, 0x3f ; 63 |
6c: 0f 92 push r0 |
6e: 11 24 eor r1, r1 |
70: 8f 93 push r24 |
72: 9f 93 push r25 |
74: ef 93 push r30 |
76: ff 93 push r31 |
static unsigned int ptr = 0; |
unsigned char tmp_tx; |
if(!UebertragungAbgeschlossen) |
78: 80 91 60 00 lds r24, 0x0060 |
7c: 88 23 and r24, r24 |
7e: d9 f4 brne .+54 ; 0xb6 <__vector_13+0x50> |
{ |
ptr++; // die [0] wurde schon gesendet |
80: 80 91 6c 00 lds r24, 0x006C |
84: 90 91 6d 00 lds r25, 0x006D |
88: 01 96 adiw r24, 0x01 ; 1 |
8a: 90 93 6d 00 sts 0x006D, r25 |
8e: 80 93 6c 00 sts 0x006C, r24 |
tmp_tx = TxdBuffer[ptr]; |
92: fc 01 movw r30, r24 |
94: e9 52 subi r30, 0x29 ; 41 |
96: ff 4f sbci r31, 0xFF ; 255 |
98: e0 81 ld r30, Z |
if((tmp_tx == '\r') || (ptr == MAX_TX_BUF)) |
9a: ed 30 cpi r30, 0x0D ; 13 |
9c: 19 f0 breq .+6 ; 0xa4 <__vector_13+0x3e> |
9e: 84 36 cpi r24, 0x64 ; 100 |
a0: 91 05 cpc r25, r1 |
a2: 39 f4 brne .+14 ; 0xb2 <__vector_13+0x4c> |
{ |
ptr = 0; |
a4: 10 92 6d 00 sts 0x006D, r1 |
a8: 10 92 6c 00 sts 0x006C, r1 |
UebertragungAbgeschlossen = 1; |
ac: 81 e0 ldi r24, 0x01 ; 1 |
ae: 80 93 60 00 sts 0x0060, r24 |
} |
UDR = tmp_tx; |
b2: ec b9 out 0x0c, r30 ; 12 |
b4: 04 c0 rjmp .+8 ; 0xbe <__vector_13+0x58> |
} |
else ptr = 0; |
b6: 10 92 6d 00 sts 0x006D, r1 |
ba: 10 92 6c 00 sts 0x006C, r1 |
be: ff 91 pop r31 |
c0: ef 91 pop r30 |
c2: 9f 91 pop r25 |
c4: 8f 91 pop r24 |
c6: 0f 90 pop r0 |
c8: 0f be out 0x3f, r0 ; 63 |
ca: 0f 90 pop r0 |
cc: 1f 90 pop r1 |
ce: 18 95 reti |
000000d0 <__vector_11>: |
} |
// -------------------------------------------------------------------------- |
SIGNAL(SIG_UART_RECV) |
{ |
d0: 1f 92 push r1 |
d2: 0f 92 push r0 |
d4: 0f b6 in r0, 0x3f ; 63 |
d6: 0f 92 push r0 |
d8: 11 24 eor r1, r1 |
da: 2f 93 push r18 |
dc: 3f 93 push r19 |
de: 4f 93 push r20 |
e0: 5f 93 push r21 |
e2: 6f 93 push r22 |
e4: 7f 93 push r23 |
e6: 8f 93 push r24 |
e8: 9f 93 push r25 |
ea: af 93 push r26 |
ec: bf 93 push r27 |
ee: ef 93 push r30 |
f0: ff 93 push r31 |
static unsigned int crc; |
static unsigned char crc1,crc2,buf_ptr; |
static unsigned char UartState = 0; |
unsigned char CrcOkay = 0; |
SioTmp = UDR; |
f2: 8c b1 in r24, 0x0c ; 12 |
f4: 80 93 62 00 sts 0x0062, r24 |
if(buf_ptr >= MAX_RX_BUF) |
f8: 50 91 67 00 lds r21, 0x0067 |
fc: 54 36 cpi r21, 0x64 ; 100 |
fe: 10 f0 brcs .+4 ; 0x104 <__vector_11+0x34> |
UartState = 0; |
100: 10 92 66 00 sts 0x0066, r1 |
if(SioTmp == '\r' && UartState == 2) |
104: 80 91 62 00 lds r24, 0x0062 |
108: 8d 30 cpi r24, 0x0D ; 13 |
10a: 09 f0 breq .+2 ; 0x10e <__vector_11+0x3e> |
10c: 56 c0 rjmp .+172 ; 0x1ba <__vector_11+0xea> |
10e: 80 91 66 00 lds r24, 0x0066 |
112: 82 30 cpi r24, 0x02 ; 2 |
114: 09 f0 breq .+2 ; 0x118 <__vector_11+0x48> |
116: 51 c0 rjmp .+162 ; 0x1ba <__vector_11+0xea> |
{ |
UartState = 0; |
118: 10 92 66 00 sts 0x0066, r1 |
crc -= RxdBuffer[buf_ptr-2]; |
11c: 65 2f mov r22, r21 |
11e: 77 27 eor r23, r23 |
120: fb 01 movw r30, r22 |
122: 32 97 sbiw r30, 0x02 ; 2 |
124: 23 e7 ldi r18, 0x73 ; 115 |
126: 30 e0 ldi r19, 0x00 ; 0 |
128: e2 0f add r30, r18 |
12a: f3 1f adc r31, r19 |
12c: 40 81 ld r20, Z |
crc -= RxdBuffer[buf_ptr-1]; |
12e: cb 01 movw r24, r22 |
130: 01 97 sbiw r24, 0x01 ; 1 |
132: dc 01 movw r26, r24 |
134: a2 0f add r26, r18 |
136: b3 1f adc r27, r19 |
138: 2c 91 ld r18, X |
crc %= 4096; |
13a: 80 91 6a 00 lds r24, 0x006A |
13e: 90 91 6b 00 lds r25, 0x006B |
142: 84 1b sub r24, r20 |
144: 91 09 sbc r25, r1 |
146: 82 1b sub r24, r18 |
148: 91 09 sbc r25, r1 |
14a: 9f 70 andi r25, 0x0F ; 15 |
14c: 90 93 6b 00 sts 0x006B, r25 |
150: 80 93 6a 00 sts 0x006A, r24 |
crc1 = '=' + crc / 64; |
154: 9c 01 movw r18, r24 |
156: 00 24 eor r0, r0 |
158: 22 0f add r18, r18 |
15a: 33 1f adc r19, r19 |
15c: 00 1c adc r0, r0 |
15e: 22 0f add r18, r18 |
160: 33 1f adc r19, r19 |
162: 00 1c adc r0, r0 |
164: 23 2f mov r18, r19 |
166: 30 2d mov r19, r0 |
168: 23 5c subi r18, 0xC3 ; 195 |
16a: 20 93 69 00 sts 0x0069, r18 |
crc2 = '=' + crc % 64; |
16e: 8f 73 andi r24, 0x3F ; 63 |
170: 38 2f mov r19, r24 |
172: 33 5c subi r19, 0xC3 ; 195 |
174: 30 93 68 00 sts 0x0068, r19 |
CrcOkay = 0; |
if((crc1 == RxdBuffer[buf_ptr-2]) && (crc2 == RxdBuffer[buf_ptr-1])) |
178: 80 81 ld r24, Z |
17a: 28 17 cp r18, r24 |
17c: 29 f4 brne .+10 ; 0x188 <__vector_11+0xb8> |
17e: 8c 91 ld r24, X |
180: 38 17 cp r19, r24 |
182: 11 f4 brne .+4 ; 0x188 <__vector_11+0xb8> |
184: 91 e0 ldi r25, 0x01 ; 1 |
186: 06 c0 rjmp .+12 ; 0x194 <__vector_11+0xc4> |
{ |
CrcOkay = 1; |
} |
else |
{ |
CrcOkay = 0; |
CntCrcError++; |
188: 80 91 64 00 lds r24, 0x0064 |
18c: 8f 5f subi r24, 0xFF ; 255 |
18e: 80 93 64 00 sts 0x0064, r24 |
192: 90 e0 ldi r25, 0x00 ; 0 |
} |
if(!NeuerDatensatzEmpfangen && CrcOkay) // Datensatz schon verarbeitet |
194: 80 91 63 00 lds r24, 0x0063 |
198: 88 23 and r24, r24 |
19a: 09 f0 breq .+2 ; 0x19e <__vector_11+0xce> |
19c: 6c c0 rjmp .+216 ; 0x276 <__vector_11+0x1a6> |
19e: 99 23 and r25, r25 |
1a0: 09 f4 brne .+2 ; 0x1a4 <__vector_11+0xd4> |
1a2: 69 c0 rjmp .+210 ; 0x276 <__vector_11+0x1a6> |
{ |
NeuerDatensatzEmpfangen = 1; |
1a4: 81 e0 ldi r24, 0x01 ; 1 |
1a6: 80 93 63 00 sts 0x0063, r24 |
AnzahlEmpfangsBytes = buf_ptr; |
1aa: 50 93 65 00 sts 0x0065, r21 |
RxdBuffer[buf_ptr] = '\r'; |
1ae: fb 01 movw r30, r22 |
1b0: ed 58 subi r30, 0x8D ; 141 |
1b2: ff 4f sbci r31, 0xFF ; 255 |
1b4: 8d e0 ldi r24, 0x0D ; 13 |
1b6: 80 83 st Z, r24 |
1b8: 5e c0 rjmp .+188 ; 0x276 <__vector_11+0x1a6> |
} |
} |
else |
switch(UartState) |
1ba: 80 91 66 00 lds r24, 0x0066 |
1be: 81 30 cpi r24, 0x01 ; 1 |
1c0: 01 f1 breq .+64 ; 0x202 <__vector_11+0x132> |
1c2: 81 30 cpi r24, 0x01 ; 1 |
1c4: 20 f0 brcs .+8 ; 0x1ce <__vector_11+0xfe> |
1c6: 82 30 cpi r24, 0x02 ; 2 |
1c8: 09 f0 breq .+2 ; 0x1cc <__vector_11+0xfc> |
1ca: 53 c0 rjmp .+166 ; 0x272 <__vector_11+0x1a2> |
1cc: 35 c0 rjmp .+106 ; 0x238 <__vector_11+0x168> |
{ |
case 0: |
if(SioTmp == '#' && !NeuerDatensatzEmpfangen) UartState = 1; // Startzeichen und Daten schon verarbeitet |
1ce: 80 91 62 00 lds r24, 0x0062 |
1d2: 83 32 cpi r24, 0x23 ; 35 |
1d4: 39 f4 brne .+14 ; 0x1e4 <__vector_11+0x114> |
1d6: 80 91 63 00 lds r24, 0x0063 |
1da: 88 23 and r24, r24 |
1dc: 19 f4 brne .+6 ; 0x1e4 <__vector_11+0x114> |
1de: 81 e0 ldi r24, 0x01 ; 1 |
1e0: 80 93 66 00 sts 0x0066, r24 |
buf_ptr = 0; |
RxdBuffer[buf_ptr++] = SioTmp; |
1e4: 80 91 62 00 lds r24, 0x0062 |
1e8: 80 93 73 00 sts 0x0073, r24 |
1ec: 81 e0 ldi r24, 0x01 ; 1 |
1ee: 80 93 67 00 sts 0x0067, r24 |
crc = SioTmp; |
1f2: 80 91 62 00 lds r24, 0x0062 |
1f6: 99 27 eor r25, r25 |
1f8: 90 93 6b 00 sts 0x006B, r25 |
1fc: 80 93 6a 00 sts 0x006A, r24 |
200: 3a c0 rjmp .+116 ; 0x276 <__vector_11+0x1a6> |
break; |
case 1: // Adresse auswerten |
UartState++; |
202: 82 e0 ldi r24, 0x02 ; 2 |
204: 80 93 66 00 sts 0x0066, r24 |
RxdBuffer[buf_ptr++] = SioTmp; |
208: 80 91 62 00 lds r24, 0x0062 |
20c: e3 e7 ldi r30, 0x73 ; 115 |
20e: f0 e0 ldi r31, 0x00 ; 0 |
210: e5 0f add r30, r21 |
212: f1 1d adc r31, r1 |
214: 80 83 st Z, r24 |
216: 85 2f mov r24, r21 |
218: 8f 5f subi r24, 0xFF ; 255 |
21a: 80 93 67 00 sts 0x0067, r24 |
crc += SioTmp; |
21e: 20 91 62 00 lds r18, 0x0062 |
222: 80 91 6a 00 lds r24, 0x006A |
226: 90 91 6b 00 lds r25, 0x006B |
22a: 82 0f add r24, r18 |
22c: 91 1d adc r25, r1 |
22e: 90 93 6b 00 sts 0x006B, r25 |
232: 80 93 6a 00 sts 0x006A, r24 |
236: 1f c0 rjmp .+62 ; 0x276 <__vector_11+0x1a6> |
break; |
case 2: // Eingangsdaten sammeln |
RxdBuffer[buf_ptr] = SioTmp; |
238: 80 91 62 00 lds r24, 0x0062 |
23c: e3 e7 ldi r30, 0x73 ; 115 |
23e: f0 e0 ldi r31, 0x00 ; 0 |
240: e5 0f add r30, r21 |
242: f1 1d adc r31, r1 |
244: 80 83 st Z, r24 |
if(buf_ptr < MAX_RX_BUF) buf_ptr++; |
246: 54 36 cpi r21, 0x64 ; 100 |
248: 28 f4 brcc .+10 ; 0x254 <__vector_11+0x184> |
24a: 85 2f mov r24, r21 |
24c: 8f 5f subi r24, 0xFF ; 255 |
24e: 80 93 67 00 sts 0x0067, r24 |
252: 02 c0 rjmp .+4 ; 0x258 <__vector_11+0x188> |
else UartState = 0; |
254: 10 92 66 00 sts 0x0066, r1 |
crc += SioTmp; |
258: 20 91 62 00 lds r18, 0x0062 |
25c: 80 91 6a 00 lds r24, 0x006A |
260: 90 91 6b 00 lds r25, 0x006B |
264: 82 0f add r24, r18 |
266: 91 1d adc r25, r1 |
268: 90 93 6b 00 sts 0x006B, r25 |
26c: 80 93 6a 00 sts 0x006A, r24 |
270: 02 c0 rjmp .+4 ; 0x276 <__vector_11+0x1a6> |
break; |
default: |
UartState = 0; |
272: 10 92 66 00 sts 0x0066, r1 |
276: ff 91 pop r31 |
278: ef 91 pop r30 |
27a: bf 91 pop r27 |
27c: af 91 pop r26 |
27e: 9f 91 pop r25 |
280: 8f 91 pop r24 |
282: 7f 91 pop r23 |
284: 6f 91 pop r22 |
286: 5f 91 pop r21 |
288: 4f 91 pop r20 |
28a: 3f 91 pop r19 |
28c: 2f 91 pop r18 |
28e: 0f 90 pop r0 |
290: 0f be out 0x3f, r0 ; 63 |
292: 0f 90 pop r0 |
294: 1f 90 pop r1 |
296: 18 95 reti |
00000298 <AddCRC>: |
break; |
} |
} |
// -------------------------------------------------------------------------- |
void AddCRC(unsigned int wieviele) |
{ |
298: dc 01 movw r26, r24 |
unsigned int tmpCRC = 0,i; |
for(i = 0; i < wieviele;i++) |
29a: 89 2b or r24, r25 |
29c: 29 f4 brne .+10 ; 0x2a8 <AddCRC+0x10> |
29e: 20 e0 ldi r18, 0x00 ; 0 |
2a0: 30 e0 ldi r19, 0x00 ; 0 |
2a2: a0 e0 ldi r26, 0x00 ; 0 |
2a4: b0 e0 ldi r27, 0x00 ; 0 |
2a6: 11 c0 rjmp .+34 ; 0x2ca <AddCRC+0x32> |
2a8: 20 e0 ldi r18, 0x00 ; 0 |
2aa: 30 e0 ldi r19, 0x00 ; 0 |
2ac: 40 e0 ldi r20, 0x00 ; 0 |
2ae: 50 e0 ldi r21, 0x00 ; 0 |
2b0: 67 ed ldi r22, 0xD7 ; 215 |
2b2: 70 e0 ldi r23, 0x00 ; 0 |
{ |
tmpCRC += TxdBuffer[i]; |
2b4: fa 01 movw r30, r20 |
2b6: e6 0f add r30, r22 |
2b8: f7 1f adc r31, r23 |
2ba: 80 81 ld r24, Z |
2bc: 28 0f add r18, r24 |
2be: 31 1d adc r19, r1 |
2c0: 4f 5f subi r20, 0xFF ; 255 |
2c2: 5f 4f sbci r21, 0xFF ; 255 |
2c4: a4 17 cp r26, r20 |
2c6: b5 07 cpc r27, r21 |
2c8: a9 f7 brne .-22 ; 0x2b4 <AddCRC+0x1c> |
} |
tmpCRC %= 4096; |
2ca: 3f 70 andi r19, 0x0F ; 15 |
TxdBuffer[i++] = '=' + tmpCRC / 64; |
2cc: c9 01 movw r24, r18 |
2ce: 00 24 eor r0, r0 |
2d0: 88 0f add r24, r24 |
2d2: 99 1f adc r25, r25 |
2d4: 00 1c adc r0, r0 |
2d6: 88 0f add r24, r24 |
2d8: 99 1f adc r25, r25 |
2da: 00 1c adc r0, r0 |
2dc: 89 2f mov r24, r25 |
2de: 90 2d mov r25, r0 |
2e0: 83 5c subi r24, 0xC3 ; 195 |
2e2: 47 ed ldi r20, 0xD7 ; 215 |
2e4: 50 e0 ldi r21, 0x00 ; 0 |
2e6: fd 01 movw r30, r26 |
2e8: e4 0f add r30, r20 |
2ea: f5 1f adc r31, r21 |
2ec: 80 83 st Z, r24 |
2ee: 11 96 adiw r26, 0x01 ; 1 |
TxdBuffer[i++] = '=' + tmpCRC % 64; |
2f0: 2f 73 andi r18, 0x3F ; 63 |
2f2: 23 5c subi r18, 0xC3 ; 195 |
2f4: fd 01 movw r30, r26 |
2f6: e4 0f add r30, r20 |
2f8: f5 1f adc r31, r21 |
2fa: 20 83 st Z, r18 |
2fc: 11 96 adiw r26, 0x01 ; 1 |
TxdBuffer[i++] = '\r'; |
2fe: a4 0f add r26, r20 |
300: b5 1f adc r27, r21 |
302: 8d e0 ldi r24, 0x0D ; 13 |
304: 8c 93 st X, r24 |
UebertragungAbgeschlossen = 0; |
306: 10 92 60 00 sts 0x0060, r1 |
UDR = TxdBuffer[0]; |
30a: 80 91 d7 00 lds r24, 0x00D7 |
30e: 8c b9 out 0x0c, r24 ; 12 |
310: 08 95 ret |
00000312 <SendOutData>: |
} |
// -------------------------------------------------------------------------- |
void SendOutData(unsigned char cmd,unsigned char modul, unsigned char *snd, unsigned char len) |
{ |
312: ff 92 push r15 |
314: 0f 93 push r16 |
316: 1f 93 push r17 |
318: cf 93 push r28 |
31a: df 93 push r29 |
31c: 8a 01 movw r16, r20 |
31e: 72 2f mov r23, r18 |
unsigned int pt = 0; |
unsigned char a,b,c; |
unsigned char ptr = 0; |
TxdBuffer[pt++] = '#'; // Startzeichen |
320: 93 e2 ldi r25, 0x23 ; 35 |
322: 90 93 d7 00 sts 0x00D7, r25 |
TxdBuffer[pt++] = modul; // Adresse (a=0; b=1,...) |
326: 60 93 d8 00 sts 0x00D8, r22 |
TxdBuffer[pt++] = cmd; // Commando |
32a: 80 93 d9 00 sts 0x00D9, r24 |
while(len) |
32e: 22 23 and r18, r18 |
330: 19 f4 brne .+6 ; 0x338 <SendOutData+0x26> |
332: a3 e0 ldi r26, 0x03 ; 3 |
334: b0 e0 ldi r27, 0x00 ; 0 |
336: 5d c0 rjmp .+186 ; 0x3f2 <SendOutData+0xe0> |
338: a3 e0 ldi r26, 0x03 ; 3 |
33a: b0 e0 ldi r27, 0x00 ; 0 |
33c: 60 e0 ldi r22, 0x00 ; 0 |
33e: c7 ed ldi r28, 0xD7 ; 215 |
340: d0 e0 ldi r29, 0x00 ; 0 |
{ |
if(len) { a = snd[ptr++]; len--;} else a = 0; |
342: f8 01 movw r30, r16 |
344: e6 0f add r30, r22 |
346: f1 1d adc r31, r1 |
348: 90 81 ld r25, Z |
34a: 6f 5f subi r22, 0xFF ; 255 |
34c: 71 50 subi r23, 0x01 ; 1 |
if(len) { b = snd[ptr++]; len--;} else b = 0; |
34e: 19 f4 brne .+6 ; 0x356 <SendOutData+0x44> |
350: ff 24 eor r15, r15 |
352: 40 e0 ldi r20, 0x00 ; 0 |
354: 0f c0 rjmp .+30 ; 0x374 <SendOutData+0x62> |
356: f8 01 movw r30, r16 |
358: e6 0f add r30, r22 |
35a: f1 1d adc r31, r1 |
35c: 40 81 ld r20, Z |
35e: 6f 5f subi r22, 0xFF ; 255 |
360: 71 50 subi r23, 0x01 ; 1 |
if(len) { c = snd[ptr++]; len--;} else c = 0; |
362: 11 f4 brne .+4 ; 0x368 <SendOutData+0x56> |
364: ff 24 eor r15, r15 |
366: 06 c0 rjmp .+12 ; 0x374 <SendOutData+0x62> |
368: f8 01 movw r30, r16 |
36a: e6 0f add r30, r22 |
36c: f1 1d adc r31, r1 |
36e: f0 80 ld r15, Z |
370: 6f 5f subi r22, 0xFF ; 255 |
372: 71 50 subi r23, 0x01 ; 1 |
TxdBuffer[pt++] = '=' + (a >> 2); |
374: 89 2f mov r24, r25 |
376: 86 95 lsr r24 |
378: 86 95 lsr r24 |
37a: 83 5c subi r24, 0xC3 ; 195 |
37c: fd 01 movw r30, r26 |
37e: ec 0f add r30, r28 |
380: fd 1f adc r31, r29 |
382: 80 83 st Z, r24 |
384: fd 01 movw r30, r26 |
386: 31 96 adiw r30, 0x01 ; 1 |
TxdBuffer[pt++] = '=' + (((a & 0x03) << 4) | ((b & 0xf0) >> 4)); |
388: 55 27 eor r21, r21 |
38a: 89 2f mov r24, r25 |
38c: 99 27 eor r25, r25 |
38e: 83 70 andi r24, 0x03 ; 3 |
390: 90 70 andi r25, 0x00 ; 0 |
392: 82 95 swap r24 |
394: 92 95 swap r25 |
396: 90 7f andi r25, 0xF0 ; 240 |
398: 98 27 eor r25, r24 |
39a: 80 7f andi r24, 0xF0 ; 240 |
39c: 98 27 eor r25, r24 |
39e: 9a 01 movw r18, r20 |
3a0: 32 95 swap r19 |
3a2: 22 95 swap r18 |
3a4: 2f 70 andi r18, 0x0F ; 15 |
3a6: 23 27 eor r18, r19 |
3a8: 3f 70 andi r19, 0x0F ; 15 |
3aa: 23 27 eor r18, r19 |
3ac: 82 2b or r24, r18 |
3ae: 83 5c subi r24, 0xC3 ; 195 |
3b0: ec 0f add r30, r28 |
3b2: fd 1f adc r31, r29 |
3b4: 80 83 st Z, r24 |
3b6: fd 01 movw r30, r26 |
3b8: 32 96 adiw r30, 0x02 ; 2 |
TxdBuffer[pt++] = '=' + (((b & 0x0f) << 2) | ((c & 0xc0) >> 6)); |
3ba: 4f 70 andi r20, 0x0F ; 15 |
3bc: 50 70 andi r21, 0x00 ; 0 |
3be: 44 0f add r20, r20 |
3c0: 55 1f adc r21, r21 |
3c2: 44 0f add r20, r20 |
3c4: 55 1f adc r21, r21 |
3c6: 8f 2d mov r24, r15 |
3c8: 82 95 swap r24 |
3ca: 86 95 lsr r24 |
3cc: 86 95 lsr r24 |
3ce: 83 70 andi r24, 0x03 ; 3 |
3d0: 84 2b or r24, r20 |
3d2: 83 5c subi r24, 0xC3 ; 195 |
3d4: ec 0f add r30, r28 |
3d6: fd 1f adc r31, r29 |
3d8: 80 83 st Z, r24 |
3da: fd 01 movw r30, r26 |
3dc: 33 96 adiw r30, 0x03 ; 3 |
TxdBuffer[pt++] = '=' + ( c & 0x3f); |
3de: 8f 2d mov r24, r15 |
3e0: 8f 73 andi r24, 0x3F ; 63 |
3e2: 83 5c subi r24, 0xC3 ; 195 |
3e4: ec 0f add r30, r28 |
3e6: fd 1f adc r31, r29 |
3e8: 80 83 st Z, r24 |
3ea: 14 96 adiw r26, 0x04 ; 4 |
3ec: 77 23 and r23, r23 |
3ee: 09 f0 breq .+2 ; 0x3f2 <SendOutData+0xe0> |
3f0: a8 cf rjmp .-176 ; 0x342 <SendOutData+0x30> |
} |
AddCRC(pt); |
3f2: cd 01 movw r24, r26 |
3f4: 51 df rcall .-350 ; 0x298 <AddCRC> |
3f6: df 91 pop r29 |
3f8: cf 91 pop r28 |
3fa: 1f 91 pop r17 |
3fc: 0f 91 pop r16 |
3fe: ff 90 pop r15 |
400: 08 95 ret |
00000402 <main>: |
} |
//----------------------------------------------------------------------------- |
//main |
//main execution loop |
//----------------------------------------------------------------------------- |
int main(void) |
{ |
402: 0f 93 push r16 |
404: 1f 93 push r17 |
406: cf 93 push r28 |
408: df 93 push r29 |
// int message structures; |
VersionInfo.identifier = XIDENTIFIER_VERSION; |
40a: 81 e0 ldi r24, 0x01 ; 1 |
40c: 80 93 6e 00 sts 0x006E, r24 |
VersionInfo.majorversion = MAJORVERSION; |
410: 10 92 6f 00 sts 0x006F, r1 |
VersionInfo.minorversion = MINORVERSION; |
414: 80 93 70 00 sts 0x0070, r24 |
AnalogData.identifier = XIDENTIFIER_ANALOG; |
418: 82 e0 ldi r24, 0x02 ; 2 |
41a: 80 93 3b 01 sts 0x013B, r24 |
Exception.identifier = XIDENTIFIER_EXCEPTION; |
41e: 10 92 71 00 sts 0x0071, r1 |
// PORT D - unused right now |
PORTD = 0x10; |
422: 80 e1 ldi r24, 0x10 ; 16 |
424: 82 bb out 0x12, r24 ; 18 |
DDRD = 0x00; |
426: 11 ba out 0x11, r1 ; 17 |
//Enable TXEN im Register UCR TX-Data Enable & RX Enable |
// USART initialization |
// Communication Parameters: 8 Data, 1 Stop, No Parity |
// USART Receiver: On |
// USART Transmitter: On |
// USART RX/TX interrupt enable |
// USART Mode: Asynchronous |
// USART Baud rate: 57600 |
UCSRA=0x00; |
428: 1b b8 out 0x0b, r1 ; 11 |
UCSRB=0xD8; |
42a: 88 ed ldi r24, 0xD8 ; 216 |
42c: 8a b9 out 0x0a, r24 ; 10 |
UCSRC=0x86; |
42e: 86 e8 ldi r24, 0x86 ; 134 |
430: 80 bd out 0x20, r24 ; 32 |
#ifdef CPUSPEED_20 //20.000MHz |
UBRRH=0x00; |
UBRRL=0x15; |
#endif |
#ifdef CPUSPEED_16 //16.000MHz |
UBRRH=0x00; |
UBRRL=0x10; |
#endif |
#ifdef CPUSPEED_11059 //11.059MHz |
UBRRH=0x00; |
432: 10 bc out 0x20, r1 ; 32 |
UBRRL=0x0B; |
434: 8b e0 ldi r24, 0x0B ; 11 |
436: 89 b9 out 0x09, r24 ; 9 |
#endif |
// Enable interrupts |
sei(); |
438: 78 94 sei |
NeuerDatensatzEmpfangen = 0; |
43a: 10 92 63 00 sts 0x0063, r1 |
43e: 0e e6 ldi r16, 0x6E ; 110 |
440: 10 e0 ldi r17, 0x00 ; 0 |
442: c1 e7 ldi r28, 0x71 ; 113 |
444: d0 e0 ldi r29, 0x00 ; 0 |
// main loop |
while (1) |
{ |
if(NeuerDatensatzEmpfangen==1) { |
446: 80 91 63 00 lds r24, 0x0063 |
44a: 81 30 cpi r24, 0x01 ; 1 |
44c: e1 f7 brne .-8 ; 0x446 <main+0x44> |
switch(RxdBuffer[3]) |
44e: 80 91 76 00 lds r24, 0x0076 |
452: 81 30 cpi r24, 0x01 ; 1 |
454: 19 f0 breq .+6 ; 0x45c <main+0x5a> |
456: 82 30 cpi r24, 0x02 ; 2 |
458: 39 f4 brne .+14 ; 0x468 <__stack+0x9> |
45a: 0d c0 rjmp .+26 ; 0x476 <__stack+0x17> |
{ |
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
// version request |
case XIDENTIFIER_VERSION: |
SendOutData('X',0x00,(unsigned char *) &VersionInfo,sizeof(VersionInfo)); |
45c: 23 e0 ldi r18, 0x03 ; 3 |
45e: a8 01 movw r20, r16 |
460: 60 e0 ldi r22, 0x00 ; 0 |
462: 88 e5 ldi r24, 0x58 ; 88 |
464: 56 df rcall .-340 ; 0x312 <SendOutData> |
466: 07 c0 rjmp .+14 ; 0x476 <__stack+0x17> |
break; |
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
case XIDENTIFIER_ANALOG: |
break; |
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
default: |
Exception.errorcode = ERRORCODE_NOTIMPLEMENTED; |
468: 10 92 72 00 sts 0x0072, r1 |
SendOutData('X',0x00,(unsigned char *) &Exception,sizeof(VersionInfo)); |
46c: 23 e0 ldi r18, 0x03 ; 3 |
46e: ae 01 movw r20, r28 |
470: 60 e0 ldi r22, 0x00 ; 0 |
472: 88 e5 ldi r24, 0x58 ; 88 |
474: 4e df rcall .-356 ; 0x312 <SendOutData> |
} |
NeuerDatensatzEmpfangen=0; |
476: 10 92 63 00 sts 0x0063, r1 |
47a: e5 cf rjmp .-54 ; 0x446 <main+0x44> |
0000047c <_exit>: |
47c: ff cf rjmp .-2 ; 0x47c <_exit> |
/Microsoft Robotics Studio/Roboboard/main.map |
---|
0,0 → 1,372 |
Archive member included because of file (symbol) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr4\libgcc.a(_exit.o) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr4/crtm8.o (exit) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr4\libgcc.a(_copy_data.o) |
main.o (__do_copy_data) |
c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr4\libgcc.a(_clear_bss.o) |
main.o (__do_clear_bss) |
Allocating common symbols |
Common symbol size file |
VersionInfo 0x3 main.o |
Exception 0x2 main.o |
RxdBuffer 0x64 main.o |
TxdBuffer 0x64 main.o |
AnalogData 0x11 main.o |
Discarded input sections |
.stabstr 0x00000000 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr4/crtm8.o |
Memory Configuration |
Name Origin Length Attributes |
text 0x00000000 0x00002000 xr |
data 0x00800060 0x0000ffa0 rw !x |
eeprom 0x00810000 0x00010000 rw !x |
*default* 0x00000000 0xffffffff |
Linker script and memory map |
LOAD c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr4/crtm8.o |
LOAD main.o |
LOAD c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr4\libgcc.a |
LOAD c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr4\libc.a |
LOAD c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr4\libgcc.a |
.hash |
*(.hash) |
.dynsym |
*(.dynsym) |
.dynstr |
*(.dynstr) |
.gnu.version |
*(.gnu.version) |
.gnu.version_d |
*(.gnu.version_d) |
.gnu.version_r |
*(.gnu.version_r) |
.rel.init |
*(.rel.init) |
.rela.init |
*(.rela.init) |
.rel.text |
*(.rel.text) |
*(.rel.text.*) |
*(.rel.gnu.linkonce.t*) |
.rela.text |
*(.rela.text) |
*(.rela.text.*) |
*(.rela.gnu.linkonce.t*) |
.rel.fini |
*(.rel.fini) |
.rela.fini |
*(.rela.fini) |
.rel.rodata |
*(.rel.rodata) |
*(.rel.rodata.*) |
*(.rel.gnu.linkonce.r*) |
.rela.rodata |
*(.rela.rodata) |
*(.rela.rodata.*) |
*(.rela.gnu.linkonce.r*) |
.rel.data |
*(.rel.data) |
*(.rel.data.*) |
*(.rel.gnu.linkonce.d*) |
.rela.data |
*(.rela.data) |
*(.rela.data.*) |
*(.rela.gnu.linkonce.d*) |
.rel.ctors |
*(.rel.ctors) |
.rela.ctors |
*(.rela.ctors) |
.rel.dtors |
*(.rel.dtors) |
.rela.dtors |
*(.rela.dtors) |
.rel.got |
*(.rel.got) |
.rela.got |
*(.rela.got) |
.rel.bss |
*(.rel.bss) |
.rela.bss |
*(.rela.bss) |
.rel.plt |
*(.rel.plt) |
.rela.plt |
*(.rela.plt) |
.text 0x00000000 0x47e |
*(.vectors) |
.vectors 0x00000000 0x26 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr4/crtm8.o |
0x00000000 __vectors |
0x00000000 __vector_default |
*(.vectors) |
*(.progmem.gcc*) |
*(.progmem*) |
0x00000026 . = ALIGN (0x2) |
0x00000026 __trampolines_start = . |
*(.trampolines) |
.trampolines 0x00000026 0x0 linker stubs |
*(.trampolines*) |
0x00000026 __trampolines_end = . |
*(.jumptables) |
*(.jumptables*) |
*(.lowtext) |
*(.lowtext*) |
0x00000026 __ctors_start = . |
*(.ctors) |
0x00000026 __ctors_end = . |
0x00000026 __dtors_start = . |
*(.dtors) |
0x00000026 __dtors_end = . |
SORT(*)(.ctors) |
SORT(*)(.dtors) |
*(.init0) |
.init0 0x00000026 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr4/crtm8.o |
0x00000026 __init |
*(.init0) |
*(.init1) |
*(.init1) |
*(.init2) |
.init2 0x00000026 0xc c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr4/crtm8.o |
*(.init2) |
*(.init3) |
*(.init3) |
*(.init4) |
.init4 0x00000032 0x16 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr4\libgcc.a(_copy_data.o) |
0x00000032 __do_copy_data |
.init4 0x00000048 0x10 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr4\libgcc.a(_clear_bss.o) |
0x00000048 __do_clear_bss |
*(.init4) |
*(.init5) |
*(.init5) |
*(.init6) |
*(.init6) |
*(.init7) |
*(.init7) |
*(.init8) |
*(.init8) |
*(.init9) |
.init9 0x00000058 0x4 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr4/crtm8.o |
*(.init9) |
*(.text) |
.text 0x0000005c 0x2 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr4/crtm8.o |
0x0000005c __vector_1 |
0x0000005c __vector_12 |
0x0000005c __bad_interrupt |
0x0000005c __vector_6 |
0x0000005c __vector_3 |
0x0000005c __vector_17 |
0x0000005c __vector_7 |
0x0000005c __vector_5 |
0x0000005c __vector_4 |
0x0000005c __vector_9 |
0x0000005c __vector_2 |
0x0000005c __vector_15 |
0x0000005c __vector_8 |
0x0000005c __vector_14 |
0x0000005c __vector_10 |
0x0000005c __vector_16 |
0x0000005c __vector_18 |
.text 0x0000005e 0x41e main.o |
0x000000d0 __vector_11 |
0x00000066 __vector_13 |
0x00000298 AddCRC |
0x00000402 main |
0x00000312 SendOutData |
0x0000005e uart_putchar |
.text 0x0000047c 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr4\libgcc.a(_exit.o) |
.text 0x0000047c 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr4\libgcc.a(_copy_data.o) |
.text 0x0000047c 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr4\libgcc.a(_clear_bss.o) |
0x0000047c . = ALIGN (0x2) |
*(.text.*) |
.text.libgcc 0x0000047c 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr4\libgcc.a(_exit.o) |
.text.libgcc 0x0000047c 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr4\libgcc.a(_copy_data.o) |
.text.libgcc 0x0000047c 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr4\libgcc.a(_clear_bss.o) |
0x0000047c . = ALIGN (0x2) |
*(.fini9) |
.fini9 0x0000047c 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr4\libgcc.a(_exit.o) |
0x0000047c exit |
0x0000047c _exit |
*(.fini9) |
*(.fini8) |
*(.fini8) |
*(.fini7) |
*(.fini7) |
*(.fini6) |
*(.fini6) |
*(.fini5) |
*(.fini5) |
*(.fini4) |
*(.fini4) |
*(.fini3) |
*(.fini3) |
*(.fini2) |
*(.fini2) |
*(.fini1) |
*(.fini1) |
*(.fini0) |
.fini0 0x0000047c 0x2 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr4\libgcc.a(_exit.o) |
*(.fini0) |
0x0000047e _etext = . |
.data 0x00800060 0x2 load address 0x0000047e |
0x00800060 PROVIDE (__data_start, .) |
*(.data) |
.data 0x00800060 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr4/crtm8.o |
.data 0x00800060 0x1 main.o |
0x00800060 UebertragungAbgeschlossen |
.data 0x00800061 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr4\libgcc.a(_exit.o) |
.data 0x00800061 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr4\libgcc.a(_copy_data.o) |
.data 0x00800061 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr4\libgcc.a(_clear_bss.o) |
*(.data*) |
*(.rodata) |
*(.rodata*) |
*(.gnu.linkonce.d*) |
0x00800062 . = ALIGN (0x2) |
*fill* 0x00800061 0x1 00 |
0x00800062 _edata = . |
0x00800062 PROVIDE (__data_end, .) |
.bss 0x00800062 0xea |
0x00800062 PROVIDE (__bss_start, .) |
*(.bss) |
.bss 0x00800062 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr4/crtm8.o |
.bss 0x00800062 0xc main.o |
0x00800062 SioTmp |
0x00800063 NeuerDatensatzEmpfangen |
0x00800064 CntCrcError |
0x00800065 AnzahlEmpfangsBytes |
.bss 0x0080006e 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr4\libgcc.a(_exit.o) |
.bss 0x0080006e 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr4\libgcc.a(_copy_data.o) |
.bss 0x0080006e 0x0 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr4\libgcc.a(_clear_bss.o) |
*(.bss*) |
*(COMMON) |
COMMON 0x0080006e 0xde main.o |
0x0080006e VersionInfo |
0x00800071 Exception |
0x00800073 RxdBuffer |
0x008000d7 TxdBuffer |
0x0080013b AnalogData |
0x0080014c PROVIDE (__bss_end, .) |
0x0000047e __data_load_start = LOADADDR (.data) |
0x00000480 __data_load_end = (__data_load_start + SIZEOF (.data)) |
.noinit 0x0080014c 0x0 |
0x0080014c PROVIDE (__noinit_start, .) |
*(.noinit*) |
0x0080014c PROVIDE (__noinit_end, .) |
0x0080014c _end = . |
0x0080014c PROVIDE (__heap_start, .) |
.eeprom 0x00810000 0x0 |
*(.eeprom*) |
0x00810000 __eeprom_end = . |
.stab 0x00000000 0x378 |
*(.stab) |
.stab 0x00000000 0x378 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr4/crtm8.o |
.stabstr 0x00000000 0x71 |
*(.stabstr) |
.stabstr 0x00000000 0x71 c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr4/crtm8.o |
.stab.excl |
*(.stab.excl) |
.stab.exclstr |
*(.stab.exclstr) |
.stab.index |
*(.stab.index) |
.stab.indexstr |
*(.stab.indexstr) |
.comment |
*(.comment) |
.debug |
*(.debug) |
.line |
*(.line) |
.debug_srcinfo |
*(.debug_srcinfo) |
.debug_sfnames |
*(.debug_sfnames) |
.debug_aranges 0x00000000 0x20 |
*(.debug_aranges) |
.debug_aranges |
0x00000000 0x20 main.o |
.debug_pubnames |
0x00000000 0x11d |
*(.debug_pubnames) |
.debug_pubnames |
0x00000000 0x11d main.o |
.debug_info 0x00000000 0x3bf |
*(.debug_info) |
.debug_info 0x00000000 0x3bf main.o |
*(.gnu.linkonce.wi.*) |
.debug_abbrev 0x00000000 0x11c |
*(.debug_abbrev) |
.debug_abbrev 0x00000000 0x11c main.o |
.debug_line 0x00000000 0x367 |
*(.debug_line) |
.debug_line 0x00000000 0x367 main.o |
.debug_frame 0x00000000 0x70 |
*(.debug_frame) |
.debug_frame 0x00000000 0x70 main.o |
.debug_str 0x00000000 0x1dc |
*(.debug_str) |
.debug_str 0x00000000 0x1dc main.o |
0x236 (size before relaxing) |
.debug_loc 0x00000000 0x220 |
*(.debug_loc) |
.debug_loc 0x00000000 0x220 main.o |
.debug_macinfo |
*(.debug_macinfo) |
OUTPUT(main.elf elf32-avr) |
LOAD linker stubs |
/Microsoft Robotics Studio/Roboboard/main.srec |
---|
0,0 → 1,75 |
S00C00006D61696E2E7372656373 |
S113000012C02CC02BC02AC029C028C027C026C0BB |
S113001025C024C023C05CC021C025C01FC01EC091 |
S11300201DC01CC01BC011241FBECFE5D4E0DEBF21 |
S1130030CDBF10E0A0E6B0E0EEE7F4E002C005902A |
S11300400D92A236B107D9F711E0A2E6B0E001C0E3 |
S11300501D92AC34B107E1F7D4D110C2D1CF8CB921 |
S113006080E090E008951F920F920FB60F92112432 |
S11300708F939F93EF93FF93809160008823D9F42B |
S113008080916C0090916D00019690936D00809327 |
S11300906C00FC01E952FF4FE081ED3019F0843629 |
S11300A0910539F410926D0010926C0081E08093F8 |
S11300B06000ECB904C010926D0010926C00FF91C6 |
S11300C0EF919F918F910F900FBE0F901F901895F5 |
S11300D01F920F920FB60F9211242F933F934F93B9 |
S11300E05F936F937F938F939F93AF93BF93EF939C |
S11300F0FF938CB18093620050916700543610F0E6 |
S113010010926600809162008D3009F056C0809193 |
S11301106600823009F051C010926600652F77277F |
S1130120FB01329723E730E0E20FF31F4081CB015C |
S11301300197DC01A20FB31F2C9180916A0090916A |
S11301406B00841B9109821B91099F7090936B0033 |
S113015080936A009C010024220F331F001C220F8D |
S1130160331F001C232F302D235C209369008F73D1 |
S1130170382F335C309368008081281729F48C91E0 |
S1130180381711F491E006C0809164008F5F80936A |
S1130190640090E080916300882309F06CC0992387 |
S11301A009F469C081E08093630050936500FB010A |
S11301B0ED58FF4F8DE080835EC0809166008130F2 |
S11301C001F1813020F0823009F053C035C08091B4 |
S11301D06200833239F480916300882319F481E04A |
S11301E080936600809162008093730081E0809325 |
S11301F0670080916200992790936B0080936A0056 |
S11302003AC082E08093660080916200E3E7F0E008 |
S1130210E50FF11D8083852F8F5F80936700209108 |
S1130220620080916A0090916B00820F911D9093FF |
S11302306B0080936A001FC080916200E3E7F0E0E6 |
S1130240E50FF11D8083543628F4852F8F5F80934A |
S1130250670002C0109266002091620080916A00DB |
S113026090916B00820F911D90936B0080936A00B4 |
S113027002C010926600FF91EF91BF91AF919F91E0 |
S11302808F917F916F915F914F913F912F910F903B |
S11302900FBE0F901F901895DC01892B29F420E0E4 |
S11302A030E0A0E0B0E011C020E030E040E050E0F9 |
S11302B067ED70E0FA01E60FF71F8081280F311D0A |
S11302C04F5F5F4FA417B507A9F73F70C90100241A |
S11302D0880F991F001C880F991F001C892F902DCF |
S11302E0835C47ED50E0FD01E40FF51F8083119618 |
S11302F02F73235CFD01E40FF51F20831196A40FD7 |
S1130300B51F8DE08C93109260008091D7008CB95A |
S11303100895FF920F931F93CF93DF938A01722F57 |
S113032093E29093D7006093D8008093D90022235E |
S113033019F4A3E0B0E05DC0A3E0B0E060E0C7ED75 |
S1130340D0E0F801E60FF11D90816F5F715019F450 |
S1130350FF2440E00FC0F801E60FF11D40816F5FFC |
S1130360715011F4FF2406C0F801E60FF11DF0806E |
S11303706F5F7150892F86958695835CFD01EC0F24 |
S1130380FD1F8083FD0131965527892F992783709E |
S1130390907082959295907F9827807F98279A01F4 |
S11303A0329522952F7023273F702327822B835C5D |
S11303B0EC0FFD1F8083FD0132964F705070440F87 |
S11303C0551F440F551F8F2D8295869586958370F2 |
S11303D0842B835CEC0FFD1F8083FD0133968F2DEE |
S11303E08F73835CEC0FFD1F80831496772309F0D1 |
S11303F0A8CFCD0151DFDF91CF911F910F91FF90D5 |
S113040008950F931F93CF93DF9381E080936E0041 |
S113041010926F008093700082E080933B011092F1 |
S1130420710080E182BB11BA1BB888ED8AB986E8F5 |
S113043080BD10BC8BE089B97894109263000EE6FD |
S113044010E0C1E7D0E0809163008130E1F7809152 |
S11304507600813019F0823039F40DC023E0A80110 |
S113046060E088E556DF07C01092720023E0AE0119 |
S111047060E088E54EDF10926300E5CFFFCF19 |
S105047E010077 |
S9030000FC |