LINUX.ORG.RU

Как запустить Hello World на ZYNQ 706C?

 ,


0

2

Доброго времени суток!

Дали поиграться с вышеописанной платкой, ну и для начала надо бы запустить че-нибудь простое, навроде хеллоуворлда. Вроде стандартный Example Design в Vivado создается и даже плата прошивается (Program FPGA Complete), но отклика в XMD-терминале я не вижу. Что я делаю не так и как делать правильно, чтобы увидеть желанную строчку отклика от платы? Или к чему там в SDK-терминале подключаться? При прописывании строки вида «COM1», «USB0», «12345» говорит, что по этим портам ничего не найдено.

Пользовался мануалами частично отсюда (дизайн создавал через vivado, а не edk, а все остальное по мануалу), отсюда и стандартной справкой Welcome в SDK.

★★

Последнее исправление: aido (всего исправлений: 5)
Ответ на: комментарий от pylin

Ну счас вроде с этим более менее разобрался - BISTы запускаются. Решением было - поставить minicom и перезагрузиться. Сейчас пробую ставить Linux туда и тут начались еще большие странности: если заливаю RAMDisk в QSPI - говорит, что у него CRC кривое и грузить не хочет:

Copying Linux from QSPI flash to RAM...
SF: Detected S25FL128S_64K with page size 512 Bytes, erase size 128 KiB, total 32 MiB
SF: 5242880 bytes @ 0x100000 Read: OK
SF: 131072 bytes @ 0x600000 Read: OK
Copying ramdisk...
SF: 6160384 bytes @ 0x620000 Read: OK
## Booting kernel from Legacy Image at 02080000 ...
   Image Name:   Linux-3.19.0-xilinx-g1473144cc06
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    3478584 Bytes = 3.3 MiB
   Load Address: 00008000
   Entry Point:  00008000
   Verifying Checksum ... OK
## Loading init Ramdisk from Legacy Image at 04000000 ...
   Image Name:   
   Image Type:   ARM Linux RAMDisk Image (gzip compressed)
   Data Size:    6186894 Bytes = 5.9 MiB
   Load Address: 00000000
   Entry Point:  00000000
   Verifying Checksum ... Bad Data CRC
Ramdisk image is corrupt or invalid
, если я загружаюсь в QSPI-режиме, при этом подключившись с компа к плате и загрузив прямо в память тот же образ рам-диска по нужному адресу, то линукс начинает загружаться и виснет:
SF: 5242880 bytes @ 0x100000 Read: OK
SF: 131072 bytes @ 0x600000 Read: OK
Copying ramdisk...
SF: 6160384 bytes @ 0x620000 Read: OK
## Booting kernel from Legacy Image at 02080000 ...
   Image Name:   Linux-3.19.0-xilinx-g1473144cc06
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    3478584 Bytes = 3.3 MiB
   Load Address: 00008000
   Entry Point:  00008000
   Verifying Checksum ... OK
## Loading init Ramdisk from Legacy Image at 04000000 ...
   Image Name:   
   Image Type:   ARM Linux RAMDisk Image (gzip compressed)
   Data Size:    6186894 Bytes = 5.9 MiB
   Load Address: 00000000
   Entry Point:  00000000
   Verifying Checksum ... OK
## Flattened Device Tree blob at 02000000
   Booting using the fdt blob at 0x2000000
   Loading Kernel Image ... OK
   Loading Ramdisk to 1fa19000, end 1ffff78e ... OK
   Loading Device Tree to 1fa13000, end 1fa1878a ... OK

Starting kernel ...

Как поправить обе проблемы - чтобы ядро нормально грузилось с QSPI и писало мне в minicom, что оно делает? И пусть там пока нет инита и ожидается кернел-паник, хочется хотя бы его увидеть.

aido ★★
() автор топика
Ответ на: комментарий от aido

Загружаю в память при помощи вот такого скрипта:

$ cat loader.tcl 
connect arm hw -debugdevice cpunr 1
dow fsbl.elf
con
exec sleep 3
stop
dow -data devicetree.dtb 0x2a00000
dow -data uramdisk.image.gz 0x4000000
dow -data uImage 0x3000000
dow -data boot.bin 0x3400000
dow -data program_qspi.img 0x5000000
dow u-boot.elf
con

Записываю в QSPI вот так:

sf probe 0 0 0
sf erase 0 +0x1200000
echo ===== Writing boot.bin =====
sf write 0x3400000 0 0x7F43C
echo ===== Writing Linux Kernel uImage =====
sf write 0x3000000 0x100000 0x351478
echo ===== Writing devicetree.dtb =====
sf write 0x2a00000 0x600000 0x278b
echo ===== Writing RAMDisk uramdisk.image.gz =====
sf write 0x4000000 0x620000 0x5e67ce
echo ===== Setting environments =====
setenv devicetree_image devicetree.dtb
setenv devicetree_load_address 0x2000000
setenv devicetree_size 0x278b
setenv kernel_image uImage
setenv kernel_load_address 0x2080000
setenv kernel_size 0x351478
setenv loadbit_addr 0x100000
setenv ramdisk_image uramdisk.image.gz
setenv ramdisk_load_address 0x4000000
setenv ramdisk_size 0x5E67CE
saveenv
echo ===== Done!!! =====

Выдает теперь следующее:

Copying Linux from QSPI flash to RAM...
SF: Detected S25FL128S_64K with page size 512 Bytes, erase size 128 KiB, total 32 MiB
SF: 3478648 bytes @ 0x100000 Read: OK
SF: 10123 bytes @ 0x600000 Read: OK
Copying ramdisk...
SF: 6186958 bytes @ 0x620000 Read: OK
## Booting kernel from Legacy Image at 02080000 ...
   Image Name:   Linux-3.19.0-xilinx-g1473144cc06
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    3478584 Bytes = 3.3 MiB
   Load Address: 00008000
   Entry Point:  00008000
   Verifying Checksum ... OK
Wrong Ramdisk Image Format
Ramdisk image is corrupt or invalid
aido ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.