Описание существующей системы: Есть модуль с ПЛИС в которой реализован процессор NIOS II.
К NIOS II подключена ОЗУ, контроллер UART, реализованный в ПЛИС и другая переферия,
которая не относится к сути вопроса.
UART через приёмопередатчик подключен к порту COM ПК.
Через RS-232 и соответствующее ПО на ПК осуществляется чтение и запись данных в регистры адресного
пространства модуля, получение текстовой информации в консоль, запись программ в ОЗУ и их запуск на выполнение.
ОЗУ разделена в BSP на две части: HOST_PROGRAMM и LOAD_PROGRAMM.
HOST_PROGRAMM - это часть ОЗУ в которой хранится и выполняется программа запускаемая при подаче
питания на модуль и осуществляет связь с ПК по RS-232.
LOAD_PROGRAMM - это часть ОЗУ в которой хранится и выполняется программа записываемая по интерфейсу RS-232.
на данный момент программа загружаемая через RS-232 вызывается по адресу функции main(которая берётся из map-файла). Это сделано для
того что бы пропустить автоматическую инициализацию стека и после выполнения функции main вернуться без перезагрузки модуля
в HOST_PROGRAMM. Со стороны ПК, для пользователя, это выглядит как загрузка файла по определённому адресу в ОЗУ и ввода
адреса jump на загруженную программу, по которому осуществляется вызов лежащей там функции. В связи с тем что таких загружаемых
программ может быть несколько десятков и у каждой, естественно, свой адрес расположения функции main необходимо унифицировать
адрес расположения этой функции, т.е. привести к одному для любой загружаесмой программы LOAD_PROGRAMM, хотя бы с точки
зрения пользователя на ПК.
Вопрос: как унифицировать адрес расположения функции main в ПО? Что в этом мне может помочь? Можно это сделать линковщиком?
Спасибо за уделённое внимание.
