Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Настройка fpga2sdram в u-boot
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
chirik
Всем привет!
1) Сделал пример в qsys: генератор картинки- > фрейм буфер на памяти DDR3 ARMa -> VGA генератор
(за основу взял пример от terasic, и с их образом SD-карты мой пример работает - вижу цветные полосы на мониторе)
2) Делаю свою SD-карту по описанию https://rocketboards.org/foswiki/Documentation/AVCVGSRD161
3) Прошиваю образ на флешку и при запуске вижу следующее:
- В fpga прошивка по умолчанию (судя по терминалу плис прошивается, но потом такое ощущение, что ресет проскакивает и плис снова с прошивкой по умолчанию)
Hit any key to stop autoboot: 0
reading u-boot.scr
200 bytes read in 4 ms (48.8 KiB/s)
## Executing script at 02000000
reading soc_system.rbf
7007204 bytes read in 331 ms (20.2 MiB/s)
## Starting application at 0x3FF79584 ...
****
- После загрузка останавливается
Starting kernel ...
[ 0.000000] Booting Linux on physical CPU 0x0
****
[ 1.041385] of_cfs_init: OK
[ 1.047017] ttyS0 - failed to request DMA
[ 1.051082] Waiting for root device /dev/mmcblk0p2...
Нажмите для просмотра прикрепленного файла
Я так понимаю, что запуск fpga2sdram не прошел.
У меня есть подозрение, что я не могу использовать настройку u-boot.scr по умолчанию https://rocketboards.org/foswiki/Documentat...ProgrammingFPGA
fatload mmc 0:1 $fpgadata soc_system.rbf;
fpga load 0 $fpgadata $filesize;
run bridge_enable_handoff;
run mmcload;
run mmcboot;

Хочу узнать ваше мнение, это в u-boot.scr нужно дополнительно конфигурировать fpga2sdram ?
И еще вопрос, почему прошивка плис не проходит?
sonycman
Что значит "в fpga прошивка по умолчанию"?
Сгенерируйте свою прошивку и положите её на карту памяти под именем soc_system.rbf, затерев таким образом оригинальную.

Скрипт uboot изменять не нужно.
chirik
Цитата(sonycman @ Oct 18 2017, 21:45) *
Что значит "в fpga прошивка по умолчанию"?
Сгенерируйте свою прошивку и положите её на карту памяти под именем soc_system.rbf, затерев таким образом оригинальную.

Скрипт uboot изменять не нужно.


"её на карту памяти под именем soc_system.rbf" - я так и делаю. по умолчанию это которая pof из EPCS.

Цитата(sonycman @ Oct 18 2017, 21:45) *
Скрипт uboot изменять не нужно.


В этой статье говорят, что включение fpga2sdram необходимо выполнять в U-boot и добавляют следующие строки
https://habrahabr.ru/company/metrotek/blog/263571/
...
fpgadata=0x10000000
fpgafile=/lib/firmware/fpga/fpga.rbf
fpgaboot=setenv fpga2sdram_handoff 0x3fff; ext2load mmc 0:2 ${fpgadata} ${fpgafile}; fpga load 0 ${fpgadata} ${filesize}
bridge_enable_handoff=mw $fpgaintf ${fpgaintf_handoff}; go $fpga2sdram_apply; mw $fpga2sdram ${fpga2sdram_handoff}; mw $axibridge ${axibridge_handoff}; mw $l3remap ${l3remap_handoff}
bootcmd=run fpgaboot; run bridge_enable_handoff; run mmcboot
...
sonycman
Сорри, вы же про включение моста...

Приведите полностью текущий скрипт u-boot.scr

Судя по логу, прошивка ПЛИС загружается нормально, вот в этом месте:
Код
reading soc_system.rbf
7007204 bytes read in 331 ms (20.2 MiB/s)
## Starting application at 0x3FF79584 ...
## Application terminated, rc = 0x0


Если пины bootsel выставлены правильно на загрузку с SD карты, то флеш epcs не должна считываться никоим образом.
chirik
"если пины Bootsel выставлены на загрузку с SD карты, то считывание флешки epcs не должно происходить" И в правду я забыл о MSEL!
Теперь прошивка FPGA грузиться, вижу свои полоски на VGA мониторе, но теперь Linux не начинает грузиться..

Hit any key to stop autoboot: 0
reading u-boot.scr
200 bytes read in 3 ms (64.5 KiB/s)
## Executing script at 02000000
reading soc_system.rbf
7007204 bytes read in 331 ms (20.2 MiB/s)
## Starting application at 0x3FF79584 ...
## Application terminated, rc = 0x0
reading zImage
4051904 bytes read in 192 ms (20.1 MiB/s)
reading socfpga.dtb
18955 bytes read in 6 ms (3 MiB/s)
Bad Linux ARM zImage magic!
reading zImage
4051904 bytes read in 192 ms (20.1 MiB/s)
reading socfpga.dtb
18955 bytes read in 6 ms (3 MiB/s)
Bad Linux ARM zImage magic!
SOCFPGA_CYCLONE5 #
sonycman
Проверьте, почему образ zimage побился.

