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

 
 
> WinAvr gcc, Помогите! Неверный скрипт для avr-ld ???...
картошка
сообщение Dec 28 2005, 22:23
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 28-12-05
Из: Odessa
Пользователь №: 12 673



Здраствуйте.

Разбираюсь с пакетом WINAVR ни разу не писал для микроконтролеров на "C".
Откомпилировал файл : avr-gcc -mmcu=atmega16 -S tavr.c -o tavr.s . И получил текстовый ассемблерный файл с именем tavr.s, как заказывал в командной строке.
При запуске командной строки : avr-as -mmcu=avr5 -ahls=asm.l freqpomp.s tavr.s -o tavr.o - создается обьектный файл для линковщика и ненужно-контрольный файл asm.l который я заказал в командной строке. Все хорошо и нет никаких ошибок.

Но при обработке обьектного файла дизасемблером (avr-objdump) на командах jmp и call нулевые указатели адреса. И после запуска линковщика : avr-ld -Map maps.l -T tavr.lnk tavr.o -o file.bin создается мною попрошенный файл maps.l и сама готовая програма в файле file.bin. При просмотре бинарника дизасемблером IDA PRO ADVANCE ну и просто визуально, я замечаю что в командах jmp и call нулевые физические адреса.
У меня есть подозрительно-вопросительные соображения что возможно я что-то в скипте недописал? , вот его код:

OUTPUT_FORMAT ("binary")
SECTIONS
{
.text : { * ( .text )}
. = 0x00020000; --- адресное смещение для формирования файла
.data : { * ( .data )}
.bss : { * ( .bss )}
__do_copy_data = 0;
__do_clear_bss = 0;
__stack = 0x0300;
}

примечание: сегменты .data и .bss у меня не использованы и не создаются , я просто не создавал пока никаких переменных.

Помогите словом добрым пожалуйста.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Andy Great
сообщение Jan 2 2006, 09:08
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 793
Регистрация: 5-11-04
Из: Краматорск, Украина
Пользователь №: 1 057



avr-ld --help выдает список ключей. Для моего v2.15 этот ключ есть.
Go to the top of the page
 
+Quote Post
картошка
сообщение Jan 2 2006, 22:38
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 28-12-05
Из: Odessa
Пользователь №: 12 673



Цитата(Andy Great @ Jan 2 2006, 12:08) *
avr-ld --help выдает список ключей. Для моего v2.15 этот ключ есть.


Очень большое Cпасибо. Там много ключей которых нет в стандартном описании avr-ld. Спасибо попробую. Извините, что отвлек - тупикую немного. Чесно говоря даже в голову не пришло написать : avr-ld --help .
Спасибо буду эксперементировать. cheers.gif
Go to the top of the page
 
+Quote Post
картошка
сообщение Jan 3 2006, 02:20
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 28-12-05
Из: Odessa
Пользователь №: 12 673



Все ключи для avr-ld и avr-as перепробовал ничего не помогает.
Ассемблер работает правильно. Obj файл который создался я обработал avt-objdump все правильно и OPCODE соответствуют. Правда неплохо было-бы попробовать другой утилитой просмотра obj не gnu.

Вот особенности проблемы: если ставить на команды не метки, а непосредственные адресса - то все нормально и линковщик генерит правильный код.
Линковщик и ассемблер проходит без единной ошибки.
Вот часть листинга при ассемблировании avr-as, все OPCODE правильные , а после линковки искажаютя, справа я указал где именно:

1
2
3 0000 0C94 0000 resets: jmp resets2 ; сдесь уже проблема OPCODE
4 0004 0C94 0002 jmp 1024 ; сдесь норма
5 0008 0C94 3408 jmp 4200 норма
6 000c 0C94 0000 jmp nneint проблема
7 0010 0C94 0000 jmp resets2
8 0014 0C94 0000 jmp nneint проблема
9 0018 0C94 0000 jmp nneint проблема
10 001c 0C94 0000 jmp nneint проблема
11 0020 0C94 0000 jmp nneint проблема
12 0024 0C94 0000 jmp counti проблема
13 0028 0C94 0000 resets2: jmp nneint проблема


