Цитата(Steve2 @ May 5 2007, 02:35)

В проекте определен Interrupt vector в COMMON segment. Reset vector содержит адрес ISR Reset_Int которая находится в начале CODE segment. При включении контроллера происходит Reset Interrupt и исполнение программы начинаеться с
ISR Reset_Int.
Я добавляю С файл с функцией main() к ассемблерному проекту. Мне необходимо чтобы исполнение программы начиналось с этой самой main(). Я предполагаю, что сам линкер должен установить адрес main() в Reset vector. Так ли это? Или это должен как-то сделать я сам? Что происходит с существующим определением Interrupt vector? Нужно ли только зарезервировать место для Interrupt vector и линкер инициализирует его сам аддресом функции main()?
Так, да не так. Между переходом по адресу, указанному вектором сброса и выполнением main есть еще промежуточный код "стартапа". В этом коде, в соответствии со стандартом Си, происходит инициализация и очистка глобальных и статических переменных. Плюс инициализируется указатель стека. Содержимое вектора Reset vector определяется самим компилятором, т.е. его отдельно инициализировать не нужно. Кроме того, например, в IAR EW430 в этой же секции, еще до инициализации переменных, можно вызвать функцию low_level_init в которой выполнить какие-то дополнительные команды. Например, выключить WatchDog Timer и проинициализировать систему тактирования. Выключение WDT до инициализации переменных может быть даже необходимым условием, т.к. после POR и PUC MSP430 тактируется от DCO, настроенного примерно на 900кГц (MCLK), а WDT настроен на тактирование от этой же MCLK с периодом около 32мс. При этом инициализация большого массива памяти может занять времени больше этих 32мс, что вызовет срабатывание WDT, снова на RESET и так по кругу.
Цитата(Steve2 @ May 5 2007, 02:35)

Очевидно что С инструкции будут транслированы в ассемблер и помещен в CODE segment. Меня интересует будет ли этот ассемблерный код ( из С) помещен в новый CODE segment или в существующий (где определен старый ассемблерный код)? Хотелось бы знать как происходит взаимотношение между двумя этими частями программы?
Посоветуйте хороший мануал или tutorial на эту тему?
Если вы сами не определите отдельный сегмент для Си-ных функций и не укажите компилятору что функции нужно помещать именно в этот сегмент, то нет. И Ассемблерные функции и СИшные компилятор поместит в тот же самый сегмент CODE. Чтобы узнать о том, как корректно смешивать Си и Асм, нужно почитать документацию на ваш компилятор. Поскольку вы не указали его, то я не могу "ткнуть пальцем". В любом случае не помешает прошудировать стандарт ANSI C.