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

 
 
> дизассемблерование atmega
coolibin
сообщение Nov 12 2011, 12:48
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 214
Регистрация: 19-07-07
Пользователь №: 29 228



Подскажите, пожалуйста, чем дизассемблеровать atmeg'у? пробывал IDA, не нашел этого проца(может плохо искал?), пробывал AVRStudio, получислось, но не совсем удобно, например, вызов процедуры RCALL PC - 0x076F, мне не понятно куда прыгает программа, хотелось бы сразу получить код с метками, и желательно с именами Регистров типа UBRR? дизассемблер может такое сделать?или все прийдется делать ручками?


--------------------
Нет повести печальнее на свете, чем повесть о хреновом интернете.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
coolibin
сообщение Nov 14 2011, 13:16
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 214
Регистрация: 19-07-07
Пользователь №: 29 228



А не подскажите, как найти часть кода где идет инициализация USART? смотрел в даташите пример инициализации, подобного кода не у себя нашел(((


--------------------
Нет повести печальнее на свете, чем повесть о хреновом интернете.
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Nov 14 2011, 13:39
Сообщение #3


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

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата(coolibin @ Nov 14 2011, 17:16) *
А не подскажите, как найти часть кода где идет инициализация USART? смотрел в даташите пример инициализации, подобного кода не у себя нашел(((

Там же в DS есть адреса интересующих Вас регистров , взависимости от области их нахождения ищите команды обращения по этим адресам. Обычно UBRR всегда есть в коде, где происходит инит USART


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
coolibin
сообщение Nov 15 2011, 11:19
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 214
Регистрация: 19-07-07
Пользователь №: 29 228



Цитата(ILYAUL @ Nov 14 2011, 15:39) *
Там же в DS есть адреса интересующих Вас регистров , взависимости от области их нахождения ищите команды обращения по этим адресам. Обычно UBRR всегда есть в коде, где происходит инит USART

Да, в DS есть строчка:
RAM:0029 UBRRL: .byte 1 ; USART Baud Rate Register Low
где программа обращается по этому адресу я так и не нашел((

я предпологаю инициализация должна выглядеть примерно так:

; Set baud rate
out UBRRH, r17
out UBRRL, r16
; Enable receiver and transmitter
ldi r16, (1<<RXEN)|(1<<TXEN)
out UCSRB,r16
; Set frame format: 8data, 2stop bit
ldi r16, (1<<URSEL)|(1<<USBS)|(3<<UCSZ0)
out UCSRC,r16

но чего то похожего я тоже не нашел((

может это быть изза того что я не правильно выбрал тип процессора при дизасме?

Сообщение отредактировал coolibin - Nov 15 2011, 11:22


--------------------
Нет повести печальнее на свете, чем повесть о хреновом интернете.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Nov 15 2011, 11:46
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(coolibin @ Nov 15 2011, 15:19) *
чего то похожего я тоже не нашел

Вы знаете конкретный тип МК, для которого была написана дизассемблируемая программа? Хорошо бы его огласить...

Регистры имеют, зачастую, два адреса: по одному адресу к нему можно доступиться командами ввода-вывода, по другому - как к обычной ячейке памяти. Соответственно и команды могут быть разные... Вероятно, что адрес 29h - это адрес регистра UBRRL при доступе к нему как ячейке памяти; при доступе через команду OUT он имеет, скорее всего, адрес 9h.
Go to the top of the page
 
+Quote Post



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

 


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


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