Но если переставить метку resets2 вверх то листинг совсем другой :

1
2 __stack = 0x0450
3 0000 0C94 0000 resets: jmp resets2 ; правильный OPCODE
4 0004 0C94 0002 jmp 1024 ; норма
5 0008 0C94 3408 jmp 4200 ; норма
6 000c 0C94 0000 jmp nneint проблема
7 0010 0C94 0000 jmp resets2 норма
8 0014 0C94 0000 jmp nneint проблема
9 0018 0C94 0000 jmp nneint проблема
10 001c 0C94 0000 jmp nneint ну и ниже т.д.
11 0020 0C94 0000 jmp nneint
12 0024 0C94 0000 resets2: jmp counti
13 0028 0C94 0000 jmp nneint

14 002c 0C94 0000 jmp receiv
15 0030 0C94 0000 jmp nneint
16 0034 0C94 0000 jmp transm
17 0038 0C94 0000 jmp nneint
18 003c 0C94 0000 jmp nneint
19 0040 0C94 0000 jmp nneint
20 0044 0C94 0000 jmp nneint
21 0048 0C94 0000 jmp nneint
22 004c 0C94 0000 jmp nneint
23 0050 0C94 0000 jmp nneint


Вот дальше часть кода на что указывают эти метки в командах JMP:
24 nneint:
25 0054 1895 reti
26 counti:
27 0056 1895 reti
28 receiv:
29 0058 1895 reti
30 transm:
31 005a 1895 reti

Примечание : искажается код примерно так: вот OPCODE команды jmp - 0C94 0000 , после линковщика искажаеся по кокому-то алгоритму X : вот неправильный OPCODE - XX94 0000.

Ведь если вместо call и jmp использовать rcall и rjmp все с кодом впорядке и все работает.
Ничего не понимаю.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- картошка   WinAvr gcc   Dec 28 2005, 22:23
- - haker_fox   2картошка: а может все упростить??? Я так понимаю,...   Dec 29 2005, 02:14
- - unichorn   А мне нравится WinAVR20050214+AVRStudio4.11 А вот...   Dec 29 2005, 10:02
|- - haker_fox   Цитата(unichorn @ Dec 29 2005, 18:02) А м...   Dec 29 2005, 10:58
|- - картошка   Спасибо. Вот хочу поделится че вышло за сегодня. ...   Dec 29 2005, 23:58
- - haker_fox   Ну не должно быть таких граблей... Какой версией W...   Dec 30 2005, 01:58
|- - картошка   Цитата(haker_fox @ Dec 30 2005, 04:58) Ка...   Dec 30 2005, 15:31
- - Andy Great   Ключ --no-stdlib спасет гиганта мысли. GCC настраи...   Dec 31 2005, 08:43
- - beer_warrior   Пару слов вдогонку. 1. Я бы не советовал пользоват...   Jan 1 2006, 09:34
|- - картошка   С наступившем. И с наступающим Рождеством. Я не р...   Jan 1 2006, 13:34
- - Andy Great   ключ -nostdlib (уточнил) - это ключ линкера. Я ни ...   Jan 1 2006, 16:12
|- - картошка   Цитата(Andy Great @ Jan 1 2006, 19:12) кл...   Jan 1 2006, 17:35
- - Andy Great   Что касается особенностей работы GNU-программ, чит...   Jan 3 2006, 09:23
- - картошка   Всем! Всем! Всем! Действительно глюк к...   Jan 3 2006, 23:20
- - Petka   скажу сразу что с вопросом не разбирался... просто...   Jan 4 2006, 17:53
- - картошка   Спасибо "Petka" . Я уже все перепробовал...   Jan 5 2006, 02:58
|- - Petka   Цитата(картошка @ Jan 5 2006, 05:58) Спас...   Jan 6 2006, 12:51
- - Laura   ничего не понимаю второй год с GCC работаю, все но...   Jan 18 2006, 05:58


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

 


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


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