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

 
 
> Avr- gcc добавить в функцию 10-60кб asm volatile ("nop"), необходимо для тестирования
Kris2007
сообщение Oct 29 2007, 09:03
Сообщение #1


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

Группа: Участник
Сообщений: 75
Регистрация: 15-03-07
Пользователь №: 26 193



Нужно в функцию сделать на 60кб длиннее. Как об этом сказать компилятору gcc?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 3)
ReAl
сообщение Oct 29 2007, 11:20
Сообщение #2


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(Kris2007 @ Oct 29 2007, 11:03) *
Нужно в функцию сделать на 60кб длиннее. Как об этом сказать компилятору gcc?

А зачем, интересно???
Вот так должно пойти (это на 20КБ выходит)
Код
extern const uint8_t always_zero;
void foo(void) {
    // тело функции ...

    if( always_zero == 0 ) return;
    // Чтобы дальнейшее не выбросил оптимизатор как unused code - завести где-то
    // переменную, про которую он не знает, что она всегда 0, и по ней делать возврат

    __asm__ volatile (
        ".rept 10000" "\n\t"
        "nop"         "\n\t"
        ".endr"
        ::
    );
}


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
Kris2007
сообщение Oct 29 2007, 12:20
Сообщение #3


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

Группа: Участник
Сообщений: 75
Регистрация: 15-03-07
Пользователь №: 26 193



Спасибо.
Сейчас попробую.
А нужно чтобы протестировать насколько правильно компилятор действует при 256к памяти (atmega2561).

Не подскажи еще возможно ли указать компилятору или линкеру выделить данный конкретный адрес для функции в памяти программ? Простой .org 0x20000 в асмовской вставке не прокатит?

Ругаетсяsad.gif
..../main.c:598: relocation truncated to fit: R_AVR_7_PCREL against `no symbol'

Сообщение отредактировал Kris2007 - Oct 29 2007, 12:21
Go to the top of the page
 
+Quote Post
Kris2007
сообщение Oct 29 2007, 13:52
Сообщение #4


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

Группа: Участник
Сообщений: 75
Регистрация: 15-03-07
Пользователь №: 26 193



Цитата(Kris2007 @ Oct 29 2007, 15:20) *
Спасибо.
Сейчас попробую.
А нужно чтобы протестировать насколько правильно компилятор действует при 256к памяти (atmega2561).

Не подскажи еще возможно ли указать компилятору или линкеру выделить данный конкретный адрес для функции в памяти программ? Простой .org 0x20000 в асмовской вставке не прокатит?

Ругаетсяsad.gif
..../main.c:598: relocation truncated to fit: R_AVR_7_PCREL against `no symbol'


Разобрался!:)

это if () return ... компилятор попытался прыгнуть за 2047:)
Go to the top of the page
 
+Quote Post

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

 


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


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