Вы используете уже готовые файлы прелоадера, юбута и линукса или собирали сами?
chirik
1) preloader-mkpimage.bin (Preloader image) свой генерил на основе своего проекта https://rocketboards.org/foswiki/Documentation/GSRDPreloader
2) socfpga.dtb (Device Tree Blob) свой генерил на основе своего проекта https://rocketboards.org/foswiki/Documentat...ceTreeGenerator
3) u-boot.scr (U-boot script for configuring the FPGA) стандартный по этой инструкции https://rocketboards.org/foswiki/Documentat...ProgrammingFPGA

4) u-boot-cyclone5.img (U-boot image) готовый брал от сюда linux-socfpga-gsrd-16.1-cv-bin.tar.gz https://releases.rocketboards.org/release/2016.10/gsrd/bin/
5) zImage (Compressed Linux kernel image) готовый из linux-socfpga-gsrd-16.1-cv-bin.tar.gz
6) altera-gsrd-image-cyclone5.tar.gz (Root filesystem as compressed tarball) готовый из linux-socfpga-gsrd-16.1-cv-bin.tar.gz

Собирал все это дело, как в описании скриптом make_sdimage.py https://rocketboards.org/foswiki/Documentation/GSRDSdCard
sonycman
Тогда надо разбираться, почему отсутствует нужная сигнатура в памяти по адресу загрузки образа ядра.
chirik
Цитата(sonycman @ Oct 19 2017, 19:14) *
Тогда надо разбираться, почему отсутствует нужная сигнатура в памяти по адресу загрузки образа ядра.

Интересно, а почему когда MSEL стояли на загрузку из EPCS, то ядро линукса начинало грузиться?
sonycman
Цитата(chirik @ Oct 20 2017, 13:22) *
Интересно, а почему когда MSEL стояли на загрузку из EPCS, то ядро линукса начинало грузиться?

Это когда совсем без SD карты?
Значит, в EPCS лежат правильные образы ядра и т.п., а на SD карте у вас что-то не так.
chirik
Не, с той же SD картой.
sonycman
Цитата(chirik @ Oct 20 2017, 13:51) *
Не, с той же SD картой.

Тогда смотрите, что изменилось.
Под юбутом проверьте область памяти, откуда запускается ядро линукса - точно там лежит файл zImage, или нет?
Используйте образ, который исправно грузится прелоадером на epcs.

Прогоните тест памяти, могут быть сбои если неправильно настроены параметры в проекте.
chirik
В epcs только прошивка для плис. Спасибо за наводящие вопросы! но я начинаю думать на socfpga.dtb...
sonycman
Цитата(chirik @ Oct 20 2017, 15:23) *
но я начинаю думать на socfpga.dtb...

Просто возьмите файл .dtb с исправно загружающегося образа SD, для проверки.
sonycman
Что касается включения мостов ПЛИС, у меня плата DE10-Nano, использую такой u-boot.script:
Код
echo Programming FPGA...
fatload mmc 0:1 $fpgadata soc_system.rbf;
fpga load 0 $fpgadata $filesize;
run bridge_enable_handoff;

echo Setting Env Variables...
setenv fdtimage soc_system.dtb;
setenv mmcroot /dev/mmcblk0p2;
setenv mmcload 'mmc rescan;${mmcloadcmd} mmc 0:${mmcloadpart} ${loadaddr} ${bootimage};${mmcloadcmd} mmc 0:${mmcloadpart} ${fdtaddr} ${fdtimage};';
setenv mmcboot 'setenv bootargs console=ttyS0,115200 root=${mmcroot} rw rootfstype=ext4 rootwait; bootz ${loadaddr} - ${fdtaddr}';

echo Loading Kernel...
#run mmcload;
#run mmcboot;


U-boot собирал по инструкции Embedded Linux Beginners Guide, раздел Configure and Compile U-Boot.
По этому гайду собрал полностью подсистему линукс и работает она без проблем, по крайней мере для моих нужд на данный момент.

Мосты активны, sys/class/fpga_bridge/br->state->enabled (ядро 4.1).
chirik
У меня проблема в Device Tree мне нужно сделать свои под DE1-SoC
soc_system_board_info.xml и hps_common_board_info.xml я сразу на них не обратил внимание думал, что их генерит qsys.
Сейчас попробую разобраться, что там и к чему...

chirik
Вручную подправил dts-файл, но линукс так и не стал грузиться - Bad Linux ARM zImage magic!
С коллегой выяснили почему бьется zImage, все просто - после записи zImage в DDR память, эту же область памяти использует Frame Buffer и перезаписывает ее картинкой)

Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.