Red de conocimiento informático - Material del sitio web - Cómo programar la imagen PL en Zynq-7000

Cómo programar la imagen PL en Zynq-7000

Existen aproximadamente tres métodos para programar PL en Zynq-7000:

1. Utilice FSBL para integrar bitstream en boot.bin.

2. comando

3. Utilice el controlador xdevcfg en Linux.

Pasos:

1. Elimine el encabezado del archivo bitstream.

No hay nada que decir sobre el uso de FSBL para grabar imágenes PL. Utilice la herramienta Crear imagen de arranque de. Xilinx SDK se puede hacer, no es necesario entrar en detalles. Para utilizar los dos últimos métodos, debe eliminar el encabezado del archivo de flujo de bits utilizando la herramienta bootgen.

Un archivo bif típico tiene este aspecto:

the_ROM_image:

{

[bootloader].elf

p>

.bit

.elf

}

Los archivos Bif se pueden escribir con un editor de texto o Generado utilizando la herramienta Crear imagen de arranque de Xilinx SDK. Luego use el siguiente comando en la línea de comando para eliminar el encabezado del archivo de flujo de bits.

bootgen -image .bif -split bin -o i BOOT.BIN

El parámetro "-split" puede generar los siguientes archivos:

< pl_bitstream_name> .bit.bin

2. Grabar imagen PL en U-BOOT

Se pueden utilizar ambos comandos “fpga load” y “fpga loadb”. La diferencia es que el primer comando acepta archivos de flujo de bits con el encabezado del archivo eliminado, y el último comando acepta archivos de flujo de bits con encabezados de archivo.

En OSL 2014.2, la compilación predeterminada puede admitir completamente la función de escribir imágenes PL. Pero en Petalinux 2013.10, aunque el comando "fpga" se puede ver en U-BOOT, aún debe estar en el archivo

/subsystems/linux/configs/u-boot/platform- top.h Solo después de agregar el siguiente contenido y volver a compilar se pueden admitir funciones específicas.

/* Habilitar la descarga del PL */

#define CONFIG_FPGA

#define CONFIG_FPGA_XILINX

#define CONFIG_FPGA_ZYNQPL

#define CONFIG_CMD_FPGA

#define CONFIG_FPGA_LOADFS

En OSL 2014.2 U-BOOT, la función específica se implementa en zynq_load() de zynqpl.c.

3. Grabar imagen PL en Linux

OSL Linux 2014.2.01 ya contiene el controlador xdevcfg (existía antes, pero este artículo se verificó en esta versión). comando para completar la escritura de la imagen PL.

cat /.bit.bin > /dev/xdevcfg

El código fuente del controlador de Linux está en xilinx_devcfg.c.

Debido a que el número de controlador se asigna dinámicamente mediante alloc_chrdev_region(), no es necesario crear manualmente el nodo del dispositivo mediante el comando mknod.

En el controlador de Linux, se escriben 4096 bytes en DevCfg cada vez hasta que se escriben todos.

4. Grabar imagen PL en el programa de usuario

Actualmente no existe un código fuente listo para completar esta función, pero puede usar mmap() para asignar el registro DevCfg. la memoria virtual de la dirección del programa de usuario y luego consulte algunos códigos de software ya preparados para completar esta función:

* pcap.c en FSBL

* zynqpl.c en. U-BOOT

* xilinx_devcfg.c en Linux

* Ejemplo en Xilinx SDK. Los ejemplos se encuentran en la siguiente ubicación y pueden variar según la versión del SDK.

C:\Xilinx\SDK\2014.1\data\embeddedsw\XilinxProcessorIPLib\drivers\devcfg_v3_0\examples\index.html

Resumen:

DevCfg periférico It tiene su propio DMA internamente. Solo necesita configurar la dirección base y la longitud de la imagen PL en el registro DevCfg para completar la carga de la imagen PL Zynq-7000. Xilinx ha proporcionado una solución flexible. Si los desarrolladores quieren integrar esta función en sus propias aplicaciones, hay mucho código de referencia y no es una tarea difícil.