Перейти к содержанию
    

ATMEGA2560 - непонятное влияние 1 строки кода

Всем привет.

ATMEGA2560 + GCC + scmRTOS, сборка в отладочном режиме. На плате доп. память для процессора установлена.

avr-g++ -Wall -mmcu=atmega2560 -ffunction-sections -fdata-sections -DF_CPU=8000000UL -DGCC_MEGA_AVR -Os -D__DEBUG_ENABLE__ -D__SW_DEBUG__ -c src/alg/algoritm.cpp -o obj/Debug/src/alg/algoritm.o

 

section                      size      addr
.data                        4842   8397312
.text                      157094         0
.bss                        19233   8402154
.noinit                         1   8421387
.comment                       17         0
.note.gnu.avr.deviceinfo       64         0
Total                      181251

Внутри одной функции вызывается другая функция (вывод в программный UART дебаг). Но ни первая, ни вторая 100% не вызываются, так должно быть!

Первая функция.

void foo::foo()
{
	...
	dbgout(LOG_DEBUG, "[%s()]: Operation is double!\n", __FUNCTION__);
  	...
}

Вторая функция (отладочного вывода).

void dbgout(const int32_t level, const char* format, ...)
{
    va_list args;

    va_start(args, format);
    vprintf(format, args);
    va_end(args);
}


В более ранних ревизиях ПО этот отладочный вывод просто перестал работать, начиная с какой-то ревизии.
В более поздних - все зависает через несколько секунд после включения.
Не мой баг точно. Думаю, это как-то связано с размером или расположением кода. Т. е., при сборке в отладочном режиме объем увеличивается и начинаются глюки. Причем, если строчку с вызовом dbgout() в первой функции закомментировать - все работает. Но ведь она 100% не выполняется, как и первая функция!

Посоветуйте, пожалуйста, куда смотреть, что искать...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Привет,

Quote

Думаю, это как-то связано с размером или расположением кода.

Так сравни map файлы разных ревизий.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сравнивал. Ничего подозрительного не нашел. Там в адресах различия в основном. Ну, может, неправильно сравнивал. Все решилось уменьшением стека процесса для scmRTOS.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...