Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: CycloneV GIC baremetal пример
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
Alligator75
Всем привет, проведите ликбез плиз.

Собственно в чем вопрос - переношу пример из UNIVERSITY PROGRAM GIC_Example в DS-5. Все работает при условии, если выполняю последовательность (SD карта отсутствует в слоте):

1. Заливаю прошивку в FPGA.
2.
Код
quartus_hps --cable="DE-SoC [USB-1]" -o GDBSERVER --gdbport0=2827 --preloader=C:/altera/15.1/University_Program/Monitor_Program/arm_tools/u-boot-spl.srec --preloaderaddr=0xffff1398 --source=C:/altera/15.1/University_Program/Monitor_Program/blank.srec

3. Через DS-5 заливаю код. Код компилируется с настройками линкера:
Код
-T "C:\DS-5 Workspace\TestGCC\altera-socfpga-hosted-with-vectors.ld" -Wl,--defsym -Wl,arm_program_mem=0x40 -Wl,--defsym -Wl,arm_available_mem_size=0x3fffffbc -Wl,--defsym -Wl,__cs3_stack=0x3ffffffc -Wl,--section-start -Wl,.vectors=0x0


А как все это настроить на автоматический запуск из SD/MMC? - тупик. Стандартные приемы у меня не дали результата.

Нажмите для просмотра прикрепленного файла

vadimuzzz
а плата какая?
Alligator75
Цитата(vadimuzzz @ May 13 2016, 02:42) *
а плата какая?

DE0-Nano-SoC
vadimuzzz
Цитата(Alligator75 @ May 13 2016, 11:38) *
DE0-Nano-SoC

посмотрите тут: https://rocketboards.org/foswiki/view/Docum...lopmentPlatform

вам надо собрать свой preloader, за основу можно взять тот, что грузит линукс в примерах. там надо будет заменить в bsp-настройках предзагрузчика имя бинарника (в примерах это u-boot, который в свою очередь грузит линуксовое ядро). для бинарника своей программы не забудьте сделать mkimage (в make-файле для предзагрузчика можно посмотреть с какими параметрами вызывается mkimage)
Alligator75
Цитата(vadimuzzz @ May 13 2016, 12:46) *
вам надо собрать свой preloader, за основу можно взять тот, что грузит линукс в примерах. там надо будет заменить в bsp-настройках предзагрузчика имя бинарника (в примерах это u-boot, который в свою очередь грузит линуксовое ядро). для бинарника своей программы не забудьте сделать mkimage (в make-файле для предзагрузчика можно посмотреть с какими параметрами вызывается mkimage)

Так это первое, что я сделал. Программа не работает, в данном случае не ловит прерывание от кнопок плис. Работает через загрузку в DS-5, если предварительно были загружены прелоадер и пустышка:
Нажмите для просмотра прикрепленного файла
vadimuzzz
покажите выхлоп в консоль от предзагрузчика при запуске с карточки
Alligator75
Это в консоли:
Код
U-Boot SPL 2013.01.01 (May 13 2016 - 19:00:50)
BOARD : Altera SOCFPGA Cyclone V Board
CLOCK: EOSC1 clock 25000 KHz
CLOCK: EOSC2 clock 25000 KHz
CLOCK: F2S_SDR_REF clock 0 KHz
CLOCK: F2S_PER_REF clock 0 KHz
CLOCK: MPU clock 925 MHz
CLOCK: DDR clock 400 MHz
CLOCK: UART clock 100000 KHz
CLOCK: MMC clock 50000 KHz
CLOCK: QSPI clock 3613 KHz
RESET: COLD
SDRAM: Initializing MMR registers
SDRAM: Calibrating PHY
SEQ.C: Preparing to start memory calibration
SEQ.C: CALIBRATION PASSED
SDRAM: 1024 MiB
ALTERA DWMMC: 0
reading u-boot.img
reading u-boot.img


U-Boot 2013.01.01 (May 13 2016 - 11:47:37)

CPU   : Altera SOCFPGA Platform
BOARD : Altera SOCFPGA Cyclone V Board
I2C:   ready
DRAM:  1 GiB
MMC:   ALTERA DWMMC: 0
*** Warning - bad CRC, using default environment

In:    serial
Out:   serial
Err:   serial
Skipped ethaddr assignment due to invalid EMAC address in EEPROM
Net:   mii0
Warning: failed to set MAC address

