Необходимо запустить две разные программы на двух ядрах Cyclone V SoC. Не могу найти никакой конкретной информации о том как это сделать. Понятно что по умолчанию программа запускается с ядра 0, в это время ядро 1 находится в ресете. Есть два регистра связанные с этой темой: mpumodrst в котором можно убрать ресет с ядра 1, cpu1startaddr в котором задается начальное значение PC ядра 1. Как я понимаю все должно быть просто. Располагаю необходимый для выполнения код программы для 1 ядра (используя scatter файл и команды линкера (я использую arm compiller 5)) по нужному адресу. Затем задаю этот адрес в cpu1startaddr. Затем убираю ресет 1 ядра. Логично?
Но когда ресет убирается (это выполняется в коде 0 ядра) стартовый адрес ядра 1 становится 0x0, а не тот, что я задавал. В прошлогодней теме на этом форуме (https://electronix.ru/forum/index.php?showtopic=133380) писали, что по адресу 0x0 лежит BootROM, но у меня там лежит какая то хрень, неизвестные инструкции (если что, программа стабильно работает на ядре 0). Пробовал делать remap, такое ощущение что эта функция вообще ничего не меняет (наверняка я что-то не так делаю (тупо использую hwlib функции, где там еще можно ошибиться чтоб совсем не было никакого эффекта от функции я не знаю))
Кстати пишу я все это в одном проекте (то есть на выходе один .axf файл (использую DS-5)) Правильно ли это? Может надо делать два отдельных проекта, но как тогда их объединять? В общем такой вопрос, уважаемые. Помогите кто знает, подскажите
Создаю новую тему, потому что в прошлой так и не было дано полноценного ответа.