Сергей Борщ (17.11.2007 20:11, просмотров: 133) ответил Argon на Ага, спасибо! Про -QINTVEC еще раз: все же это копирование, или точнее сказать, дублирование, т.к. в обоих сегментах INTVEC и INTVEC_I после прошивки содержатся одинаковые данные.
Нет, это не копирование. В этом вашем примере MYSEG_I находится в ОЗУ, а MYSEG_ID - во флеш. Точно так же размещаются функции в ОЗУ - они хранятся во флеш, потом переписываются в ОЗУ, но никому нет никакого дела до того, где они лежали - интересует только чтобы уже находясь в своем месте в озу они работали правильно. Опция -Q используется для инициализированных глобальных и статических переменных, для функций, объявленных с __ramfunc. Само копирование выполняет cstartup.
>Но если загрузчик - это отдельный проект, то __program_start() для него - это вроде как переход по адресу 0 и запуск самого себя.
Да, это переход на нулевой адрес. Но после копирования векторов и ремапа в нулевом адресе уже не переход на загрузчик, а вектор reset приложения.