first commit
This commit is contained in:
commit
e6e5b45e7c
1
.ajxp_meta
Executable file
1
.ajxp_meta
Executable file
@ -0,0 +1 @@
|
|||||||
|
a:9:{s:11:"BOSCH_SCU.c";a:1:{s:24:"AJXP_METADATA_SHAREDUSER";a:1:{s:11:"file_hahser";a:2:{s:3:"md5";s:32:"8650026666250d36b521231f5781a381";s:9:"md5_mtime";i:1311459940;}}}s:13:"BOSCH_SCU.eep";a:1:{s:24:"AJXP_METADATA_SHAREDUSER";a:1:{s:11:"file_hahser";a:2:{s:3:"md5";s:32:"aef2bc6462dabb81b069a9ba4ded0143";s:9:"md5_mtime";i:1311459940;}}}s:13:"BOSCH_SCU.elf";a:1:{s:24:"AJXP_METADATA_SHAREDUSER";a:1:{s:11:"file_hahser";a:2:{s:3:"md5";s:32:"fb5f31f92137a8976e9177dc6e723bfe";s:9:"md5_mtime";i:1311459940;}}}s:13:"BOSCH_SCU.hex";a:1:{s:24:"AJXP_METADATA_SHAREDUSER";a:1:{s:11:"file_hahser";a:2:{s:3:"md5";s:32:"1bc4e99534c29c2547139b23b72eb828";s:9:"md5_mtime";i:1311459940;}}}s:13:"BOSCH_SCU.lss";a:1:{s:24:"AJXP_METADATA_SHAREDUSER";a:1:{s:11:"file_hahser";a:2:{s:3:"md5";s:32:"54c0573b706c3eb148f6ff570ca723b8";s:9:"md5_mtime";i:1311459940;}}}s:13:"BOSCH_SCU.lst";a:1:{s:24:"AJXP_METADATA_SHAREDUSER";a:1:{s:11:"file_hahser";a:2:{s:3:"md5";s:32:"9a861e3d3b399f0bebeaae676448816d";s:9:"md5_mtime";i:1311459940;}}}s:13:"BOSCH_SCU.map";a:1:{s:24:"AJXP_METADATA_SHAREDUSER";a:1:{s:11:"file_hahser";a:2:{s:3:"md5";s:32:"2f5d8066277b09730e28dc11e78542a7";s:9:"md5_mtime";i:1311459940;}}}s:13:"BOSCH_SCU.sym";a:1:{s:24:"AJXP_METADATA_SHAREDUSER";a:1:{s:11:"file_hahser";a:2:{s:3:"md5";s:32:"9406b2c07ff523d6ffb24ff85a411368";s:9:"md5_mtime";i:1311459940;}}}s:8:"makefile";a:1:{s:24:"AJXP_METADATA_SHAREDUSER";a:1:{s:11:"file_hahser";a:2:{s:3:"md5";s:32:"1e09920c492ce1626a51557031fa73fb";s:9:"md5_mtime";i:1311459940;}}}}
|
||||||
119
BOSCH_SCU.c
Executable file
119
BOSCH_SCU.c
Executable file
@ -0,0 +1,119 @@
|
|||||||
|
/*================================================================================================
|
||||||
|
|
||||||
|
CMtec BOSCH_SpeedControlUnit copyright 2008 v1.0 (2008-08-07)
|
||||||
|
|
||||||
|
Name: Christoffer Martinsson
|
||||||
|
E-mail: cm@cmtec.se
|
||||||
|
|
||||||
|
Uses:
|
||||||
|
PB1 = PWM output
|
||||||
|
PB2 = Sensor input
|
||||||
|
|
||||||
|
================================================================================================*/
|
||||||
|
|
||||||
|
#include <avr/delay.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <inttypes.h>
|
||||||
|
#include <avr/io.h>
|
||||||
|
#include <avr/interrupt.h>
|
||||||
|
#include <avr/signal.h>
|
||||||
|
#include <avr/eeprom.h>
|
||||||
|
|
||||||
|
|
||||||
|
/*================================================================================================
|
||||||
|
Functions
|
||||||
|
================================================================================================*/
|
||||||
|
/*------------------------------------------------------------------------------------------------
|
||||||
|
initIO
|
||||||
|
|
||||||
|
Description: Initialise I/O
|
||||||
|
Input: -
|
||||||
|
Output: -
|
||||||
|
------------------------------------------------------------------------------------------------*/
|
||||||
|
void initIO (void){
|
||||||
|
|
||||||
|
/* Start PLL */
|
||||||
|
PLLCSR = (1<<PLLE);
|
||||||
|
loop_until_bit_is_set(PLLCSR, PLOCK);
|
||||||
|
PLLCSR |= (1<<PCKE);
|
||||||
|
|
||||||
|
/* Direction settings for port B */
|
||||||
|
DDRB = (1<<PB1);
|
||||||
|
|
||||||
|
/* Timer/PWM settings */
|
||||||
|
OCR1A = 0; // PWM value = 0
|
||||||
|
OCR1C = 255; // ~62kHz
|
||||||
|
TCCR1 = (1<<PWM1A)|(1<<COM1A0)|(1<<COM1A1)|(1<<CS11)|(1<<CS10);
|
||||||
|
|
||||||
|
/* ADC settings */
|
||||||
|
DIDR0 = (1<<ADC1D);
|
||||||
|
ADMUX = (1<<ADLAR)|(1<<MUX0);
|
||||||
|
ADCSRA = (1<<ADEN);
|
||||||
|
|
||||||
|
}
|
||||||
|
/*------------------------------------------------------------------------------------------------
|
||||||
|
readSensor
|
||||||
|
|
||||||
|
Description: Reading value from distance-sensor
|
||||||
|
Input: -
|
||||||
|
Output: -
|
||||||
|
------------------------------------------------------------------------------------------------*/
|
||||||
|
unsigned char readSensor (void){
|
||||||
|
|
||||||
|
ADCSRA |= (1<<ADSC);
|
||||||
|
loop_until_bit_is_clear(ADCSRA,ADSC);
|
||||||
|
return ADCH;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------------------------------------------
|
||||||
|
setPWM
|
||||||
|
|
||||||
|
Description: Set PMW output
|
||||||
|
Input: -
|
||||||
|
Output: -
|
||||||
|
------------------------------------------------------------------------------------------------*/
|
||||||
|
void setPWM (unsigned char pwmValue){
|
||||||
|
|
||||||
|
if(pwmValue < 255 && pwmValue > 70)
|
||||||
|
{
|
||||||
|
pwmValue = pwmValue - 70;
|
||||||
|
OCR1A = pwmValue;
|
||||||
|
}
|
||||||
|
else if(pwmValue <= 70)
|
||||||
|
{
|
||||||
|
OCR1A = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
OCR1A = pwmValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*================================================================================================
|
||||||
|
Main
|
||||||
|
================================================================================================*/
|
||||||
|
int main (void){
|
||||||
|
|
||||||
|
unsigned char tmp = 0;
|
||||||
|
|
||||||
|
cli(); // Disable global interrupt
|
||||||
|
|
||||||
|
initIO();
|
||||||
|
|
||||||
|
sei(); // Enable global interrupt
|
||||||
|
|
||||||
|
|
||||||
|
while(1){
|
||||||
|
|
||||||
|
setPWM(readSensor());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
/*================================================================================================
|
||||||
|
End
|
||||||
|
================================================================================================*/
|
||||||
|
|
||||||
1
BOSCH_SCU.eep
Executable file
1
BOSCH_SCU.eep
Executable file
@ -0,0 +1 @@
|
|||||||
|
:00000001FF
|
||||||
BIN
BOSCH_SCU.elf
Executable file
BIN
BOSCH_SCU.elf
Executable file
Binary file not shown.
14
BOSCH_SCU.hex
Executable file
14
BOSCH_SCU.hex
Executable file
@ -0,0 +1,14 @@
|
|||||||
|
:100000000EC026C025C024C023C022C021C020C0ED
|
||||||
|
:100010001FC01EC01DC01CC01BC01AC019C01124A7
|
||||||
|
:100020001FBECFEDCDBF10E0A0E6B0E0EAECF0E0FF
|
||||||
|
:1000300002C005900D92A036B107D9F710E0A0E6F6
|
||||||
|
:10004000B0E001C01D92A036B107E1F729D03BC056
|
||||||
|
:10005000D7CF82E087BD07B400FEFDCF87B58460AF
|
||||||
|
:1000600087BD82E087BB1EBC8FEF8DBD83E780BF5D
|
||||||
|
:1000700084E084BB81E287B980E886B90895369A26
|
||||||
|
:100080003699FECF85B10895982F8754883B10F498
|
||||||
|
:10009000965404C0973410F41EBC08959EBD089574
|
||||||
|
:1000A000F894D7DF7894369A3699FECF95B1892F98
|
||||||
|
:1000B0008754883B10F4965404C0973410F41EBC47
|
||||||
|
:0A00C000F2CF9EBDF0CFF894FFCF01
|
||||||
|
:00000001FF
|
||||||
251
BOSCH_SCU.lss
Executable file
251
BOSCH_SCU.lss
Executable file
@ -0,0 +1,251 @@
|
|||||||
|
|
||||||
|
BOSCH_SCU.elf: file format elf32-avr
|
||||||
|
|
||||||
|
Sections:
|
||||||
|
Idx Name Size VMA LMA File off Algn
|
||||||
|
0 .text 000000ca 00000000 00000000 00000054 2**1
|
||||||
|
CONTENTS, ALLOC, LOAD, READONLY, CODE
|
||||||
|
1 .debug_aranges 00000020 00000000 00000000 0000011e 2**0
|
||||||
|
CONTENTS, READONLY, DEBUGGING
|
||||||
|
2 .debug_pubnames 00000040 00000000 00000000 0000013e 2**0
|
||||||
|
CONTENTS, READONLY, DEBUGGING
|
||||||
|
3 .debug_info 00000110 00000000 00000000 0000017e 2**0
|
||||||
|
CONTENTS, READONLY, DEBUGGING
|
||||||
|
4 .debug_abbrev 000000e0 00000000 00000000 0000028e 2**0
|
||||||
|
CONTENTS, READONLY, DEBUGGING
|
||||||
|
5 .debug_line 0000016a 00000000 00000000 0000036e 2**0
|
||||||
|
CONTENTS, READONLY, DEBUGGING
|
||||||
|
6 .debug_frame 00000050 00000000 00000000 000004d8 2**2
|
||||||
|
CONTENTS, READONLY, DEBUGGING
|
||||||
|
7 .debug_str 00000088 00000000 00000000 00000528 2**0
|
||||||
|
CONTENTS, READONLY, DEBUGGING
|
||||||
|
8 .debug_loc 0000001e 00000000 00000000 000005b0 2**0
|
||||||
|
CONTENTS, READONLY, DEBUGGING
|
||||||
|
Disassembly of section .text:
|
||||||
|
|
||||||
|
00000000 <__vectors>:
|
||||||
|
0: 0e c0 rjmp .+28 ; 0x1e <__ctors_end>
|
||||||
|
2: 26 c0 rjmp .+76 ; 0x50 <__bad_interrupt>
|
||||||
|
4: 25 c0 rjmp .+74 ; 0x50 <__bad_interrupt>
|
||||||
|
6: 24 c0 rjmp .+72 ; 0x50 <__bad_interrupt>
|
||||||
|
8: 23 c0 rjmp .+70 ; 0x50 <__bad_interrupt>
|
||||||
|
a: 22 c0 rjmp .+68 ; 0x50 <__bad_interrupt>
|
||||||
|
c: 21 c0 rjmp .+66 ; 0x50 <__bad_interrupt>
|
||||||
|
e: 20 c0 rjmp .+64 ; 0x50 <__bad_interrupt>
|
||||||
|
10: 1f c0 rjmp .+62 ; 0x50 <__bad_interrupt>
|
||||||
|
12: 1e c0 rjmp .+60 ; 0x50 <__bad_interrupt>
|
||||||
|
14: 1d c0 rjmp .+58 ; 0x50 <__bad_interrupt>
|
||||||
|
16: 1c c0 rjmp .+56 ; 0x50 <__bad_interrupt>
|
||||||
|
18: 1b c0 rjmp .+54 ; 0x50 <__bad_interrupt>
|
||||||
|
1a: 1a c0 rjmp .+52 ; 0x50 <__bad_interrupt>
|
||||||
|
1c: 19 c0 rjmp .+50 ; 0x50 <__bad_interrupt>
|
||||||
|
|
||||||
|
0000001e <__ctors_end>:
|
||||||
|
1e: 11 24 eor r1, r1
|
||||||
|
20: 1f be out 0x3f, r1 ; 63
|
||||||
|
22: cf ed ldi r28, 0xDF ; 223
|
||||||
|
24: cd bf out 0x3d, r28 ; 61
|
||||||
|
|
||||||
|
00000026 <__do_copy_data>:
|
||||||
|
26: 10 e0 ldi r17, 0x00 ; 0
|
||||||
|
28: a0 e6 ldi r26, 0x60 ; 96
|
||||||
|
2a: b0 e0 ldi r27, 0x00 ; 0
|
||||||
|
2c: ea ec ldi r30, 0xCA ; 202
|
||||||
|
2e: f0 e0 ldi r31, 0x00 ; 0
|
||||||
|
30: 02 c0 rjmp .+4 ; 0x36 <.do_copy_data_start>
|
||||||
|
|
||||||
|
00000032 <.do_copy_data_loop>:
|
||||||
|
32: 05 90 lpm r0, Z+
|
||||||
|
34: 0d 92 st X+, r0
|
||||||
|
|
||||||
|
00000036 <.do_copy_data_start>:
|
||||||
|
36: a0 36 cpi r26, 0x60 ; 96
|
||||||
|
38: b1 07 cpc r27, r17
|
||||||
|
3a: d9 f7 brne .-10 ; 0x32 <.do_copy_data_loop>
|
||||||
|
|
||||||
|
0000003c <__do_clear_bss>:
|
||||||
|
3c: 10 e0 ldi r17, 0x00 ; 0
|
||||||
|
3e: a0 e6 ldi r26, 0x60 ; 96
|
||||||
|
40: b0 e0 ldi r27, 0x00 ; 0
|
||||||
|
42: 01 c0 rjmp .+2 ; 0x46 <.do_clear_bss_start>
|
||||||
|
|
||||||
|
00000044 <.do_clear_bss_loop>:
|
||||||
|
44: 1d 92 st X+, r1
|
||||||
|
|
||||||
|
00000046 <.do_clear_bss_start>:
|
||||||
|
46: a0 36 cpi r26, 0x60 ; 96
|
||||||
|
48: b1 07 cpc r27, r17
|
||||||
|
4a: e1 f7 brne .-8 ; 0x44 <.do_clear_bss_loop>
|
||||||
|
4c: 29 d0 rcall .+82 ; 0xa0 <main>
|
||||||
|
4e: 3b c0 rjmp .+118 ; 0xc6 <_exit>
|
||||||
|
|
||||||
|
00000050 <__bad_interrupt>:
|
||||||
|
50: d7 cf rjmp .-82 ; 0x0 <__vectors>
|
||||||
|
|
||||||
|
00000052 <initIO>:
|
||||||
|
|
||||||
|
Description: Initialise I/O
|
||||||
|
Input: -
|
||||||
|
Output: -
|
||||||
|
------------------------------------------------------------------------------------------------*/
|
||||||
|
void initIO (void){
|
||||||
|
52: 82 e0 ldi r24, 0x02 ; 2
|
||||||
|
54: 87 bd out 0x27, r24 ; 39
|
||||||
|
|
||||||
|
/* Start PLL */
|
||||||
|
PLLCSR = (1<<PLLE);
|
||||||
|
loop_until_bit_is_set(PLLCSR, PLOCK);
|
||||||
|
56: 07 b4 in r0, 0x27 ; 39
|
||||||
|
58: 00 fe sbrs r0, 0
|
||||||
|
5a: fd cf rjmp .-6 ; 0x56 <initIO+0x4>
|
||||||
|
PLLCSR |= (1<<PCKE);
|
||||||
|
5c: 87 b5 in r24, 0x27 ; 39
|
||||||
|
5e: 84 60 ori r24, 0x04 ; 4
|
||||||
|
60: 87 bd out 0x27, r24 ; 39
|
||||||
|
|
||||||
|
/* Direction settings for port B */
|
||||||
|
DDRB = (1<<PB1);
|
||||||
|
62: 82 e0 ldi r24, 0x02 ; 2
|
||||||
|
64: 87 bb out 0x17, r24 ; 23
|
||||||
|
|
||||||
|
/* Timer/PWM settings */
|
||||||
|
OCR1A = 0; // PWM value = 0
|
||||||
|
66: 1e bc out 0x2e, r1 ; 46
|
||||||
|
OCR1C = 255; // ~62kHz
|
||||||
|
68: 8f ef ldi r24, 0xFF ; 255
|
||||||
|
6a: 8d bd out 0x2d, r24 ; 45
|
||||||
|
TCCR1 = (1<<PWM1A)|(1<<COM1A0)|(1<<COM1A1)|(1<<CS11)|(1<<CS10);
|
||||||
|
6c: 83 e7 ldi r24, 0x73 ; 115
|
||||||
|
6e: 80 bf out 0x30, r24 ; 48
|
||||||
|
|
||||||
|
/* ADC settings */
|
||||||
|
DIDR0 = (1<<ADC1D);
|
||||||
|
70: 84 e0 ldi r24, 0x04 ; 4
|
||||||
|
72: 84 bb out 0x14, r24 ; 20
|
||||||
|
ADMUX = (1<<ADLAR)|(1<<MUX0);
|
||||||
|
74: 81 e2 ldi r24, 0x21 ; 33
|
||||||
|
76: 87 b9 out 0x07, r24 ; 7
|
||||||
|
ADCSRA = (1<<ADEN);
|
||||||
|
78: 80 e8 ldi r24, 0x80 ; 128
|
||||||
|
7a: 86 b9 out 0x06, r24 ; 6
|
||||||
|
|
||||||
|
}
|
||||||
|
7c: 08 95 ret
|
||||||
|
|
||||||
|
0000007e <readSensor>:
|
||||||
|
|
||||||
|
Description: Reading value from distance-sensor
|
||||||
|
Input: -
|
||||||
|
Output: -
|
||||||
|
------------------------------------------------------------------------------------------------*/
|
||||||
|
unsigned char readSensor (void){
|
||||||
|
7e: 36 9a sbi 0x06, 6 ; 6
|
||||||
|
|
||||||
|
ADCSRA |= (1<<ADSC);
|
||||||
|
loop_until_bit_is_clear(ADCSRA,ADSC);
|
||||||
|
80: 36 99 sbic 0x06, 6 ; 6
|
||||||
|
82: fe cf rjmp .-4 ; 0x80 <readSensor+0x2>
|
||||||
|
return ADCH;
|
||||||
|
84: 85 b1 in r24, 0x05 ; 5
|
||||||
|
|
||||||
|
}
|
||||||
|
86: 08 95 ret
|
||||||
|
|
||||||
|
00000088 <setPWM>:
|
||||||
|
|
||||||
|
Description: Set PMW output
|
||||||
|
Input: -
|
||||||
|
Output: -
|
||||||
|
------------------------------------------------------------------------------------------------*/
|
||||||
|
void setPWM (unsigned char pwmValue){
|
||||||
|
88: 98 2f mov r25, r24
|
||||||
|
|
||||||
|
if(pwmValue < 255 && pwmValue > 70)
|
||||||
|
8a: 87 54 subi r24, 0x47 ; 71
|
||||||
|
8c: 88 3b cpi r24, 0xB8 ; 184
|
||||||
|
8e: 10 f4 brcc .+4 ; 0x94 <setPWM+0xc>
|
||||||
|
{
|
||||||
|
pwmValue = pwmValue - 70;
|
||||||
|
90: 96 54 subi r25, 0x46 ; 70
|
||||||
|
92: 04 c0 rjmp .+8 ; 0x9c <setPWM+0x14>
|
||||||
|
OCR1A = pwmValue;
|
||||||
|
}
|
||||||
|
else if(pwmValue <= 70)
|
||||||
|
94: 97 34 cpi r25, 0x47 ; 71
|
||||||
|
96: 10 f4 brcc .+4 ; 0x9c <setPWM+0x14>
|
||||||
|
{
|
||||||
|
OCR1A = 0;
|
||||||
|
98: 1e bc out 0x2e, r1 ; 46
|
||||||
|
9a: 08 95 ret
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
OCR1A = pwmValue;
|
||||||
|
9c: 9e bd out 0x2e, r25 ; 46
|
||||||
|
9e: 08 95 ret
|
||||||
|
|
||||||
|
000000a0 <main>:
|
||||||
|
}
|
||||||
|
|
||||||
|
/*================================================================================================
|
||||||
|
Main
|
||||||
|
================================================================================================*/
|
||||||
|
int main (void){
|
||||||
|
a0: f8 94 cli
|
||||||
|
|
||||||
|
unsigned char tmp = 0;
|
||||||
|
|
||||||
|
cli(); // Disable global interrupt
|
||||||
|
|
||||||
|
initIO();
|
||||||
|
a2: d7 df rcall .-82 ; 0x52 <initIO>
|
||||||
|
|
||||||
|
sei(); // Enable global interrupt
|
||||||
|
a4: 78 94 sei
|
||||||
|
Input: -
|
||||||
|
Output: -
|
||||||
|
------------------------------------------------------------------------------------------------*/
|
||||||
|
unsigned char readSensor (void){
|
||||||
|
|
||||||
|
ADCSRA |= (1<<ADSC);
|
||||||
|
a6: 36 9a sbi 0x06, 6 ; 6
|
||||||
|
loop_until_bit_is_clear(ADCSRA,ADSC);
|
||||||
|
a8: 36 99 sbic 0x06, 6 ; 6
|
||||||
|
aa: fe cf rjmp .-4 ; 0xa8 <main+0x8>
|
||||||
|
return ADCH;
|
||||||
|
ac: 95 b1 in r25, 0x05 ; 5
|
||||||
|
Input: -
|
||||||
|
Output: -
|
||||||
|
------------------------------------------------------------------------------------------------*/
|
||||||
|
void setPWM (unsigned char pwmValue){
|
||||||
|
|
||||||
|
if(pwmValue < 255 && pwmValue > 70)
|
||||||
|
ae: 89 2f mov r24, r25
|
||||||
|
b0: 87 54 subi r24, 0x47 ; 71
|
||||||
|
b2: 88 3b cpi r24, 0xB8 ; 184
|
||||||
|
b4: 10 f4 brcc .+4 ; 0xba <main+0x1a>
|
||||||
|
{
|
||||||
|
pwmValue = pwmValue - 70;
|
||||||
|
b6: 96 54 subi r25, 0x46 ; 70
|
||||||
|
b8: 04 c0 rjmp .+8 ; 0xc2 <main+0x22>
|
||||||
|
OCR1A = pwmValue;
|
||||||
|
}
|
||||||
|
else if(pwmValue <= 70)
|
||||||
|
ba: 97 34 cpi r25, 0x47 ; 71
|
||||||
|
bc: 10 f4 brcc .+4 ; 0xc2 <main+0x22>
|
||||||
|
{
|
||||||
|
OCR1A = 0;
|
||||||
|
be: 1e bc out 0x2e, r1 ; 46
|
||||||
|
c0: f2 cf rjmp .-28 ; 0xa6 <main+0x6>
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
OCR1A = pwmValue;
|
||||||
|
c2: 9e bd out 0x2e, r25 ; 46
|
||||||
|
c4: f0 cf rjmp .-32 ; 0xa6 <main+0x6>
|
||||||
|
|
||||||
|
000000c6 <_exit>:
|
||||||
|
c6: f8 94 cli
|
||||||
|
|
||||||
|
000000c8 <__stop_program>:
|
||||||
|
c8: ff cf rjmp .-2 ; 0xc8 <__stop_program>
|
||||||
172
BOSCH_SCU.lst
Executable file
172
BOSCH_SCU.lst
Executable file
@ -0,0 +1,172 @@
|
|||||||
|
1 .file "BOSCH_SCU.c"
|
||||||
|
2 __SREG__ = 0x3f
|
||||||
|
3 __SP_H__ = 0x3e
|
||||||
|
4 __SP_L__ = 0x3d
|
||||||
|
5 __CCP__ = 0x34
|
||||||
|
6 __tmp_reg__ = 0
|
||||||
|
7 __zero_reg__ = 1
|
||||||
|
8 .global __do_copy_data
|
||||||
|
9 .global __do_clear_bss
|
||||||
|
17 .Ltext0:
|
||||||
|
18 .global initIO
|
||||||
|
20 initIO:
|
||||||
|
21 .LFB14:
|
||||||
|
22 .LM1:
|
||||||
|
23 /* prologue: function */
|
||||||
|
24 /* frame size = 0 */
|
||||||
|
25 .LM2:
|
||||||
|
26 0000 82E0 ldi r24,lo8(2)
|
||||||
|
27 0002 87BD out 71-32,r24
|
||||||
|
28 .L2:
|
||||||
|
29 .LM3:
|
||||||
|
30 0004 07B4 in __tmp_reg__,71-32
|
||||||
|
31 0006 00FE sbrs __tmp_reg__,0
|
||||||
|
32 0008 00C0 rjmp .L2
|
||||||
|
33 .LM4:
|
||||||
|
34 000a 87B5 in r24,71-32
|
||||||
|
35 000c 8460 ori r24,lo8(4)
|
||||||
|
36 000e 87BD out 71-32,r24
|
||||||
|
37 .LM5:
|
||||||
|
38 0010 82E0 ldi r24,lo8(2)
|
||||||
|
39 0012 87BB out 55-32,r24
|
||||||
|
40 .LM6:
|
||||||
|
41 0014 1EBC out 78-32,__zero_reg__
|
||||||
|
42 .LM7:
|
||||||
|
43 0016 8FEF ldi r24,lo8(-1)
|
||||||
|
44 0018 8DBD out 77-32,r24
|
||||||
|
45 .LM8:
|
||||||
|
46 001a 83E7 ldi r24,lo8(115)
|
||||||
|
47 001c 80BF out 80-32,r24
|
||||||
|
48 .LM9:
|
||||||
|
49 001e 84E0 ldi r24,lo8(4)
|
||||||
|
50 0020 84BB out 52-32,r24
|
||||||
|
51 .LM10:
|
||||||
|
52 0022 81E2 ldi r24,lo8(33)
|
||||||
|
53 0024 87B9 out 39-32,r24
|
||||||
|
54 .LM11:
|
||||||
|
55 0026 80E8 ldi r24,lo8(-128)
|
||||||
|
56 0028 86B9 out 38-32,r24
|
||||||
|
57 /* epilogue start */
|
||||||
|
58 .LM12:
|
||||||
|
59 002a 0895 ret
|
||||||
|
60 .LFE14:
|
||||||
|
62 .global readSensor
|
||||||
|
64 readSensor:
|
||||||
|
65 .LFB15:
|
||||||
|
66 .LM13:
|
||||||
|
67 /* prologue: function */
|
||||||
|
68 /* frame size = 0 */
|
||||||
|
69 .LM14:
|
||||||
|
70 002c 369A sbi 38-32,6
|
||||||
|
71 .L6:
|
||||||
|
72 .LM15:
|
||||||
|
73 002e 3699 sbic 38-32,6
|
||||||
|
74 0030 00C0 rjmp .L6
|
||||||
|
75 .LM16:
|
||||||
|
76 0032 85B1 in r24,37-32
|
||||||
|
77 /* epilogue start */
|
||||||
|
78 .LM17:
|
||||||
|
79 0034 0895 ret
|
||||||
|
80 .LFE15:
|
||||||
|
82 .global setPWM
|
||||||
|
84 setPWM:
|
||||||
|
85 .LFB16:
|
||||||
|
86 .LM18:
|
||||||
|
87 .LVL0:
|
||||||
|
88 /* prologue: function */
|
||||||
|
89 /* frame size = 0 */
|
||||||
|
90 0036 982F mov r25,r24
|
||||||
|
91 .LM19:
|
||||||
|
92 0038 8754 subi r24,lo8(-(-71))
|
||||||
|
93 .LVL1:
|
||||||
|
94 003a 883B cpi r24,lo8(-72)
|
||||||
|
95 003c 00F4 brsh .L10
|
||||||
|
96 .LM20:
|
||||||
|
97 003e 9654 subi r25,lo8(-(-70))
|
||||||
|
98 0040 00C0 rjmp .L12
|
||||||
|
99 .L10:
|
||||||
|
100 .LM21:
|
||||||
|
101 0042 9734 cpi r25,lo8(71)
|
||||||
|
102 0044 00F4 brsh .L12
|
||||||
|
103 .LM22:
|
||||||
|
104 0046 1EBC out 78-32,__zero_reg__
|
||||||
|
105 0048 0895 ret
|
||||||
|
106 .L12:
|
||||||
|
107 .LM23:
|
||||||
|
108 004a 9EBD out 78-32,r25
|
||||||
|
109 004c 0895 ret
|
||||||
|
110 .LFE16:
|
||||||
|
112 .global main
|
||||||
|
114 main:
|
||||||
|
115 .LFB17:
|
||||||
|
116 .LM24:
|
||||||
|
117 /* prologue: function */
|
||||||
|
118 /* frame size = 0 */
|
||||||
|
119 .LM25:
|
||||||
|
120 /* #APP */
|
||||||
|
121 ; 102 "BOSCH_SCU.c" 1
|
||||||
|
122 004e F894 cli
|
||||||
|
123 ; 0 "" 2
|
||||||
|
124 .LM26:
|
||||||
|
125 /* #NOAPP */
|
||||||
|
126 0050 00D0 rcall initIO
|
||||||
|
127 .LM27:
|
||||||
|
128 /* #APP */
|
||||||
|
129 ; 106 "BOSCH_SCU.c" 1
|
||||||
|
130 0052 7894 sei
|
||||||
|
131 ; 0 "" 2
|
||||||
|
132 /* #NOAPP */
|
||||||
|
133 .L21:
|
||||||
|
134 .LBB6:
|
||||||
|
135 .LBB7:
|
||||||
|
136 .LM28:
|
||||||
|
137 0054 369A sbi 38-32,6
|
||||||
|
138 .L15:
|
||||||
|
139 .LM29:
|
||||||
|
140 0056 3699 sbic 38-32,6
|
||||||
|
141 0058 00C0 rjmp .L15
|
||||||
|
142 .LM30:
|
||||||
|
143 005a 95B1 in r25,37-32
|
||||||
|
144 .LBE7:
|
||||||
|
145 .LBE6:
|
||||||
|
146 .LBB8:
|
||||||
|
147 .LBB9:
|
||||||
|
148 .LM31:
|
||||||
|
149 005c 892F mov r24,r25
|
||||||
|
150 005e 8754 subi r24,lo8(-(-71))
|
||||||
|
151 0060 883B cpi r24,lo8(-72)
|
||||||
|
152 0062 00F4 brsh .L16
|
||||||
|
153 .LM32:
|
||||||
|
154 0064 9654 subi r25,lo8(-(-70))
|
||||||
|
155 0066 00C0 rjmp .L18
|
||||||
|
156 .L16:
|
||||||
|
157 .LM33:
|
||||||
|
158 0068 9734 cpi r25,lo8(71)
|
||||||
|
159 006a 00F4 brsh .L18
|
||||||
|
160 .LM34:
|
||||||
|
161 006c 1EBC out 78-32,__zero_reg__
|
||||||
|
162 006e 00C0 rjmp .L21
|
||||||
|
163 .L18:
|
||||||
|
164 .LM35:
|
||||||
|
165 0070 9EBD out 78-32,r25
|
||||||
|
166 0072 00C0 rjmp .L21
|
||||||
|
167 .LBE9:
|
||||||
|
168 .LBE8:
|
||||||
|
169 .LFE17:
|
||||||
|
219 .Letext0:
|
||||||
|
DEFINED SYMBOLS
|
||||||
|
*ABS*:00000000 BOSCH_SCU.c
|
||||||
|
C:\DOCUME~1\cm\LOKALA~1\Temp/ccPy3Fwx.s:2 *ABS*:0000003f __SREG__
|
||||||
|
C:\DOCUME~1\cm\LOKALA~1\Temp/ccPy3Fwx.s:3 *ABS*:0000003e __SP_H__
|
||||||
|
C:\DOCUME~1\cm\LOKALA~1\Temp/ccPy3Fwx.s:4 *ABS*:0000003d __SP_L__
|
||||||
|
C:\DOCUME~1\cm\LOKALA~1\Temp/ccPy3Fwx.s:5 *ABS*:00000034 __CCP__
|
||||||
|
C:\DOCUME~1\cm\LOKALA~1\Temp/ccPy3Fwx.s:6 *ABS*:00000000 __tmp_reg__
|
||||||
|
C:\DOCUME~1\cm\LOKALA~1\Temp/ccPy3Fwx.s:7 *ABS*:00000001 __zero_reg__
|
||||||
|
C:\DOCUME~1\cm\LOKALA~1\Temp/ccPy3Fwx.s:20 .text:00000000 initIO
|
||||||
|
C:\DOCUME~1\cm\LOKALA~1\Temp/ccPy3Fwx.s:64 .text:0000002c readSensor
|
||||||
|
C:\DOCUME~1\cm\LOKALA~1\Temp/ccPy3Fwx.s:84 .text:00000036 setPWM
|
||||||
|
C:\DOCUME~1\cm\LOKALA~1\Temp/ccPy3Fwx.s:114 .text:0000004e main
|
||||||
|
|
||||||
|
UNDEFINED SYMBOLS
|
||||||
|
__do_copy_data
|
||||||
|
__do_clear_bss
|
||||||
398
BOSCH_SCU.map
Executable file
398
BOSCH_SCU.map
Executable file
@ -0,0 +1,398 @@
|
|||||||
|
Archive member included because of file (symbol)
|
||||||
|
|
||||||
|
c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/avr25\libgcc.a(_exit.o)
|
||||||
|
c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/../../../../avr/lib/avr25/crttn25.o (exit)
|
||||||
|
c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/avr25\libgcc.a(_copy_data.o)
|
||||||
|
BOSCH_SCU.o (__do_copy_data)
|
||||||
|
c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/avr25\libgcc.a(_clear_bss.o)
|
||||||
|
BOSCH_SCU.o (__do_clear_bss)
|
||||||
|
|
||||||
|
Memory Configuration
|
||||||
|
|
||||||
|
Name Origin Length Attributes
|
||||||
|
text 0x00000000 0x00002000 xr
|
||||||
|
data 0x00800060 0x0000ffa0 rw !x
|
||||||
|
eeprom 0x00810000 0x00010000 rw !x
|
||||||
|
fuse 0x00820000 0x00000400 rw !x
|
||||||
|
lock 0x00830000 0x00000400 rw !x
|
||||||
|
signature 0x00840000 0x00000400 rw !x
|
||||||
|
*default* 0x00000000 0xffffffff
|
||||||
|
|
||||||
|
Linker script and memory map
|
||||||
|
|
||||||
|
LOAD c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/../../../../avr/lib/avr25/crttn25.o
|
||||||
|
LOAD BOSCH_SCU.o
|
||||||
|
LOAD c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/../../../../avr/lib/avr25\libm.a
|
||||||
|
LOAD c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/avr25\libgcc.a
|
||||||
|
LOAD c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/../../../../avr/lib/avr25\libc.a
|
||||||
|
LOAD c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/avr25\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 0xca
|
||||||
|
*(.vectors)
|
||||||
|
.vectors 0x00000000 0x1e c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/../../../../avr/lib/avr25/crttn25.o
|
||||||
|
0x00000000 __vectors
|
||||||
|
0x00000000 __vector_default
|
||||||
|
*(.vectors)
|
||||||
|
*(.progmem.gcc*)
|
||||||
|
*(.progmem*)
|
||||||
|
0x0000001e . = ALIGN (0x2)
|
||||||
|
0x0000001e __trampolines_start = .
|
||||||
|
*(.trampolines)
|
||||||
|
.trampolines 0x0000001e 0x0 linker stubs
|
||||||
|
*(.trampolines*)
|
||||||
|
0x0000001e __trampolines_end = .
|
||||||
|
*(.jumptables)
|
||||||
|
*(.jumptables*)
|
||||||
|
*(.lowtext)
|
||||||
|
*(.lowtext*)
|
||||||
|
0x0000001e __ctors_start = .
|
||||||
|
*(.ctors)
|
||||||
|
0x0000001e __ctors_end = .
|
||||||
|
0x0000001e __dtors_start = .
|
||||||
|
*(.dtors)
|
||||||
|
0x0000001e __dtors_end = .
|
||||||
|
SORT(*)(.ctors)
|
||||||
|
SORT(*)(.dtors)
|
||||||
|
*(.init0)
|
||||||
|
.init0 0x0000001e 0x0 c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/../../../../avr/lib/avr25/crttn25.o
|
||||||
|
0x0000001e __init
|
||||||
|
*(.init0)
|
||||||
|
*(.init1)
|
||||||
|
*(.init1)
|
||||||
|
*(.init2)
|
||||||
|
.init2 0x0000001e 0x8 c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/../../../../avr/lib/avr25/crttn25.o
|
||||||
|
*(.init2)
|
||||||
|
*(.init3)
|
||||||
|
*(.init3)
|
||||||
|
*(.init4)
|
||||||
|
.init4 0x00000026 0x16 c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/avr25\libgcc.a(_copy_data.o)
|
||||||
|
0x00000026 __do_copy_data
|
||||||
|
.init4 0x0000003c 0x10 c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/avr25\libgcc.a(_clear_bss.o)
|
||||||
|
0x0000003c __do_clear_bss
|
||||||
|
*(.init4)
|
||||||
|
*(.init5)
|
||||||
|
*(.init5)
|
||||||
|
*(.init6)
|
||||||
|
*(.init6)
|
||||||
|
*(.init7)
|
||||||
|
*(.init7)
|
||||||
|
*(.init8)
|
||||||
|
*(.init8)
|
||||||
|
*(.init9)
|
||||||
|
.init9 0x0000004c 0x4 c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/../../../../avr/lib/avr25/crttn25.o
|
||||||
|
*(.init9)
|
||||||
|
*(.text)
|
||||||
|
.text 0x00000050 0x2 c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/../../../../avr/lib/avr25/crttn25.o
|
||||||
|
0x00000050 __vector_1
|
||||||
|
0x00000050 __vector_12
|
||||||
|
0x00000050 __bad_interrupt
|
||||||
|
0x00000050 __vector_6
|
||||||
|
0x00000050 __vector_3
|
||||||
|
0x00000050 __vector_11
|
||||||
|
0x00000050 __vector_13
|
||||||
|
0x00000050 __vector_7
|
||||||
|
0x00000050 __vector_5
|
||||||
|
0x00000050 __vector_4
|
||||||
|
0x00000050 __vector_9
|
||||||
|
0x00000050 __vector_2
|
||||||
|
0x00000050 __vector_8
|
||||||
|
0x00000050 __vector_14
|
||||||
|
0x00000050 __vector_10
|
||||||
|
.text 0x00000052 0x74 BOSCH_SCU.o
|
||||||
|
0x0000007e readSensor
|
||||||
|
0x000000a0 main
|
||||||
|
0x00000088 setPWM
|
||||||
|
0x00000052 initIO
|
||||||
|
.text 0x000000c6 0x0 c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/avr25\libgcc.a(_exit.o)
|
||||||
|
.text 0x000000c6 0x0 c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/avr25\libgcc.a(_copy_data.o)
|
||||||
|
.text 0x000000c6 0x0 c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/avr25\libgcc.a(_clear_bss.o)
|
||||||
|
0x000000c6 . = ALIGN (0x2)
|
||||||
|
*(.text.*)
|
||||||
|
.text.libgcc 0x000000c6 0x0 c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/avr25\libgcc.a(_exit.o)
|
||||||
|
.text.libgcc 0x000000c6 0x0 c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/avr25\libgcc.a(_copy_data.o)
|
||||||
|
.text.libgcc 0x000000c6 0x0 c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/avr25\libgcc.a(_clear_bss.o)
|
||||||
|
0x000000c6 . = ALIGN (0x2)
|
||||||
|
*(.fini9)
|
||||||
|
.fini9 0x000000c6 0x0 c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/avr25\libgcc.a(_exit.o)
|
||||||
|
0x000000c6 exit
|
||||||
|
0x000000c6 _exit
|
||||||
|
*(.fini9)
|
||||||
|
*(.fini8)
|
||||||
|
*(.fini8)
|
||||||
|
*(.fini7)
|
||||||
|
*(.fini7)
|
||||||
|
*(.fini6)
|
||||||
|
*(.fini6)
|
||||||
|
*(.fini5)
|
||||||
|
*(.fini5)
|
||||||
|
*(.fini4)
|
||||||
|
*(.fini4)
|
||||||
|
*(.fini3)
|
||||||
|
*(.fini3)
|
||||||
|
*(.fini2)
|
||||||
|
*(.fini2)
|
||||||
|
*(.fini1)
|
||||||
|
*(.fini1)
|
||||||
|
*(.fini0)
|
||||||
|
.fini0 0x000000c6 0x4 c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/avr25\libgcc.a(_exit.o)
|
||||||
|
*(.fini0)
|
||||||
|
0x000000ca _etext = .
|
||||||
|
|
||||||
|
.data 0x00800060 0x0 load address 0x000000ca
|
||||||
|
0x00800060 PROVIDE (__data_start, .)
|
||||||
|
*(.data)
|
||||||
|
.data 0x00800060 0x0 c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/../../../../avr/lib/avr25/crttn25.o
|
||||||
|
.data 0x00800060 0x0 BOSCH_SCU.o
|
||||||
|
.data 0x00800060 0x0 c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/avr25\libgcc.a(_exit.o)
|
||||||
|
.data 0x00800060 0x0 c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/avr25\libgcc.a(_copy_data.o)
|
||||||
|
.data 0x00800060 0x0 c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/avr25\libgcc.a(_clear_bss.o)
|
||||||
|
*(.data*)
|
||||||
|
*(.rodata)
|
||||||
|
*(.rodata*)
|
||||||
|
*(.gnu.linkonce.d*)
|
||||||
|
0x00800060 . = ALIGN (0x2)
|
||||||
|
0x00800060 _edata = .
|
||||||
|
0x00800060 PROVIDE (__data_end, .)
|
||||||
|
|
||||||
|
.bss 0x00800060 0x0 load address 0x000000ca
|
||||||
|
0x00800060 PROVIDE (__bss_start, .)
|
||||||
|
*(.bss)
|
||||||
|
.bss 0x00800060 0x0 c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/../../../../avr/lib/avr25/crttn25.o
|
||||||
|
.bss 0x00800060 0x0 BOSCH_SCU.o
|
||||||
|
.bss 0x00800060 0x0 c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/avr25\libgcc.a(_exit.o)
|
||||||
|
.bss 0x00800060 0x0 c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/avr25\libgcc.a(_copy_data.o)
|
||||||
|
.bss 0x00800060 0x0 c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/avr25\libgcc.a(_clear_bss.o)
|
||||||
|
*(.bss*)
|
||||||
|
*(COMMON)
|
||||||
|
0x00800060 PROVIDE (__bss_end, .)
|
||||||
|
0x000000ca __data_load_start = LOADADDR (.data)
|
||||||
|
0x000000ca __data_load_end = (__data_load_start + SIZEOF (.data))
|
||||||
|
|
||||||
|
.noinit 0x00800060 0x0
|
||||||
|
0x00800060 PROVIDE (__noinit_start, .)
|
||||||
|
*(.noinit*)
|
||||||
|
0x00800060 PROVIDE (__noinit_end, .)
|
||||||
|
0x00800060 _end = .
|
||||||
|
0x00800060 PROVIDE (__heap_start, .)
|
||||||
|
|
||||||
|
.eeprom 0x00810000 0x0
|
||||||
|
*(.eeprom*)
|
||||||
|
0x00810000 __eeprom_end = .
|
||||||
|
|
||||||
|
.fuse
|
||||||
|
*(.fuse)
|
||||||
|
*(.lfuse)
|
||||||
|
*(.hfuse)
|
||||||
|
*(.efuse)
|
||||||
|
|
||||||
|
.lock
|
||||||
|
*(.lock*)
|
||||||
|
|
||||||
|
.signature
|
||||||
|
*(.signature*)
|
||||||
|
|
||||||
|
.stab
|
||||||
|
*(.stab)
|
||||||
|
|
||||||
|
.stabstr
|
||||||
|
*(.stabstr)
|
||||||
|
|
||||||
|
.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 BOSCH_SCU.o
|
||||||
|
|
||||||
|
.debug_pubnames
|
||||||
|
0x00000000 0x40
|
||||||
|
*(.debug_pubnames)
|
||||||
|
.debug_pubnames
|
||||||
|
0x00000000 0x40 BOSCH_SCU.o
|
||||||
|
|
||||||
|
.debug_info 0x00000000 0x110
|
||||||
|
*(.debug_info)
|
||||||
|
.debug_info 0x00000000 0x110 BOSCH_SCU.o
|
||||||
|
*(.gnu.linkonce.wi.*)
|
||||||
|
|
||||||
|
.debug_abbrev 0x00000000 0xe0
|
||||||
|
*(.debug_abbrev)
|
||||||
|
.debug_abbrev 0x00000000 0xe0 BOSCH_SCU.o
|
||||||
|
|
||||||
|
.debug_line 0x00000000 0x16a
|
||||||
|
*(.debug_line)
|
||||||
|
.debug_line 0x00000000 0x16a BOSCH_SCU.o
|
||||||
|
|
||||||
|
.debug_frame 0x00000000 0x50
|
||||||
|
*(.debug_frame)
|
||||||
|
.debug_frame 0x00000000 0x50 BOSCH_SCU.o
|
||||||
|
|
||||||
|
.debug_str 0x00000000 0x88
|
||||||
|
*(.debug_str)
|
||||||
|
.debug_str 0x00000000 0x88 BOSCH_SCU.o
|
||||||
|
0xbc (size before relaxing)
|
||||||
|
|
||||||
|
.debug_loc 0x00000000 0x1e
|
||||||
|
*(.debug_loc)
|
||||||
|
.debug_loc 0x00000000 0x1e BOSCH_SCU.o
|
||||||
|
|
||||||
|
.debug_macinfo
|
||||||
|
*(.debug_macinfo)
|
||||||
|
OUTPUT(BOSCH_SCU.elf elf32-avr)
|
||||||
|
LOAD linker stubs
|
||||||
|
|
||||||
|
Cross Reference Table
|
||||||
|
|
||||||
|
Symbol File
|
||||||
|
__bad_interrupt c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/../../../../avr/lib/avr25/crttn25.o
|
||||||
|
__bss_end c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/avr25\libgcc.a(_clear_bss.o)
|
||||||
|
__bss_start c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/avr25\libgcc.a(_clear_bss.o)
|
||||||
|
__data_end c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/avr25\libgcc.a(_copy_data.o)
|
||||||
|
__data_load_start c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/avr25\libgcc.a(_copy_data.o)
|
||||||
|
__data_start c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/avr25\libgcc.a(_copy_data.o)
|
||||||
|
__do_clear_bss c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/avr25\libgcc.a(_clear_bss.o)
|
||||||
|
BOSCH_SCU.o
|
||||||
|
__do_copy_data c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/avr25\libgcc.a(_copy_data.o)
|
||||||
|
BOSCH_SCU.o
|
||||||
|
__heap_end c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/../../../../avr/lib/avr25/crttn25.o
|
||||||
|
__init c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/../../../../avr/lib/avr25/crttn25.o
|
||||||
|
__stack c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/../../../../avr/lib/avr25/crttn25.o
|
||||||
|
__vector_1 c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/../../../../avr/lib/avr25/crttn25.o
|
||||||
|
__vector_10 c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/../../../../avr/lib/avr25/crttn25.o
|
||||||
|
__vector_11 c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/../../../../avr/lib/avr25/crttn25.o
|
||||||
|
__vector_12 c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/../../../../avr/lib/avr25/crttn25.o
|
||||||
|
__vector_13 c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/../../../../avr/lib/avr25/crttn25.o
|
||||||
|
__vector_14 c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/../../../../avr/lib/avr25/crttn25.o
|
||||||
|
__vector_2 c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/../../../../avr/lib/avr25/crttn25.o
|
||||||
|
__vector_3 c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/../../../../avr/lib/avr25/crttn25.o
|
||||||
|
__vector_4 c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/../../../../avr/lib/avr25/crttn25.o
|
||||||
|
__vector_5 c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/../../../../avr/lib/avr25/crttn25.o
|
||||||
|
__vector_6 c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/../../../../avr/lib/avr25/crttn25.o
|
||||||
|
__vector_7 c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/../../../../avr/lib/avr25/crttn25.o
|
||||||
|
__vector_8 c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/../../../../avr/lib/avr25/crttn25.o
|
||||||
|
__vector_9 c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/../../../../avr/lib/avr25/crttn25.o
|
||||||
|
__vector_default c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/../../../../avr/lib/avr25/crttn25.o
|
||||||
|
__vectors c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/../../../../avr/lib/avr25/crttn25.o
|
||||||
|
_exit c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/avr25\libgcc.a(_exit.o)
|
||||||
|
exit c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/avr25\libgcc.a(_exit.o)
|
||||||
|
c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/../../../../avr/lib/avr25/crttn25.o
|
||||||
|
initIO BOSCH_SCU.o
|
||||||
|
main BOSCH_SCU.o
|
||||||
|
c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/../../../../avr/lib/avr25/crttn25.o
|
||||||
|
readSensor BOSCH_SCU.o
|
||||||
|
setPWM BOSCH_SCU.o
|
||||||
55
BOSCH_SCU.sym
Executable file
55
BOSCH_SCU.sym
Executable file
@ -0,0 +1,55 @@
|
|||||||
|
00000000 W __heap_end
|
||||||
|
00000000 a __tmp_reg__
|
||||||
|
00000000 W __vector_default
|
||||||
|
00000000 T __vectors
|
||||||
|
00000001 a __zero_reg__
|
||||||
|
0000001e T __ctors_end
|
||||||
|
0000001e T __ctors_start
|
||||||
|
0000001e T __dtors_end
|
||||||
|
0000001e T __dtors_start
|
||||||
|
0000001e W __init
|
||||||
|
0000001e T __trampolines_end
|
||||||
|
0000001e T __trampolines_start
|
||||||
|
00000026 T __do_copy_data
|
||||||
|
00000032 t .do_copy_data_loop
|
||||||
|
00000034 a __CCP__
|
||||||
|
00000036 t .do_copy_data_start
|
||||||
|
0000003c T __do_clear_bss
|
||||||
|
0000003d a __SP_L__
|
||||||
|
0000003e a __SP_H__
|
||||||
|
0000003f a __SREG__
|
||||||
|
00000044 t .do_clear_bss_loop
|
||||||
|
00000046 t .do_clear_bss_start
|
||||||
|
00000050 T __bad_interrupt
|
||||||
|
00000050 W __vector_1
|
||||||
|
00000050 W __vector_10
|
||||||
|
00000050 W __vector_11
|
||||||
|
00000050 W __vector_12
|
||||||
|
00000050 W __vector_13
|
||||||
|
00000050 W __vector_14
|
||||||
|
00000050 W __vector_2
|
||||||
|
00000050 W __vector_3
|
||||||
|
00000050 W __vector_4
|
||||||
|
00000050 W __vector_5
|
||||||
|
00000050 W __vector_6
|
||||||
|
00000050 W __vector_7
|
||||||
|
00000050 W __vector_8
|
||||||
|
00000050 W __vector_9
|
||||||
|
00000052 T initIO
|
||||||
|
0000007e T readSensor
|
||||||
|
00000088 T setPWM
|
||||||
|
000000a0 T main
|
||||||
|
000000c6 T _exit
|
||||||
|
000000c6 W exit
|
||||||
|
000000c8 t __stop_program
|
||||||
|
000000ca A __data_load_end
|
||||||
|
000000ca A __data_load_start
|
||||||
|
000000ca T _etext
|
||||||
|
000000df W __stack
|
||||||
|
00800060 T __bss_end
|
||||||
|
00800060 T __bss_start
|
||||||
|
00800060 T __data_end
|
||||||
|
00800060 T __data_start
|
||||||
|
00800060 T _edata
|
||||||
|
00800060 N _end
|
||||||
|
00810000 N __eeprom_end
|
||||||
510
makefile
Executable file
510
makefile
Executable file
@ -0,0 +1,510 @@
|
|||||||
|
# Hey Emacs, this is a -*- makefile -*-
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
# WinAVR Makefile Template written by Eric B. Weddington, Jörg Wunsch, et al.
|
||||||
|
#
|
||||||
|
# Released to the Public Domain
|
||||||
|
#
|
||||||
|
# Additional material for this makefile was written by:
|
||||||
|
# Peter Fleury
|
||||||
|
# Tim Henigan
|
||||||
|
# Colin O'Flynn
|
||||||
|
# Reiner Patommel
|
||||||
|
# Markus Pfaff
|
||||||
|
# Sander Pool
|
||||||
|
# Frederik Rouleau
|
||||||
|
#
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
# On command line:
|
||||||
|
#
|
||||||
|
# make all = Make software.
|
||||||
|
#
|
||||||
|
# make clean = Clean out built project files.
|
||||||
|
#
|
||||||
|
# make coff = Convert ELF to AVR COFF.
|
||||||
|
#
|
||||||
|
# make extcoff = Convert ELF to AVR Extended COFF.
|
||||||
|
#
|
||||||
|
# make program = Download the hex file to the device, using avrdude.
|
||||||
|
# Please customize the avrdude settings below first!
|
||||||
|
#
|
||||||
|
# make debug = Start either simulavr or avarice as specified for debugging,
|
||||||
|
# with avr-gdb or avr-insight as the front end for debugging.
|
||||||
|
#
|
||||||
|
# make filename.s = Just compile filename.c into the assembler code only.
|
||||||
|
#
|
||||||
|
# make filename.i = Create a preprocessed source file for use in submitting
|
||||||
|
# bug reports to the GCC project.
|
||||||
|
#
|
||||||
|
# To rebuild project do "make clean" then "make all".
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
# MCU name
|
||||||
|
MCU = attiny25
|
||||||
|
|
||||||
|
|
||||||
|
# Processor frequency.
|
||||||
|
# This will define a symbol, F_CPU, in all source code files equal to the
|
||||||
|
# processor frequency. You can then use this symbol in your source code to
|
||||||
|
# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
|
||||||
|
# automatically to create a 32-bit value in your source code.
|
||||||
|
F_CPU = 8000000
|
||||||
|
|
||||||
|
|
||||||
|
# Output format. (can be srec, ihex, binary)
|
||||||
|
FORMAT = ihex
|
||||||
|
|
||||||
|
|
||||||
|
# Target file name (without extension).
|
||||||
|
TARGET = BOSCH_SCU
|
||||||
|
|
||||||
|
|
||||||
|
# List C source files here. (C dependencies are automatically generated.)
|
||||||
|
SRC = BOSCH_SCU.c
|
||||||
|
#$(TARGET).c
|
||||||
|
|
||||||
|
|
||||||
|
# List Assembler source files here.
|
||||||
|
# Make them always end in a capital .S. Files ending in a lowercase .s
|
||||||
|
# will not be considered source files but generated files (assembler
|
||||||
|
# output from the compiler), and will be deleted upon "make clean"!
|
||||||
|
# Even though the DOS/Win* filesystem matches both .s and .S the same,
|
||||||
|
# it will preserve the spelling of the filenames, and gcc itself does
|
||||||
|
# care about how the name is spelled on its command-line.
|
||||||
|
ASRC =
|
||||||
|
|
||||||
|
|
||||||
|
# Optimization level, can be [0, 1, 2, 3, s].
|
||||||
|
# 0 = turn off optimization. s = optimize for size.
|
||||||
|
# (Note: 3 is not always the best optimization level. See avr-libc FAQ.)
|
||||||
|
OPT = s
|
||||||
|
|
||||||
|
|
||||||
|
# Debugging format.
|
||||||
|
# Native formats for AVR-GCC's -g are dwarf-2 [default] or stabs.
|
||||||
|
# AVR Studio 4.10 requires dwarf-2.
|
||||||
|
# AVR [Extended] COFF format requires stabs, plus an avr-objcopy run.
|
||||||
|
DEBUG = dwarf-2
|
||||||
|
|
||||||
|
|
||||||
|
# List any extra directories to look for include files here.
|
||||||
|
# Each directory must be seperated by a space.
|
||||||
|
# Use forward slashes for directory separators.
|
||||||
|
# For a directory that has spaces, enclose it in quotes.
|
||||||
|
EXTRAINCDIRS =
|
||||||
|
|
||||||
|
|
||||||
|
# Compiler flag to set the C Standard level.
|
||||||
|
# c89 = "ANSI" C
|
||||||
|
# gnu89 = c89 plus GCC extensions
|
||||||
|
# c99 = ISO C99 standard (not yet fully implemented)
|
||||||
|
# gnu99 = c99 plus GCC extensions
|
||||||
|
CSTANDARD = -std=gnu99
|
||||||
|
|
||||||
|
|
||||||
|
# Place -D or -U options here
|
||||||
|
CDEFS = -DF_CPU=$(F_CPU)UL
|
||||||
|
|
||||||
|
|
||||||
|
# Place -I options here
|
||||||
|
CINCS =
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#---------------- Compiler Options ----------------
|
||||||
|
# -g*: generate debugging information
|
||||||
|
# -O*: optimization level
|
||||||
|
# -f...: tuning, see GCC manual and avr-libc documentation
|
||||||
|
# -Wall...: warning level
|
||||||
|
# -Wa,...: tell GCC to pass this to the assembler.
|
||||||
|
# -adhlns...: create assembler listing
|
||||||
|
CFLAGS = -g$(DEBUG)
|
||||||
|
CFLAGS += $(CDEFS) $(CINCS)
|
||||||
|
CFLAGS += -O$(OPT)
|
||||||
|
CFLAGS += -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums
|
||||||
|
CFLAGS += -Wall -Wstrict-prototypes
|
||||||
|
CFLAGS += -Wa,-adhlns=$(<:.c=.lst)
|
||||||
|
CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))
|
||||||
|
CFLAGS += $(CSTANDARD)
|
||||||
|
|
||||||
|
|
||||||
|
#---------------- Assembler Options ----------------
|
||||||
|
# -Wa,...: tell GCC to pass this to the assembler.
|
||||||
|
# -ahlms: create listing
|
||||||
|
# -gstabs: have the assembler create line number information; note that
|
||||||
|
# for use in COFF files, additional information about filenames
|
||||||
|
# and function names needs to be present in the assembler source
|
||||||
|
# files -- see avr-libc docs [FIXME: not yet described there]
|
||||||
|
# -listing-cont-lines: Sets the maximum number of continuation lines of hex
|
||||||
|
# dump that will be displayed for a given single line of source input.
|
||||||
|
ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs,--listing-cont-lines=100
|
||||||
|
|
||||||
|
|
||||||
|
#---------------- Library Options ----------------
|
||||||
|
# Minimalistic printf version
|
||||||
|
PRINTF_LIB_MIN = -Wl,-u,vfprintf -lprintf_min
|
||||||
|
|
||||||
|
# Floating point printf version (requires MATH_LIB = -lm below)
|
||||||
|
PRINTF_LIB_FLOAT = -Wl,-u,vfprintf -lprintf_flt
|
||||||
|
|
||||||
|
# If this is left blank, then it will use the Standard printf version.
|
||||||
|
PRINTF_LIB =
|
||||||
|
#PRINTF_LIB = $(PRINTF_LIB_MIN)
|
||||||
|
#PRINTF_LIB = $(PRINTF_LIB_FLOAT)
|
||||||
|
|
||||||
|
|
||||||
|
# Minimalistic scanf version
|
||||||
|
SCANF_LIB_MIN = -Wl,-u,vfscanf -lscanf_min
|
||||||
|
|
||||||
|
# Floating point + %[ scanf version (requires MATH_LIB = -lm below)
|
||||||
|
SCANF_LIB_FLOAT = -Wl,-u,vfscanf -lscanf_flt
|
||||||
|
|
||||||
|
# If this is left blank, then it will use the Standard scanf version.
|
||||||
|
SCANF_LIB =
|
||||||
|
#SCANF_LIB = $(SCANF_LIB_MIN)
|
||||||
|
#SCANF_LIB = $(SCANF_LIB_FLOAT)
|
||||||
|
|
||||||
|
|
||||||
|
MATH_LIB = -lm
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#---------------- External Memory Options ----------------
|
||||||
|
|
||||||
|
# 64 KB of external RAM, starting after internal RAM (ATmega128!),
|
||||||
|
# used for variables (.data/.bss) and heap (malloc()).
|
||||||
|
#EXTMEMOPTS = -Wl,-Tdata=0x801100,--defsym=__heap_end=0x80ffff
|
||||||
|
|
||||||
|
# 64 KB of external RAM, starting after internal RAM (ATmega128!),
|
||||||
|
# only used for heap (malloc()).
|
||||||
|
#EXTMEMOPTS = -Wl,--defsym=__heap_start=0x801100,--defsym=__heap_end=0x80ffff
|
||||||
|
|
||||||
|
EXTMEMOPTS =
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#---------------- Linker Options ----------------
|
||||||
|
# -Wl,...: tell GCC to pass this to linker.
|
||||||
|
# -Map: create map file
|
||||||
|
# --cref: add cross reference to map file
|
||||||
|
LDFLAGS = -Wl,-Map=$(TARGET).map,--cref
|
||||||
|
LDFLAGS += $(EXTMEMOPTS)
|
||||||
|
LDFLAGS += $(PRINTF_LIB) $(SCANF_LIB) $(MATH_LIB)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#---------------- Programming Options (avrdude) ----------------
|
||||||
|
|
||||||
|
# Programming hardware: alf avr910 avrisp bascom bsd
|
||||||
|
# dt006 pavr picoweb pony-stk200 sp12 stk200 stk500
|
||||||
|
#
|
||||||
|
# Type: avrdude -c ?
|
||||||
|
# to get a full listing.
|
||||||
|
#
|
||||||
|
AVRDUDE_PROGRAMMER = dragon_isp
|
||||||
|
|
||||||
|
# com1 = serial port. Use lpt1 to connect to parallel port.
|
||||||
|
AVRDUDE_PORT = com1 # programmer connected to serial device
|
||||||
|
|
||||||
|
AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex
|
||||||
|
#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep
|
||||||
|
|
||||||
|
|
||||||
|
# Uncomment the following if you want avrdude's erase cycle counter.
|
||||||
|
# Note that this counter needs to be initialized first using -Yn,
|
||||||
|
# see avrdude manual.
|
||||||
|
#AVRDUDE_ERASE_COUNTER = -y
|
||||||
|
|
||||||
|
# Uncomment the following if you do /not/ wish a verification to be
|
||||||
|
# performed after programming the device.
|
||||||
|
#AVRDUDE_NO_VERIFY = -V
|
||||||
|
|
||||||
|
# Increase verbosity level. Please use this when submitting bug
|
||||||
|
# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude>
|
||||||
|
# to submit bug reports.
|
||||||
|
#AVRDUDE_VERBOSE = -v -v
|
||||||
|
|
||||||
|
AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER)
|
||||||
|
AVRDUDE_FLAGS += $(AVRDUDE_NO_VERIFY)
|
||||||
|
AVRDUDE_FLAGS += $(AVRDUDE_VERBOSE)
|
||||||
|
AVRDUDE_FLAGS += $(AVRDUDE_ERASE_COUNTER)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#---------------- Debugging Options ----------------
|
||||||
|
|
||||||
|
# For simulavr only - target MCU frequency.
|
||||||
|
DEBUG_MFREQ = $(F_CPU)
|
||||||
|
|
||||||
|
# Set the DEBUG_UI to either gdb or insight.
|
||||||
|
# DEBUG_UI = gdb
|
||||||
|
DEBUG_UI = insight
|
||||||
|
|
||||||
|
# Set the debugging back-end to either avarice, simulavr.
|
||||||
|
DEBUG_BACKEND = avarice
|
||||||
|
#DEBUG_BACKEND = simulavr
|
||||||
|
|
||||||
|
# GDB Init Filename.
|
||||||
|
GDBINIT_FILE = __avr_gdbinit
|
||||||
|
|
||||||
|
# When using avarice settings for the JTAG
|
||||||
|
JTAG_DEV = /dev/com1
|
||||||
|
|
||||||
|
# Debugging port used to communicate between GDB / avarice / simulavr.
|
||||||
|
DEBUG_PORT = 4242
|
||||||
|
|
||||||
|
# Debugging host used to communicate between GDB / avarice / simulavr, normally
|
||||||
|
# just set to localhost unless doing some sort of crazy debugging when
|
||||||
|
# avarice is running on a different computer.
|
||||||
|
DEBUG_HOST = localhost
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#============================================================================
|
||||||
|
|
||||||
|
|
||||||
|
# Define programs and commands.
|
||||||
|
SHELL = sh
|
||||||
|
CC = avr-gcc
|
||||||
|
OBJCOPY = avr-objcopy
|
||||||
|
OBJDUMP = avr-objdump
|
||||||
|
SIZE = avr-size
|
||||||
|
NM = avr-nm
|
||||||
|
AVRDUDE = avrdude
|
||||||
|
REMOVE = rm -f
|
||||||
|
COPY = cp
|
||||||
|
WINSHELL = cmd
|
||||||
|
|
||||||
|
|
||||||
|
# Define Messages
|
||||||
|
# English
|
||||||
|
MSG_ERRORS_NONE = Errors: none
|
||||||
|
MSG_BEGIN = -------- begin --------
|
||||||
|
MSG_END = -------- end --------
|
||||||
|
MSG_SIZE_BEFORE = Size before:
|
||||||
|
MSG_SIZE_AFTER = Size after:
|
||||||
|
MSG_COFF = Converting to AVR COFF:
|
||||||
|
MSG_EXTENDED_COFF = Converting to AVR Extended COFF:
|
||||||
|
MSG_FLASH = Creating load file for Flash:
|
||||||
|
MSG_EEPROM = Creating load file for EEPROM:
|
||||||
|
MSG_EXTENDED_LISTING = Creating Extended Listing:
|
||||||
|
MSG_SYMBOL_TABLE = Creating Symbol Table:
|
||||||
|
MSG_LINKING = Linking:
|
||||||
|
MSG_COMPILING = Compiling:
|
||||||
|
MSG_ASSEMBLING = Assembling:
|
||||||
|
MSG_CLEANING = Cleaning project:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Define all object files.
|
||||||
|
OBJ = $(SRC:.c=.o) $(ASRC:.S=.o)
|
||||||
|
|
||||||
|
# Define all listing files.
|
||||||
|
LST = $(SRC:.c=.lst) $(ASRC:.S=.lst)
|
||||||
|
|
||||||
|
|
||||||
|
# Compiler flags to generate dependency files.
|
||||||
|
GENDEPFLAGS = -MD -MP -MF .dep/$(@F).d
|
||||||
|
|
||||||
|
|
||||||
|
# Combine all necessary flags and optional flags.
|
||||||
|
# Add target processor to flags.
|
||||||
|
ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) $(GENDEPFLAGS)
|
||||||
|
ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Default target.
|
||||||
|
all: begin gccversion sizebefore build sizeafter end
|
||||||
|
|
||||||
|
build: elf hex eep lss sym
|
||||||
|
|
||||||
|
elf: $(TARGET).elf
|
||||||
|
hex: $(TARGET).hex
|
||||||
|
eep: $(TARGET).eep
|
||||||
|
lss: $(TARGET).lss
|
||||||
|
sym: $(TARGET).sym
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Eye candy.
|
||||||
|
# AVR Studio 3.x does not check make's exit code but relies on
|
||||||
|
# the following magic strings to be generated by the compile job.
|
||||||
|
begin:
|
||||||
|
@echo
|
||||||
|
@echo $(MSG_BEGIN)
|
||||||
|
|
||||||
|
end:
|
||||||
|
@echo $(MSG_END)
|
||||||
|
@echo
|
||||||
|
|
||||||
|
|
||||||
|
# Display size of file.
|
||||||
|
HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex
|
||||||
|
ELFSIZE = $(SIZE) --format=avr --mcu=$(MCU) $(TARGET).elf
|
||||||
|
|
||||||
|
sizebefore:
|
||||||
|
@if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); \
|
||||||
|
2>/dev/null; echo; fi
|
||||||
|
|
||||||
|
sizeafter:
|
||||||
|
@if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); \
|
||||||
|
2>/dev/null; echo; fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Display compiler version information.
|
||||||
|
gccversion :
|
||||||
|
@$(CC) --version
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Program the device.
|
||||||
|
program: $(TARGET).hex $(TARGET).eep
|
||||||
|
$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM)
|
||||||
|
|
||||||
|
|
||||||
|
# Generate avr-gdb config/init file which does the following:
|
||||||
|
# define the reset signal, load the target file, connect to target, and set
|
||||||
|
# a breakpoint at main().
|
||||||
|
gdb-config:
|
||||||
|
@$(REMOVE) $(GDBINIT_FILE)
|
||||||
|
@echo define reset >> $(GDBINIT_FILE)
|
||||||
|
@echo SIGNAL SIGHUP >> $(GDBINIT_FILE)
|
||||||
|
@echo end >> $(GDBINIT_FILE)
|
||||||
|
@echo file $(TARGET).elf >> $(GDBINIT_FILE)
|
||||||
|
@echo target remote $(DEBUG_HOST):$(DEBUG_PORT) >> $(GDBINIT_FILE)
|
||||||
|
ifeq ($(DEBUG_BACKEND),simulavr)
|
||||||
|
@echo load >> $(GDBINIT_FILE)
|
||||||
|
endif
|
||||||
|
@echo break main >> $(GDBINIT_FILE)
|
||||||
|
|
||||||
|
debug: gdb-config $(TARGET).elf
|
||||||
|
ifeq ($(DEBUG_BACKEND), avarice)
|
||||||
|
@echo Starting AVaRICE - Press enter when "waiting to connect" message displays.
|
||||||
|
@$(WINSHELL) /c start avarice --jtag $(JTAG_DEV) --erase --program --file \
|
||||||
|
$(TARGET).elf $(DEBUG_HOST):$(DEBUG_PORT)
|
||||||
|
@$(WINSHELL) /c pause
|
||||||
|
|
||||||
|
else
|
||||||
|
@$(WINSHELL) /c start simulavr --gdbserver --device $(MCU) --clock-freq \
|
||||||
|
$(DEBUG_MFREQ) --port $(DEBUG_PORT)
|
||||||
|
endif
|
||||||
|
@$(WINSHELL) /c start avr-$(DEBUG_UI) --command=$(GDBINIT_FILE)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Convert ELF to COFF for use in debugging / simulating in AVR Studio or VMLAB.
|
||||||
|
COFFCONVERT=$(OBJCOPY) --debugging \
|
||||||
|
--change-section-address .data-0x800000 \
|
||||||
|
--change-section-address .bss-0x800000 \
|
||||||
|
--change-section-address .noinit-0x800000 \
|
||||||
|
--change-section-address .eeprom-0x810000
|
||||||
|
|
||||||
|
|
||||||
|
coff: $(TARGET).elf
|
||||||
|
@echo
|
||||||
|
@echo $(MSG_COFF) $(TARGET).cof
|
||||||
|
$(COFFCONVERT) -O coff-avr $< $(TARGET).cof
|
||||||
|
|
||||||
|
|
||||||
|
extcoff: $(TARGET).elf
|
||||||
|
@echo
|
||||||
|
@echo $(MSG_EXTENDED_COFF) $(TARGET).cof
|
||||||
|
$(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Create final output files (.hex, .eep) from ELF output file.
|
||||||
|
%.hex: %.elf
|
||||||
|
@echo
|
||||||
|
@echo $(MSG_FLASH) $@
|
||||||
|
$(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@
|
||||||
|
|
||||||
|
%.eep: %.elf
|
||||||
|
@echo
|
||||||
|
@echo $(MSG_EEPROM) $@
|
||||||
|
-$(OBJCOPY) -j .eeprom --set-section-flags .eeprom=alloc,load \
|
||||||
|
--change-section-lma .eeprom=0 -O $(FORMAT) $< $@
|
||||||
|
|
||||||
|
# Create extended listing file from ELF output file.
|
||||||
|
%.lss: %.elf
|
||||||
|
@echo
|
||||||
|
@echo $(MSG_EXTENDED_LISTING) $@
|
||||||
|
$(OBJDUMP) -h -S $< > $@
|
||||||
|
|
||||||
|
# Create a symbol table from ELF output file.
|
||||||
|
%.sym: %.elf
|
||||||
|
@echo
|
||||||
|
@echo $(MSG_SYMBOL_TABLE) $@
|
||||||
|
$(NM) -n $< > $@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Link: create ELF output file from object files.
|
||||||
|
.SECONDARY : $(TARGET).elf
|
||||||
|
.PRECIOUS : $(OBJ)
|
||||||
|
%.elf: $(OBJ)
|
||||||
|
@echo
|
||||||
|
@echo $(MSG_LINKING) $@
|
||||||
|
$(CC) $(ALL_CFLAGS) $^ --output $@ $(LDFLAGS)
|
||||||
|
|
||||||
|
|
||||||
|
# Compile: create object files from C source files.
|
||||||
|
%.o : %.c
|
||||||
|
@echo
|
||||||
|
@echo $(MSG_COMPILING) $<
|
||||||
|
$(CC) -c $(ALL_CFLAGS) $< -o $@
|
||||||
|
|
||||||
|
|
||||||
|
# Compile: create assembler files from C source files.
|
||||||
|
%.s : %.c
|
||||||
|
$(CC) -S $(ALL_CFLAGS) $< -o $@
|
||||||
|
|
||||||
|
|
||||||
|
# Assemble: create object files from assembler source files.
|
||||||
|
%.o : %.S
|
||||||
|
@echo
|
||||||
|
@echo $(MSG_ASSEMBLING) $<
|
||||||
|
$(CC) -c $(ALL_ASFLAGS) $< -o $@
|
||||||
|
|
||||||
|
# Create preprocessed source for use in sending a bug report.
|
||||||
|
%.i : %.c
|
||||||
|
$(CC) -E -mmcu=$(MCU) -I. $(CFLAGS) $< -o $@
|
||||||
|
|
||||||
|
|
||||||
|
# Target: clean project.
|
||||||
|
clean: begin clean_list end
|
||||||
|
|
||||||
|
clean_list :
|
||||||
|
@echo
|
||||||
|
@echo $(MSG_CLEANING)
|
||||||
|
$(REMOVE) $(TARGET).hex
|
||||||
|
$(REMOVE) $(TARGET).eep
|
||||||
|
$(REMOVE) $(TARGET).cof
|
||||||
|
$(REMOVE) $(TARGET).elf
|
||||||
|
$(REMOVE) $(TARGET).map
|
||||||
|
$(REMOVE) $(TARGET).sym
|
||||||
|
$(REMOVE) $(TARGET).lss
|
||||||
|
$(REMOVE) $(OBJ)
|
||||||
|
$(REMOVE) $(LST)
|
||||||
|
$(REMOVE) $(SRC:.c=.s)
|
||||||
|
$(REMOVE) $(SRC:.c=.d)
|
||||||
|
$(REMOVE) $(SRC:.c=.i)
|
||||||
|
$(REMOVE) .dep/*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Include the dependency files.
|
||||||
|
-include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*)
|
||||||
|
|
||||||
|
|
||||||
|
# Listing of phony targets.
|
||||||
|
.PHONY : all begin finish end sizebefore sizeafter gccversion \
|
||||||
|
build elf hex eep lss sym coff extcoff \
|
||||||
|
clean clean_list program debug gdb-config
|
||||||
|
|
||||||
Loading…
x
Reference in New Issue
Block a user