Как всегда о неудачах:
Цитата(Сергей Борщ @ Nov 26 2008, 14:25)

Нет. Скрипт линкера. Если у вас в makefile скрипт явно не указан через LDFLAGS += -Wl,-T,имя_скрипта, то avr-ld берет подходящий для вашего кристалла из WinAVR/AVR/LIB/LDSCRIPTS. Самый простой способ определить, какой именно - переименуйте всю папку, линкер ругнется на конкретный файл, переименуйте папку обратно. Потом берите этот файл, копируйте в свой проект (можно переименовать, чтобы не путаться), добавляйте LDFLAGS += -Wl,-T,имя_скрипта в нужное место makefile или -Wl,-T,имя_скрипта на вкладку опций линкера в AVRStudio, идите в WinAVR/DOC/binutils/ld, читайте о формате скрипт-файла и правьте его как вам надо.
Нашел файл "avr5.x" почитал указанные скрипты но так и не разобрался с указанным файлом, при разборе много вынес полезного.
Я подумал хорошенько и решил не Рестартиться в boot, а загрузаться в usb_application, соответстенно, проверку того какая программа выполняется делаю в main() ( usb_application )
Код
[code]USB_SECTION // 0x2800
void main (void)
{
if(CHECKBIT(PINC,2)) // usb_section -> + 5 V
{
// инициализация
for(;;)
{
}
}
else // application_section -> 0 V
{
// инициализация
for(;;)
{
goto_application();
}
}
}
Необходимо загрузится по адресу application_section ( 0x0200), после самопрограммирования, но не получается. Я создал функцию goto_application(); которая начинается с адреса = 0x0200, а пишу я в flash по этому же адресу.
Возможно одна из причин следующая:
Код
APPLICATION_SECTION //0x0200
void goto_application(void)
{
LED_ON;
LED_ON; // Три LED_ON
LED_ON;
}
Если в теле фукцнии goto_application() написалть 3-и оператора, то получаем память программ вида
Код
...
:1001F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F
:10020000[b]5E9A5E9A5E9A[/b]0895FFFFFFFFFFFFFFFF71
:10021000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE
...
:1034200090915B01982F882790935B0180935A01BC
:1034300020915A0130915B0180916F0190E0822BC5
:10344000932B90935B0180935A0120916A018091A4
:103450005A0190915B01F999FECF92BD81BD20BDCB
:10346000FA9AF99A74CADF91CF911F910895CF9378
:10347000DF93329B16C023E02093690081E08DBB6F
:1034800080E48AB980E58AB980E18BB98CE691E065
:10349000D92FC82F86E2809333012093340178948A
:10[b]34A0[/b]00FFCF80E48AB9[b]5E9A5E9A5E9A[/b]FCCFFFFFF6
:1034B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1C
...
main() 0x0000346e
то есть код повторяетсяЕсли в теле фукцнии goto_application() написалть 5-ть операторов, то
получаем память программ с пятью повторяющимися содами в двух секцияхЕсли в теле фукцнии goto_application() написалть 20-ть операторов, то
получаем память программ видаКод
...
:1001F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F
:10020000[b]5E9A5E9A5E9A5E9A5E9A5E9A5E9A5E9A2E
:100210005E9A5E9A5E9A5E9A5E9A5E9A5E9A5E9A1E
:100220005E9A5E9A5E9A5E9A[/b]0895FFFFFFFFFFFF57
:10023000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE
...
:10344000932B90935B0180935A0120916A018091A4
:103450005A0190915B01F999FECF92BD81BD20BDCB
:10346000FA9AF99A74CADF91CF911F910895CF9378
:10347000DF93329B16C023E02093690081E08DBB6F
:1034800080E48AB980E58AB980E18BB98CE691E065
:10349000D92FC82F86E2809333012093340178948A
:10[b]34A0[/b]00FFCF80E48AB90E940001FDCFFFFFFFFF3C
:1034B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1C
:1034C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0C
...
повторяющихся 5E9A не видноНЕ ПОЙМУ почем функция main() изменяется так странно то добавляет, код код другой секции, то нет...
Может я что-то я что-то делаю не так?
память соответственно 3 оператора, 5 и 20 в файлах
Прикрепленные файлы
3_led.txt ( 45.01 килобайт )
Кол-во скачиваний: 50
5_led.txt ( 45.01 килобайт )
Кол-во скачиваний: 42
20_led.txt ( 45.01 килобайт )
Кол-во скачиваний: 44