реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> AVR-GDB & SimulAVR
Darwinist
сообщение Aug 4 2009, 08:16
Сообщение #1





Группа: Новичок
Сообщений: 3
Регистрация: 4-08-09
Из: Тула
Пользователь №: 51 742



Дорогие форумчане, необходима ваша помощь!

Решил перебраться окончательно под линух, поставил убунту 8.04, и для разработки поставил avr-gcc avr-gdb avr-dude и simulavr(соответственно со всеми зависимостями, благо аптитуд сам заботится об этом). прошивки собираются нормально, при компиляции и линковки никаких проблем не возникает, но вот отладка совсем не клеится sad.gif ниже привожу всю последовательность шагов.

Код
#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, чтобы отдебажить работу прерывания?

Заранее благодарен, и надеюсь на Вашу помощь!

Сообщение отредактировал Darwinist - Aug 4 2009, 08:18
Go to the top of the page
 
+Quote Post
GDI
сообщение Aug 4 2009, 10:08
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



Код
devsupp.c:338: MESSAGE: TODO: attach IO Reg 'ADCSRA' at 0x0026
devsupp.c:338: MESSAGE: TODO: attach IO Reg 'ADMUX' at 0x0027
Вот это TODO настораживает...


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
ataradov
сообщение Aug 4 2009, 12:00
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



simulavr не пригоден для настоящей работы, в нем недоработок полным полно. И судя по темпам разработки будет готов он еще не скоро, если вообще будет.
Go to the top of the page
 
+Quote Post
AlexU
сообщение Aug 4 2009, 12:55
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 31-05-06
Пользователь №: 17 639



Попробуй kontrollerlab. Там что-то отладочное шевелится. Хотя до аврстудии далеко :-(
Go to the top of the page
 
+Quote Post
xelax
сообщение Aug 4 2009, 13:00
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 370
Регистрация: 7-11-06
Пользователь №: 22 035



а чем связка avarice + avr-gdb не устраивает?
Go to the top of the page
 
+Quote Post
Darwinist
сообщение Aug 4 2009, 14:21
Сообщение #6





Группа: Новичок
Сообщений: 3
Регистрация: 4-08-09
Из: Тула
Пользователь №: 51 742



Цитата(xelax @ Aug 4 2009, 17:00) *
а чем связка avarice + avr-gdb не устраивает?


а avarice умеет симулировать ядро?

Цитата(AlexU @ Aug 4 2009, 16:55) *
Попробуй kontrollerlab. Там что-то отладочное шевелится. Хотя до аврстудии далеко :-(


kontrollerlab пробывал, но там режим симуляции чего-то нету, а я ищу именно симуляцию ядер под линуксом!
Go to the top of the page
 
+Quote Post
xelax
сообщение Aug 5 2009, 05:54
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 370
Регистрация: 7-11-06
Пользователь №: 22 035



Цитата(Darwinist @ Aug 4 2009, 18:21) *
а avarice умеет симулировать ядро?


Лучше smile.gif, позволяет дебажиться на реальном железе.
Go to the top of the page
 
+Quote Post
AlexU
сообщение Aug 5 2009, 05:55
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 31-05-06
Пользователь №: 17 639



Цитата(Darwinist @ Aug 4 2009, 17:21) *
kontrollerlab пробывал, но там режим симуляции чего-то нету, а я ищу именно симуляцию ядер под линуксом!

Версия 0.8.0 beta1
View -> Show memory view (смотреть внутренности)
Debug -> PC only debugging -> Enable

Сообщение отредактировал AlexU - Aug 5 2009, 05:57
Go to the top of the page
 
+Quote Post
Darwinist
сообщение Aug 5 2009, 07:00
Сообщение #9





Группа: Новичок
Сообщений: 3
Регистрация: 4-08-09
Из: Тула
Пользователь №: 51 742



Цитата(AlexU @ Aug 5 2009, 09:55) *
Версия 0.8.0 beta1
View -> Show memory view (смотреть внутренности)
Debug -> PC only debugging -> Enable


Честно говорю, нажимал то, что Вы сказали, но почему-то не работало, мб не та фаза луны была 07.gif

Тепрь вроде работает, но есть небольшой нюанс: в AVRStudio, к примеру когда мне нужно было отладить прерывание ADC, я менял значение ADCL и отладчик меня какг-бэ перекидывал на прерывание, мол значения получены, пора и прерывание выполнить. А теперь вот не пойму я, как сие воспроизвести в KontrollerLab ?

PS: код слегка изменил:

Код
#include <avr/io.h>
#include <avr/iom8.h>
#include <avr/interrupt.h>

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;

}
Go to the top of the page
 
+Quote Post
GDI
сообщение Aug 5 2009, 07:25
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



Ну это же не студия, значит он работает по другому. Попробуйте поставить флаг прерывания АЦП с соответствующем регистре.


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 8th July 2025 - 06:08
Рейтинг@Mail.ru


Страница сгенерированна за 0.01463 секунд с 7
ELECTRONIX ©2004-2016