Вызов функции по адресу из файла карты другого проекта
Привет всем, здесь моя проблема.
У меня есть два отличных проекта, во-первых, файл компоновщика отображается следующим образом:
MEMORY
{
rom (rx) : ORIGIN = 0x08000000, LENGTH = 0x0000C400
ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00008000
}
Второй файл компоновщика, как показано ниже:
MEMORY
{
rom (rx) : ORIGIN = 0x0800C400, LENGTH = 0x00019CFC
ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00008000
}
Оба проекта работают на одном MCU и записываются во флэш-памяти отдельно. Во втором проекте я хотел бы отобразить указатели на функции, объявленные в первом проекте. Я попробовал приведенный ниже код, но он не работает, при выполнении отладчик сообщает, что символ не может быть найден, но в соответствии с файлом.map первого проекта адрес (0x0800458C) сопоставлен с функцией, которую я хочу использовать,
uint32_t (*Myfunction)(void);
int main(void)
{
Myfunction = ((uint32_t(*) (void)) 0x0800458C); // address in the first project
Myfunction();
}
Кто-нибудь испытывал это? Спасибо!!
РЕДАКТИРОВАТЬ: Кажется, работает с Keil IDE, когда непосредственно включить файл.symbols в проект. Но с CoIDE (на основе затмения) это не работает. Я все еще пытаюсь выяснить эту проблему.
1 ответ
Вы пробовали это: скрипт компоновщика: вставьте абсолютный адрес функции в сгенерированный код
Я думаю, что последний ответ может быть тем, что вы ищете.