Линкер для связи Функции, найденные в другом пространстве кода, но в одной и той же Flash - PullRequest
0 голосов
/ 29 декабря 2010

Я использую микроконтроллер HCS08 и Code Warrior в качестве среды разработки.У меня есть 2 отдельные программы, находящиеся на ПЗУ (загрузчик и код приложения).У меня есть некоторые файлы / функции, присутствующие в коде Bootlaoder, а также необходимые для кода моего приложения, но я не хочу дублировать эти функции (размером 3-4 КБ).Итак, есть ли возможность использовать функции, которые не являются частью кода приложения, но присутствуют в ПЗУ.Это возможно?Может ли линкер что-то сказать?

1 Ответ

1 голос
/ 29 декабря 2010

В общем, да, но способ, которым вы делаете это через компоновщик, скорее всего, зависит от набора инструментов.Я никогда не использовал CodeWarrior для разработки встраиваемых систем, но, в качестве примера, используя набор инструментов RVCT от ARM, вы можете создать файл 'symdefs' при связывании загрузчика и иметь ссылку на код приложения для этого файла.

Есливам не нужно беспокоиться о блокировке набора инструментов, тогда можно было бы использовать binutils из GNU для экспорта таблицы символов из исполняемого файла вашего загрузчика (например, nm foo.exe > symtab.txt), запустить сценарий над таблицей символов, чтобы преобразовать его в.h файл в форме:

#define symbol_name_ADDR 0x00001efc

и вызов внешних функций через механизм вроде:

((void (*)(int arg)) symbol_name_ADDR)(12);

, который довольно уродлив, но должен выполнить работу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...