bootstrapping - тема тонкая
ресурсы, где можно подробней об этом почитать?
memset(&usr, 0, sizeof(user_t));
.user_t usr = {0};
то-есть нужно вручную написать функцию для перевода текста в управляющий символ?
Для того, чтобы компилятор добавил процедуру __do_copy_data, ее надо явно объявить:
.global __do_copy_data
Тогда компилятор добавит код заполнения данных в SRAM из Flash, о котором Вы писали ранее.
.global __do_copy_data
создаёт ссылку на символ и линковщик его прилинковывает к программе.Возможно, gcc так компилирует код на Си
нигде не встречал информацию о том, что для загрузки в SRAM нужно что-то отдельно прописывать в компилятор.
avr-gcc -g -mmcu=avr4