ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
25 ноября
105191 Топик полностью
Argon (17.11.2007 15:12, просмотров: 135) ответил Argon на Сергей, и еще в тему вопрос. После установки границ сегмента INTVEC 0x00001000...0x0000103f (у меня LPC). Возникает ошибка проверки диапазонов.
Уточнение: это у меня было в связи с прямым назначением сегмента INTVEC в "неродные" адреса. Сделал как в Вашем варианте, с копированием сегментов, предупреждения пропали. Но возникли еще вопросы. Мой xcl-файл: <c> //область бутлоадера -DBL_START=00000040 -DBL_END=0000FFF //область основной программы -DROMSTART=00001040 -DROMEND=0007FFF -Z(CODE)INTVEC=00000000-0000003f //"родные" адреса таблицы векторов -Z(CODE)INTVEC_I=00001000-0000103f //копия таблицы, к-рая будет скопирована в 0x40000000-0x4000003f -QINTVEC=INTVEC_I //копирование содержимого INTVEC в INTVEC_I -Z(CODE)ICODE,DIFUNCT=ROMSTART-ROMEND -Z(CODE)SWITAB=ROMSTART-ROMEND -Z(CODE)BLCODE=BL_START-BL_END -DRAMSTART=40000040 //используемая софтом таблица векторов -DRAMEND=40001FFF </c> Вопрос такой: Если в нулевых адресах находится реальная таблица векторов, то с 0-го адреса происходит переход на __program_start(). Если принудительно поместить туда джамп на загрузчик (кстати как не вызвать при этом конфликта с линкером?), то необходимо вычислить контрольную сумму по адресу 0x00000040, к-рую проверяет NXP-шный бутлоадер перед тем, как дать управление программе. Как вариант, можно прошивать прибор в 2 этапа: Первым этапом загрузчик, в котором содержится его правильная контрольная сумма. Вторым этапом - загрузчик берет прошивку из файла. Но это громоздко. Хотелось бы в одной прошивке иметь и загрузчик и основную программу, чтобы можно было в процессе разработки заниматься отладкой всего вместе. Как Вы решаете эту проблему?