Всем доброго времени суток! Пытаемся разделить два ниоса так чтобы из общего у них оставалась только тактовая частота и все. Принято такое решение потому что попытки реализовать многоядерную систему на одной общей шине приводило к тому что система очень сильно тормозила. Пришли к выводу что процессоры делили между собой шину. Решили разделить шину, каждому свою. На плате планируется оставить две SDRAM и одну EPCS. Но ни как не получается перекачать программу из EPCS в SDRAM второго ядра. В данный момент пробуем использовать SGDMA. В Qsys собрана система NIOS II, on-chip, sysid, jtag_uart, pio, SDRAM_controller. Вторая система такая же. Все разделено, включая линии reset, первое ядро сбрасывается через clock_source, второе через reset_bridge. EPCS подключена к первому ядру. Задумка такая: сначала программа для второго ядра с помощью самодельного boot_loaderа закачивается из EPCS в SDRAM1 от туда данные перегоняются с помощью SGDMA в SDRAM2, и производиться сброс второй системы от PIO первой системы на reset_bridge второй. Далее программа для первой системы с помощью того же boot_loaderа перекачивается в SDRAM1 и для запуска первой системы выполняется переход на программу по адресу в SDRAM1. Если наблюдать из первой системы то все в порядке, программы перегружаются по очереди из EPCS, SGDMA благополучно отправляет данные в SDRAM2, производиться сброс второй системы, программа для первой системы благополучно выкачивается из EPCS и происходит переход первой системы на выполнение программы уже из SDRAM1. На первой и второй системе к PIO подключены по одному светодиоду, если все успешно, должны мигать оба светодиода, но мигает только один который подключен к первой системе. Вторая система. Для анализа зашли в дебаг второй системы и обнаружили что данные которые должны были с помощью SGDMA попасть в SDRAM2 туда не попали. Уже всю голову сломаль, возможно не правильно используем SGDMA? Еще есть идея сделать два SGDMA, один из первой системы mm to st, другой во вторую систему st to mm, или вообще перегнать данные через SPI, но эти два способа требуют наличие программы во втором ядре, программу можно разместить на on-chip через meminit, и запускаться через call на SDRAM2, но все это как то через чур. Хотелось бы перекачать данные с помощью одного ядра в каждую SDRAM и запустить обе системы на выполнение своих прграмм.Может кто ни будь сталкивался с подобной проблеммой, у кого есть какие решения, Еще одну флешку ставить не хочеться, лишни корпус на плате, плата маленькая.
|