В общих чертах -
Выполняемый (загружаемый) код должен иметь таблицу импорта для библиотечных функций (id=address) и таблицу экспорта (id/name=address)
Загрузчик кода поправляет таблицу импорта и добавляет список экспорта в глобальный список функций. Это несложно в реализации и дает возможность динамической загрузки и выполнения кода.
Вместо таблицы импорта можно сделать callback и возвращать загружаемому объекту ссылку на нее (чтобы можно было выполнять код из flash, не переписывая в нем таблицу)
Вообще, вариантов реализации - море, но механизм везде общий

ps Единая для всех модулей точка входа (инициализации), и больше ничего не надо - остальное сделает загрузчик
Такой код пишется в ИАРе в рабочем проекте (с рабочим загрузчиком объектов), потом либо перетаскивается в пустой проект, либо собирается в отдельном сегменте, чтобы его можно было легко выкусить. Просто вместо стандартных malloc/free/strcpy будут вызовы _malloc/_free/_strcpy - записи из локальной таблицы импорта
Сообщение отредактировал _dem - Dec 18 2007, 12:15