Дорогие форумчане, необходима ваша помощь!
Решил перебраться окончательно под линух, поставил убунту 8.04, и для разработки поставил avr-gcc avr-gdb avr-dude и simulavr(соответственно со всеми зависимостями, благо аптитуд сам заботится об этом). прошивки собираются нормально, при компиляции и линковки никаких проблем не возникает, но вот отладка совсем не клеится :( ниже привожу всю последовательность шагов.
#include <avr/io.h>
#include <avr/iom8.h>
#include <avr/interrupt.h>
#define RAND_MAX 0x7fff
int U = 1;
float U2 = 0;
ISR(ADC_vect){
U2 = U / 100;
U2 = U2 / 5;
U = U2;
}
int main(void){
DDRC = 0;
ADMUX = 0;
ADCSRA = 0x8F;
sei();
while(1){
ADCSRA |= 0x40;
}
return 0;
}
$ avr-gcc -mmcu=atmega8 -g -Os -c main.c -o main.o
$ avr-gcc main.o -mmcu=atmega8 -o project.out -Wl,-Map,project.map
$ avr-objcopy -R .eeprom -O ihex project.out project.hex
$
$ simulavr --device atmega8 --gdbserver project.hex &
Simulating a atmega8 device.
devsupp.c:338: MESSAGE: TODO: attach IO Reg 'TWBR' at 0x0020
devsupp.c:338: MESSAGE: TODO: attach IO Reg 'TWSR' at 0x0021
devsupp.c:338: MESSAGE: TODO: attach IO Reg 'TWAR' at 0x0022
devsupp.c:338: MESSAGE: TODO: attach IO Reg 'TWDR' at 0x0023
devsupp.c:338: MESSAGE: TODO: attach IO Reg 'ADCL' at 0x0024
devsupp.c:338: MESSAGE: TODO: attach IO Reg 'ADCH' at 0x0025
devsupp.c:338: MESSAGE: TODO: attach IO Reg 'ADCSRA' at 0x0026
devsupp.c:338: MESSAGE: TODO: attach IO Reg 'ADMUX' at 0x0027
devsupp.c:338: MESSAGE: TODO: attach IO Reg 'ACSR' at 0x0028
devsupp.c:338: MESSAGE: TODO: attach IO Reg 'UBRRL' at 0x0029
devsupp.c:338: MESSAGE: TODO: attach IO Reg 'UCSRB' at 0x002a
devsupp.c:338: MESSAGE: TODO: attach IO Reg 'UCSRA' at 0x002b
devsupp.c:338: MESSAGE: TODO: attach IO Reg 'UDR' at 0x002c
devsupp.c:338: MESSAGE: TODO: attach IO Reg 'SPCR' at 0x002d
devsupp.c:338: MESSAGE: TODO: attach IO Reg 'SPSR' at 0x002e
devsupp.c:338: MESSAGE: TODO: attach IO Reg 'SPDR' at 0x002f
devsupp.c:332: MESSAGE: attach: IO Reg 'PIND' at 0x0030: created
devsupp.c:316: MESSAGE: attach: IO Reg 'DDRD' at 0x0031: ref = 0x0030
devsupp.c:316: MESSAGE: attach: IO Reg 'PORTD' at 0x0032: ref = 0x0030
devsupp.c:332: MESSAGE: attach: IO Reg 'PINC' at 0x0033: created
devsupp.c:316: MESSAGE: attach: IO Reg 'DDRC' at 0x0034: ref = 0x0033
devsupp.c:316: MESSAGE: attach: IO Reg 'PORTC' at 0x0035: ref = 0x0033
devsupp.c:332: MESSAGE: attach: IO Reg 'PINB' at 0x0036: created
devsupp.c:316: MESSAGE: attach: IO Reg 'DDRB' at 0x0037: ref = 0x0036
devsupp.c:316: MESSAGE: attach: IO Reg 'PORTB' at 0x0038: ref = 0x0036
devsupp.c:338: MESSAGE: TODO: attach IO Reg 'UBRRH' at 0x0040
devsupp.c:338: MESSAGE: TODO: attach IO Reg 'WDTCR' at 0x0041
devsupp.c:338: MESSAGE: TODO: attach IO Reg 'ASSR' at 0x0042
devsupp.c:338: MESSAGE: TODO: attach IO Reg 'OCR2' at 0x0043
devsupp.c:338: MESSAGE: TODO: attach IO Reg 'TCNT2' at 0x0044
devsupp.c:338: MESSAGE: TODO: attach IO Reg 'TCCR2' at 0x0045
devsupp.c:338: MESSAGE: TODO: attach IO Reg 'ICR1L' at 0x0046
devsupp.c:338: MESSAGE: TODO: attach IO Reg 'ICR1H' at 0x0047
devsupp.c:338: MESSAGE: TODO: attach IO Reg 'OCR1BL' at 0x0048
devsupp.c:338: MESSAGE: TODO: attach IO Reg 'OCR1BH' at 0x0049
devsupp.c:338: MESSAGE: TODO: attach IO Reg 'OCR1AL' at 0x004a
devsupp.c:338: MESSAGE: TODO: attach IO Reg 'OCR1AH' at 0x004b
devsupp.c:338: MESSAGE: TODO: attach IO Reg 'TCNT1L' at 0x004c
devsupp.c:338: MESSAGE: TODO: attach IO Reg 'TCNT1H' at 0x004d
devsupp.c:338: MESSAGE: TODO: attach IO Reg 'TCCR1B' at 0x004e
devsupp.c:338: MESSAGE: TODO: attach IO Reg 'TCCR1A' at 0x004f
devsupp.c:338: MESSAGE: TODO: attach IO Reg 'SFIOR' at 0x0050
devsupp.c:338: MESSAGE: TODO: attach IO Reg 'OSCCAL' at 0x0051
devsupp.c:338: MESSAGE: TODO: attach IO Reg 'TCNT0' at 0x0052
devsupp.c:338: MESSAGE: TODO: attach IO Reg 'TCCR0' at 0x0053
devsupp.c:338: MESSAGE: TODO: attach IO Reg 'MCUCSR' at 0x0054
devsupp.c:338: MESSAGE: TODO: attach IO Reg 'MCUCR' at 0x0055
devsupp.c:338: MESSAGE: TODO: attach IO Reg 'TWCR' at 0x0056
devsupp.c:338: MESSAGE: TODO: attach IO Reg 'SPMCR' at 0x0057
devsupp.c:338: MESSAGE: TODO: attach IO Reg 'TIFR' at 0x0058
devsupp.c:338: MESSAGE: TODO: attach IO Reg 'TIMSK' at 0x0059
devsupp.c:338: MESSAGE: TODO: attach IO Reg 'GIFR' at 0x005a
devsupp.c:338: MESSAGE: TODO: attach IO Reg 'GICR' at 0x005b
devsupp.c:332: MESSAGE: attach: IO Reg 'SPL' at 0x005d: created
devsupp.c:316: MESSAGE: attach: IO Reg 'SPH' at 0x005e: ref = 0x005d
devsupp.c:332: MESSAGE: attach: IO Reg 'SREG' at 0x005f: created
avrcore.c:475: MESSAGE: attach: Internal SRAM from 0x0060 to 0x045f
decoder.c:3875: MESSAGE: generating opcode lookup_table
main.c:415: MESSAGE: Simulating clock frequency of 8000000 Hz
Waiting on port 1212 for gdb client to connect...
[1] 28517
$ avr-gdbtui --command=project.gdb
Connection opened by host 127.0.0.1, port -17752.
decoder.c:737: MESSAGE: BREAK POINT: PC = 0x00000073: clock = 2451
Содержание project.gdb
file project.out
target remote localhost:1212
load
break main
continue
В деббагере начинаю шагать по коду командой step, после выполнения присваивания регистрам ADMUX и ADCSRA значений, сервер SimulAVR выдает вот такие сообщения
memory.c:259: WARNING: **** Attempt to write invalid io reg: ADMUX at 0x0027
memory.c:259: WARNING: **** Attempt to write invalid io reg: ADCSRA at 0x0026
У меня два вопроса:
1) Что это означает и почему это ошибка вылезает?
2) Как его заставить вручную менять значения ADCL и ADCH, чтобы отдебажить работу прерывания?
Заранее благодарен, и надеюсь на Вашу помощь!