Hit any key to stop autoboot:  0
reading u-boot.scr
** Unable to read file u-boot.scr **
Optional boot script not found. Continuing to boot normally
reading zImage
** Unable to read file zImage **
reading socfpga.dtb
** Unable to read file socfpga.dtb **
Bad Linux ARM zImage magic!
SOCFPGA_CYCLONE5 # <INTERRUPT>
SOCFPGA_CYCLONE5 #


Это в DS-5:
Код
Stopping running target Altera - Cyclone V SoC (Dual Core) on TCP:localhost on connection
Connected to running target Altera - Cyclone V SoC (Dual Core) on TCP:localhost
Execution stopped at: S:0x3FF8D954
source /v "C:\altera\15.1\embedded\ds-5\sw\debugger\configdb\Scripts\altera_target_check.py"
S:0x3FF8D954   B        {pc}-0xc; 0x3ff8d948

No SYSID registers could be found. Has a peripheral description file been supplied?

loadfile "C:\DS-5 Workspace\TestGCC\Debug\TestGCC.axf"
Loaded section .vectors: S:0x00000000 ~ S:0x0000003F (size 0x40)
Loaded section .text: S:0x00000040 ~ S:0x000007FB (size 0x7BC)
Loaded section .eh_frame: S:0x000007FC ~ S:0x000007FF (size 0x4)
Loaded section .rodata: S:0x00000800 ~ S:0x00000857 (size 0x58)
Loaded section .data: S:0x00000858 ~ S:0x00000C97 (size 0x440)
Loaded section .bss: S:0x00000C98 ~ S:0x00000CB7 (size 0x20)
Entry point S:0x00000120
cd "C:\DS-5 Workspace"
Working directory "C:\DS-5 Workspace"
set debug-from main
start
Starting target with image C:\DS-5 Workspace\TestGCC\Debug\TestGCC.axf
Running from entry point
wait
Execution stopped at breakpoint 1: S:0x00000398
In interrupt_example.c
S:0x00000398   17,0   {
Deleted temporary breakpoint: 1
wait
continue


После старта программа вываливается в:
Код
void __attribute__ ((interrupt)) __cs3_reset (void)
{
    volatile int * LED_ptr = (int *) LED_BASE;
    *LED_ptr=0b10000000;

    while(1);
}
vadimuzzz
а u-boot зачем? грузите сразу свой бинарник
Alligator75
Цитата(vadimuzzz @ May 13 2016, 19:16) *
а u-boot зачем? грузите сразу свой бинарник

что с юбутом, что без юбута ...
Alligator75
Все ли я делаю правильно :
Код
Stopping running target Altera - Cyclone V SoC (Dual Core) on TCP:localhost on connection
Connected to running target Altera - Cyclone V SoC (Dual Core) on TCP:localhost
Execution stopped at: S:0xFFFF03C4
source /v "C:\altera\15.1\embedded\ds-5\sw\debugger\configdb\Scripts\altera_target_check.py"
S:0xFFFF03C4   B        {pc}; 0xffff03c4

No SYSID registers could be found. Has a peripheral description file been supplied?

load "C:\DS-5-Workspace\TestGCC\Debug\TestGCC.axf"
Loaded section .vectors: S:0xFFFF0000 ~ S:0xFFFF003F (size 0x40)
Loaded section .text: S:0xFFFF0040 ~ S:0xFFFF07FB (size 0x7BC)
Loaded section .eh_frame: S:0xFFFF07FC ~ S:0xFFFF07FF (size 0x4)
Loaded section .rodata: S:0xFFFF0800 ~ S:0xFFFF0857 (size 0x58)
Loaded section .data: S:0xFFFF0858 ~ S:0xFFFF0C97 (size 0x440)
Loaded section .bss: S:0xFFFF0C98 ~ S:0xFFFF0CB7 (size 0x20)
Entry point S:0xFFFF0120
cd "C:\DS-5 Workspace"
Working directory "C:\DS-5 Workspace"
set debug-from *$ENTRYPOINT
start
Starting target with no symbolic information loaded
wait
Execution stopped at: S:0xFFFF0120
S:0xFFFF0120   LDR      sp,[pc,#-0]
wait
continue


Нажмите для просмотра прикрепленного файла

при запуске с sd карты не работает, при запуске из ds-5 работает 8-((. Такое ощущение, что с точкой входа что то не так
Alligator75
Вопрос решен. Как говорится - дело было не в бобине )
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.