Вообще то сначала делается загрузчик, а потом через него заливается основная программа. Загрузчик размещается в верхнюю область памяти программ и при первом включении берет управление на себя. Проверяет необходимость прошивки новой программы (состояние внешних портов или еще что нибудь), и, если надо, по любому интерфесу принимает код и шьет его в нижнюю область. Если прошивать код не надо - передает управление на основную программу по адресу 0000. Вообще то на этом форуме вопрос уже рассматривался неоднократно. Поищи.
|