ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
22 ноября
327236 Топик полностью
Codavr (08.05.2012 13:26, просмотров: 154) ответил MegaJohn на вот смотрю все исходники бутлодырей и все осуществляются как отдельный проект. А хочется что бы к проекту подцепляешь bootldr_avr.c и уже на выходе получаешь прошивку с размещенным APP и BOOT LDR. Второй плюс это уже как симбиоз, то и настройки
Несовсем понял чего ты хочешь. Несколько годков назад делал загрузку. Вот сопроводилово из заголовочного файла. Не такое? 
1ch03 Версия 1.00.00 от 16.06.2005 15:05

Чтобы указать компилятору, код который следует включить в выходной файл
необходимо в опциях компилятора ICCAVR -> Preprocessor -> Defined symbol
установить необходимые #define из списка:

_BOOT_CODE_              - код загрузчика (_NRWW_SEG_ и _RWW_HIGH_)
_PULSE_CODE_             - частотный выход
_POSITIVE_PULSE_         - положительные импульсы частотного выхода
_CONSTANTS_IN_EXTEEPROM_ - если константы во внешнем EEPROM
_ADC_CODE_               - код ADC
_WORK_CODE_              - код рабочего режима
_FLOWMETER_CODE_         - передаем расход
_VOLTMETER_CODE_         - передаем вольты
_TWI_MODE_CODE_          - код режима программирования внешнего EEPROM
_METHOD_001_CODE_        - метод расчета расхода с внешним EEPROM по Кислову
_METHOD_002_CODE_        - резервный
_METHOD_003_CODE_        - резервный

В сегменте _NRWW_SEG_ располагается код который может быть вызван во время записи во Flash
В сегменте _RWW_HIGH_ располагается код необходимый для записи Flash, но не используемый во время записи.
В сегментах _CRC_SEG_ _STUB_SEG_ _MTWIC_SEG_ располагается код функций адресуемых в различных режимах
В сегменте _RWW_LOW_ располагается  код загружаемый через UART
На время записи Flash останавливаем Timer0, чтобы не занимать  NRWW кодом прерывания

для освобождения места в _RWW_LOW_ в верхнюю область (NRWW) переведены
следующие функции:
__C_task void main(void)
__root void MissingTWICode(void)
__root void Stub(void)
void ChangeCurrentMode(void)
void SendCurrentMode(void)

_NumFlashPage временно установил в 3C страниц

чтобы скомпилировать без main()
все что вызываем из BootLoader сделано __root 
установлен флаг XLINK > Include > Ignore CSTARTUP in library
установлен флаг XLINK > Input > Load as PROGRAM
Для глобальных переменных указаны конкретные адреса __no_init int foo @0x10

В .xls файлах:
для загрузчика сегмент CODE установлен на _NRWW_SEG_
для загружаемых модулей сегмент CODE установлен на _RWW_LOW_

В файле 1ch02_var.h:
указаны конкретные адреса сегментов _CRC_SEG_ _STUB_SEG_ _MTWIC_SEG_
куда слинкованы функции CCITT16_update() Stub() MissingTWICode()
Долой империалистический интернационал!