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

 
 
> Ошибка при оптимизации, Помогите разобраться
Troll
сообщение Feb 9 2009, 12:31
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 104
Регистрация: 30-06-05
Из: С-Петербург
Пользователь №: 6 406



Доброго дня.

Возникла следующая проблема.

При использовании параметров компиляции -ffunction-sections -fdata-sections и компоновки -Wl,--gc-sections в программе появляется ошибка. При сборке без данных параметров все работает.

Описание проблемы:
При старте программы происходит настройка периферии. PIT настраивается на период в 1 сек. По прошествии одной секунды происходит прерывание... Дальнейшее сокрыто мраком до перезагрузки проца WatchDog'om (через 16 сек).

Дополнительно:
- происходит именно прерывание от PIT, проверял путем выключением прерывания и увеличения периода (соответственно проц зависал на несколько секунд позже).
- в обработку прерывания PIT вставил команду сброса сторожевого таймера, сторожевой таймер не сбрасывается. Следовательно после прерывания проц переходит непонятно куда, либо не возвращается из прерывания.
- листинг функций конфигурации таймера и обработки прерываний для обоих режимов компиляции не отличается (за исключением начальных адресов функций). Листинг смотрел в объектном файле после линковки, то есть оптимизатор не выкидывает функции, как не нужные.
- единственное отличие, которое нашел, это то что функции располагаются в разных секциях. Что является само собой разумеющимся при использовании указанных параметров оптимизации.
- компилятор GNU GCC 4.2.2, binutils 2.18.

Буду рад услышать Ваши рекомендации по решению данной проблемы.

С уважением.


--------------------
Hemos Pasado
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Troll
сообщение Mar 13 2009, 03:45
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 104
Регистрация: 30-06-05
Из: С-Петербург
Пользователь №: 6 406



А... немного погорячился.

С векторами все в порядке, а вот с оптимизированными данными нет.

При использовании опции "-fdata-sections" не обнуляются глобальные переменные, если глобальная переменная инициализируется не нулевым значением, то все нормально.

Пример:
CODE
int varA = 0;
int varB = 100;

main () {
printf("%d, %d\r\n", varA, varB);
}

В результате будет выведено "-220118871(просто случайное число), 100".

Вот такая фигня. Выслушаю Ваши предложения и замечания.


--------------------
Hemos Pasado
Go to the top of the page
 
+Quote Post
alx2
сообщение Mar 15 2009, 12:41
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 340
Регистрация: 25-10-05
Из: Пермь, Россия
Пользователь №: 10 091



Цитата(Troll @ Mar 13 2009, 08:45) *
При использовании опции "-fdata-sections" не обнуляются глобальные переменные
...
Вот такая фигня. Выслушаю Ваши предложения и замечания.
Вообще-то обнуление .bss* - забота программиста. Проверяйте свой стартап-код. Линкер ничего никуда записывать не должен - это не его работа. Его работа - поместить объекты, требующие обнуления, в .bss*. А обнуление этой области - забота программиста.


--------------------
Всего наилучшего,
Alex Mogilnikov
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Troll   Ошибка при оптимизации   Feb 9 2009, 12:31
- - ARV   Цитата(Troll @ Feb 9 2009, 15:31) При исп...   Feb 11 2009, 19:39
|- - Troll   Цитата(ARV @ Feb 12 2009, 01:39) при пере...   Feb 12 2009, 03:59
- - ARV   листинг надо смотреть... что-то не то с таблицей в...   Feb 12 2009, 05:05
|- - Troll   Цитата(ARV @ Feb 12 2009, 11:05) листинг ...   Feb 12 2009, 06:18
- - Troll   Вроде разобрался... Цитата(ARV @ Feb 12 2009...   Mar 12 2009, 06:52
|- - aesok   Цитата(Troll @ Mar 13 2009, 06:45) В скри...   Mar 13 2009, 06:56
|- - ReAl   Цитата(alx2 @ Mar 15 2009, 14:41) Вообще-...   Mar 15 2009, 13:05
|- - alx2   Цитата(ReAl @ Mar 15 2009, 18:05) А никто...   Mar 16 2009, 10:57
- - Troll   Продолжаем разговор... Неициализированные перемен...   Mar 13 2009, 05:53
- - Troll   Все разобрался Цитата(aesok @ Mar 13 2009...   Mar 13 2009, 08:41
- - Diz   Мне показалось, или выход из прерываний совсем нек...   Mar 15 2009, 17:18
- - Troll   Цитата(Diz @ Mar 15 2009, 23:18) Мне пока...   Mar 16 2009, 03:15
- - Diz   Цитата(Troll @ Mar 16 2009, 06:15) Не пон...   Mar 16 2009, 15:18


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

 


RSS Текстовая версия Сейчас: 20th August 2025 - 03:32
Рейтинг@Mail.ru


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