ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
24 ноября
26158 Топик полностью
ShiphT (15.04.2005 13:50, просмотров: 1) ответил Popkov на Ответ: А можно ли по конкретнее, скажем если
Для LPC в частности 1) За разделение векторов отвечает remap. У LPC есть 3 варианта: вектора по адресу 0x00000000 (внутренняя флешь) вектора по адресу 0x40000000 (внетренне озу) вектора по адресу 0x7FFFE000 (загрузчик) После ресета активен 3-й вариант, но тот загрузчик трогать нельзя ни под каким предлогом. Он всегда запускается ДО старта программы и, если есть основная программа, передает ей управление (и если нет признака запуска загрузчика для перепрошифки флешь). 2) Это не обязательно. Твой загрузчик может например сидеть себе спокойно в первом секторе флешь (вместе с векторами - 8 Кб) и прошивать с помощью "родного" загрузчика из последнего сегмента в 8 Кб все промежуточные чем угодно и как угодно. После заливки программы ее вектора можно разместить в озу и сделать remap (2-й вариант). Затем просто передать управление этой программе. Тут оптимально будет указать линкеру при компоновке програм что облать кода начинаестя с 0x0002000, т.е. после загрузчика (отдельная программа), а вектора соответственно - 0x4000000-0x4000003F. 3) а)Передача управления от "родного" загрузчика твоему происходит при наличи корректной CRC области векторов во флеши. Об этом можно и не думать, т.к. при прошивке кристалла это делается автоматически. б) Передача управления от твоего загрузчика программе. После ремапа векторов на основную программу можно просто перейти по адресу ее вектора reset. При этом стартап программы вычистит все остатки от твоего загрузчика и переход будет "почти" правильным (исключение - если ты передавал управление не из User режима). Другой вариант - задействовать собаку и зациклится - сброс будет программный при котором ремап не изменится и, соответственно, управление будет передано непосредственно твоей программе. в) от программы к загрузчику - точно так же как и от загрузчика программе. PS: Вышесказанные методы это сугубо мое имхо для оптимального решения этой задачи на LPC и я не утверждаю что это самый правильный и единственный вариант.