intel - logotipoFPGA SDK para OpenCL
Guía de usuario

UG-OCL009
2017.05.08
Última actualización para Intel® Quartus® Prime Design Suite: 17.0

RENPHO RF FM059HS WiFi Smart Foot Massager - icona 5Subscríbete
Teléfono intelixente SAMSUNG SM A136UZKZAIO Galaxy A13 5G - icona 12Enviar comentarios

Intel® FPGA SDK para OpenCL™ Intel® Cyclone®V SoC Development Kit Reference Platform Porting Guide

A guía de portabilidade da plataforma de referencia do kit de desenvolvemento de V SoC describe o deseño de hardware e software da plataforma de referencia do kit de desenvolvemento de SoC de Intel Cyclone V (c5soc) para usar co kit de desenvolvemento de software (SDK) de Intel para OpenCL O SDK de Intel ® FPGA para OpenCL ™ Intel Cyclone ® . Antes de comezar, Intel recomenda encarecidamente que se familiarice co contido dos seguintes documentos:

  1. Intel FPGA SDK para OpenCLIntel Cyclone V SoC Guía de iniciación
  2. Guía de usuario de Intel FPGA SDK para OpenCL Custom Platform Toolkit
  3. Cyclone V Device Handbook, Volume 3: Hard Processor System Manual de referencia técnica Ademais, consulte o Cyclone V SoC Development Kit and SoC Embedded Design Suite de Altera websitio para obter máis información. 1 2

Atención: Intel asume que ten unha comprensión profunda da Guía de usuario do kit de ferramentas de plataforma personalizada Intel FPGA SDK para OpenCL. A Guía de portabilidade da plataforma de referencia do kit de desenvolvemento de SoC Cyclone V non describe o uso do kit de ferramentas de plataforma personalizada do SDK para implementar unha plataforma personalizada para o kit de desenvolvemento de SoC Cyclone V. Só describe as diferenzas entre o soporte do SDK no kit de desenvolvemento de SoC Cyclone V e un SDK FPGA de Intel xenérico para a plataforma personalizada OpenCL.

Ligazóns relacionadas

  • Intel FPGA SDK para OpenCL Cyclone V SoC Guía de iniciación
  • Guía de usuario de Intel FPGA SDK para OpenCL Custom Platform Toolkit
  • Cyclone V Device Handbook, Volume 3: Hard Processor System Technical Reference Manual
  • Cyclone V SoC Development Kit e páxina SoC Embedded Design Suite en Altera websitio
  1. OpenCL e o logotipo de OpenCL son marcas comerciais que Apple Inc. usa con permiso de Khronos Group™.
  2. O SDK Intel FPGA para OpenCL baséase nunha especificación de Khronos publicada e pasou o proceso de proba de conformidade de Khronos. O estado de conformidade actual pódese consultar en www.khronos.org/conformance.

Intel Corporation. Todos os dereitos reservados. Intel, o logotipo de Intel, Altera, Arria, Cyclone, Enpirion, MAX, Nios, Quartus e as palabras e logotipos de Stratix son marcas comerciais de Intel Corporation ou das súas filiais nos EUA e/ou noutros países. Intel garante o rendemento dos seus produtos FPGA e semicondutores segundo as especificacións actuais de acordo coa garantía estándar de Intel, pero resérvase o dereito de facer cambios en calquera produto e servizo en calquera momento e sen previo aviso. Intel non asume ningunha responsabilidade ou responsabilidade derivada da aplicación ou uso de calquera información, produto ou servizo descrito aquí, salvo que Intel o acorde expresamente por escrito. Recoméndase aos clientes de Intel que obteñan a versión máis recente das especificacións do dispositivo antes de confiar en calquera información publicada e antes de facer pedidos de produtos ou servizos.
*Outros nomes e marcas poden ser reclamados como propiedade doutros.

1.1.1 Cyclone V SoC Development Kit Reference Platform Board Variantes
O Intel FPGA SDK para OpenCL Cyclone V SoC Development Kit Reference Platform inclúe dúas variantes de placa.

  • placa c5soc
    Esta placa predeterminada proporciona acceso a dous bancos de memoria DDR. A DDR HPS é accesible tanto pola FPGA como pola CPU. A FPGA DDR só é accesible pola FPGA.
  • c5soc_sharedonly foro
    Esta variante da placa contén só conectividade HPS DDR. Non se pode acceder á FPGA DDR. Esta variante da placa é máis eficiente porque se necesita menos hardware para soportar un banco de memoria DDR. A placa c5soc_sharedonly tamén é unha boa plataforma de prototipado para unha placa de produción final cun só banco de memoria DDR.
    Para apuntar a esta variante do taboleiro ao compilar o seu núcleo OpenCL, inclúa a opción -board c5soc_sharedonly no seu comando aoc.
    Para máis información sobre o –board opción do comando aoc, consulte a Guía de programación de Intel FPGA SDK para OpenCL.

Ligazóns relacionadas
Compilación dun núcleo para unha placa FPGA específica (–board )
1.1.2 Contido da plataforma de referencia do kit de desenvolvemento de SoC Cyclone V
A plataforma de referencia do kit de desenvolvemento de SoC Cyclone V consta do seguinte files e directorios:

File ou Directorio Descrición
board_env.xml Linguaxe de marcado extensible (XML) file que describe c5soc ao SDK Intel FPGA para OpenCL.
linux_sd_card_image.tgz Imaxe da tarxeta flash SD comprimida file que contén todo o que necesita un usuario de SDK para usar o Kit de desenvolvemento de SoC Cyclone V co SDK.
brazo 32 Directorio que contén o seguinte:

1.1.3 Características relevantes do kit de desenvolvemento de SoC Cyclone V

A seguinte lista destaca os compoñentes e funcións do kit de desenvolvemento de SoC Cyclone V que son relevantes para o SDK Intel FPGA para OpenCL:

  • CPU ARM Cortex-A9 de dobre núcleo con Linux de 32 bits.
  • Bus Advanced eXtensible Interface (AXI) entre HPS e FPGA core fabric.
  • Dous controladores de memoria DDR reforzados, cada un conectado a unha SDRAM DDR1 de 3 gigabyte (GB).
    — Un controlador DDR só é accesible para o núcleo FPGA (é dicir, FPGA DDR).
    — O outro controlador DDR é accesible tanto para HPS como para FPGA (é dicir, HPS DDR). Este controlador compartido permite compartir memoria libre entre a CPU e o núcleo FPGA.
  • A CPU pode reconfigurar o tecido do núcleo FPGA.

1.1.3.1 Plataforma de referencia do kit de desenvolvemento de SoC Cyclone V Obxectivos e decisións de deseño Intel basea a implementación da plataforma de referencia do kit de desenvolvemento de SoC Cyclone V en varios obxectivos e decisións de deseño. Intel recomenda que teña en conta estes obxectivos e decisións cando porte esta plataforma de referencia á súa placa SoC FPGA.
Abaixo amósanse os obxectivos do deseño de c5soc:

  1. Proporcione o maior ancho de banda posible entre os núcleos da FPGA e os sistemas de memoria DDR.
  2. Asegúrese de que os cálculos no FPGA (é dicir, os núcleos OpenCL) non interfiran con outras tarefas da CPU que poidan incluír o mantemento de periféricos.
  3. Deixe tantos recursos FPGA como sexa posible para os cálculos do núcleo en lugar dos compoñentes da interface.

Abaixo amósanse as decisións de deseño de alto nivel que son as consecuencias directas dos obxectivos de deseño de Intel:

  1. A plataforma de referencia só usa controladores de memoria DDR duro coa configuración máis ampla posible (256 bits).
  2. A FPGA comunícase co controlador de memoria HPS DDR directamente, sen implicar o bus AXI e o interruptor L3 dentro do HPS. A comunicación directa proporciona o mellor ancho de banda posible a DDR e evita que os cálculos FPGA interfiran nas comunicacións entre a CPU e a súa periferia.
  3. O acceso directo á memoria de dispersión (SG-DMA) non forma parte da lóxica da interface FPGA. En lugar de transferir grandes cantidades de datos entre sistemas de memoria DDR, almacene os datos no DDR HPS compartido. O acceso directo á memoria da CPU pola FPGA é máis eficiente que o DMA. Aforra recursos de hardware (é dicir, área FPGA) e simplifica o controlador do núcleo de Linux.
    Aviso: A transferencia de memoria entre o sistema HPS DDR compartido e o sistema DDR accesible só para a FPGA é moi lenta. Se elixes
    transferir memoria deste xeito, utilízaa só para cantidades moi pequenas de datos.
  4. O anfitrión e o dispositivo realizan transferencias de datos non DMA entre si a través da ponte HPS a FPGA (H2F), utilizando só un porto de 32 bits. O motivo é que, sen DMA, o núcleo de Linux só pode emitir unha única solicitude de lectura ou escritura de 32 bits, polo que é innecesario ter unha conexión máis ampla.
  5. O host envía sinais de control ao dispositivo a través dunha ponte H2F (LH2F) lixeira.
    Dado que os sinais de control do host ao dispositivo son sinais de baixo ancho de banda, unha ponte LH2F é ideal para a tarefa.

1.2 Portar a plataforma de referencia á súa placa SoC FPGA
Para levar a plataforma de referencia do kit de desenvolvemento de SoC Cyclone V á súa placa FPGA de SoC, realice as seguintes tarefas:

  1. Seleccione a versión dunha memoria DDR ou dúas memorias DDR da plataforma de referencia c5soc como punto de partida do seu deseño.
  2. Actualiza as localizacións dos pins en ALTERAOCLSDKROOT/board/c5soc/ /top.qsf file, onde ALTERAOCLSDKROOT é a ruta á localización do SDK Intel FPGA para a instalación de OpenCL e é o nome do directorio da variante do taboleiro. O directorio c5soc_sharedonly é para a variante da placa cun sistema de memoria DDR. O directorio c5soc é para a variante da placa con dous sistemas de memoria DDR.
  3.  Actualice a configuración de DDR para os bloques SDRAM HPS e/ou FPGA en ALTERAOCLSDKROOT/board/c5soc/ /system.qsys file.
    4. Todos os Intel FPGA SDK para os deseños de placas preferidos OpenCL deben conseguir un peche de tempo garantido. Polo tanto, a colocación do deseño debe estar limpa. Para levar a partición da placa c5soc (acl_iface_partition.qxp) á placa FPGA SoC, realice as seguintes tarefas:
    Para obter instrucións detalladas sobre a modificación e conservación da partición da placa, consulte Quartus
    Prime Incremental Compilation for Hierarchical and Team-Based Design capítulo do Manual Quartus Prime Standard Edition.
    a. Elimina o acl_iface_partition.qxp do directorio ALTERAOCLSDKROOT/board/c5soc/c5soc.
    b. Activa a rexión acl_iface_region LogicLock™ cambiando o comando Tcl set_global_assignment -name LL_ENABLED OFF -section_id acl_iface_region para set_global_assignment -name LL_ENABLED ON -section_id acl_iface_region
    c. Compile un núcleo OpenCL para a túa placa.
    d. Se é necesario, axuste o tamaño e a localización da rexión LogicLock.
    e. Cando estea satisfeito de que a colocación do seu deseño está limpa, exporta esa partición como a partición exportada acl_iface_partition.qxp Quartus Prime File.
    Como se describe na sección Establecemento de fluxo de tempo garantido da Guía de usuario do kit de ferramentas de plataforma personalizada AIntel FPGA SDK para OpenCL, importando este .qxp  file no deseño de nivel superior, cumpre o requisito de proporcionar un deseño de placa cun fluxo de peche de tempo garantido.
    Para coñecer os factores que poden afectar a calidade dos resultados (QoR) da súa partición exportada, consulte a sección Consideracións xerais sobre a calidade dos resultados para a partición da placa exportada na Guía de usuario de Intel FPGA SDK for OpenCL Custom Platform Toolkit.
    f. Desactive a rexión LogicLock acl_iface_region revertendo o comando do paso 2 a set_global_assignment -name LL_ENABLED OFF section_id acl_iface_region.
  4. Se a túa placa FPGA SoC usa diferentes pinos e periferias do bloque HPS, rexenera o precargador e a fonte da árbore do dispositivo (DTS) file. Se cambia a configuración do controlador de memoria HPS DDR, rexenere o precargador.
  5. Crea a imaxe da tarxeta flash SD.
  6. Crea a túa plataforma personalizada, que inclúe a imaxe da tarxeta flash SD.
  7. Considere crear unha versión do entorno de execución da súa plataforma personalizada para usar co entorno de execución de Intel FPGA (RTE) para OpenCL. A versión RTE da túa plataforma personalizada non inclúe directorios de hardware nin a imaxe da tarxeta flash SD. Esta plataforma personalizada cárgase no sistema SoC FPGA para permitir a execución das aplicacións host. Pola contra, a versión SDK da plataforma personalizada é necesaria para que o SDK compile núcleos OpenCL.
    Consello: pode utilizar a versión SDK da súa plataforma personalizada para o RTE. Salvar
    espazo, elimine a imaxe da tarxeta flash SD da versión RTE da súa plataforma personalizada.
  8. Proba a túa plataforma personalizada.
    Consulte a sección Probando o deseño de hardware da Guía de usuario de Intel FPGA SDK for OpenCL Custom Platform Toolkit para obter máis información.

Ligazóns relacionadas

  • Probando o deseño de hardware
  • Compilación incremental de Quartus Prime para deseño xerárquico e en equipo
  • Establecemento de fluxo de tempo garantido
  • Consideracións xerais sobre a calidade dos resultados para a partición da placa exportada

1.2.1 Actualización dunha plataforma de referencia portada
Na versión actual da plataforma de referencia do kit de desenvolvemento de SoC Cyclone V, o bloque HPS está dentro da partición que define toda a lóxica non do núcleo. Non obstante, non pode exportar o HPS como parte do .qxp file. Para actualizar unha plataforma personalizada existente que modificou a partir dunha versión anterior de c5soc, implemente o fluxo de conservación QXP, actualice a imaxe da tarxeta flash SD para obter o entorno de execución máis recente e actualice board_spec.xml file para permitir a automigración.
O SDK de Altera® para OpenCL versión 14.1 e posterior proba o board_spec.xml file para obter información do taboleiro e implementa actualizacións automáticas. Porque modificas o
deseño implementando o fluxo de conservación QXP, debes actualizar o board_spec.xml file ao seu formato na versión actual. Actualizando o file permite que o SDK distinga entre plataformas personalizadas sen preservar e as actuais plataformas personalizadas baseadas en QXP. Consulte a Migración automática de plataformas personalizadas para a compatibilidade cara adiante na Guía de usuario de Intel FPGA SDK para OpenCL Custom Platform Toolkit para obter máis información.

  1. Para implementar o fluxo de preservación QXP nun deseño de hardware FPGA SoC Cyclone V que se porta desde unha versión anterior de c5soc, siga os seguintes pasos para crear unha subpartición para excluír o HPS do .qxp file:
    a. Antes de crear unha partición arredor da lóxica non do núcleo, cree unha partición arredor do HPS na configuración de .qsf Quartus Prime File.
    Por exampLe:
    # Particione manualmente a instancia que modela o set_instance_assignment de E/S dedicado a HPS -name PARTITION_HIERARCHY borde_18261 -a “system:the_system|system_acl_iface:acl_iface|system_acl_iface_hps_0:hps_0|system_acl_iface_hps|__ system_acl_iface_hps_0_hps_io_border:border” -section_id “system_acl_iface_hps_0_hps_io_border:border”
    # Establece a partición para que sexa un tipo HPS_PARTITION para ser procesada correctamente polo resto de Quartus
    set_global_assignment -name PARTITION_TYPE HPS_PARTITION -section_id “system_acl_iface_hps_0_hps_io_border:border”
    quartus_cdb arriba -c arriba
    –exportación_de_compilación_incremental=acl_iface_partition.qxp
    –nome_partición_de_exportación_de_compilación_incremental=partición_acl_iface
    –compilación_incremental_export_post_synth=activado
    –compilación_incremental_export_post_fit=on
    –enrutamento_de_exportación_de_compilación_incremental=activado
    –compilación_incremental_export_flatten=desactivado
    Despois de excluír o HPS da partición, pode importar o .qxp file e compila o teu deseño.
  2. Actualice a imaxe da tarxeta flash SD coa versión actual do Intel FPGA RTE para OpenCL realizando as seguintes tarefas:
    a. Monte o file táboa de asignación (fat32) e ampliada file particións do sistema (ext3) na imaxe existente como dispositivos de loop-back. Para obter instrucións detalladas, consulte o paso 2 en Creación dunha imaxe de tarxeta flash SD.
    b. No directorio /home/root/opencl_arm32_rte, elimine o ficheiro files da versión anterior do RTE.
    c. Descargue e desempaquete a versión actual do RTE no directorio /home/root/opencl_arm32_rte.
    d. No /controlador/versión.h file da súa plataforma personalizada, actualice a asignación ACL_DRIVER_VERSION a . (por example, 16.1.x, onde 16.1 é a versión do SDK e x é a versión do controlador que estableceu).
    e. Reconstruír o controlador.
    f. Elimina os cartafoles de hardware da túa plataforma personalizada. Copie a plataforma personalizada, xunto co controlador actualizado, no directorio /home/root/opencl_arm_rte/board.
    g. Copia o Altera.icd file desde o directorio /home/root/opencl_arm32_rte e engádeo ao directorio /etc/OpenCL/vendors.
    h. Desmonta e proba a nova imaxe. Para obter instrucións detalladas, consulte os pasos 8 a 11 en Creación dunha imaxe de tarxeta flash SD.

Ligazóns relacionadas

  • Creación dunha imaxe de tarxeta flash SD na páxina 14
    Tamén tes a opción de crear unha nova imaxe da tarxeta flash SD.
  • Automigración de plataforma personalizada para compatibilidade cara adiante

1.3 Soporte de software para a memoria compartida
A memoria física compartida entre FPGA e CPU é a memoria preferida para os núcleos OpenCL que se executan en FPGA SoC. Dado que a FPGA accede á memoria física compartida, en oposición á memoria virtual compartida, non ten acceso ás táboas de páxinas da CPU que asignan os enderezos virtuais dos usuarios aos enderezos físicos das páxinas.
Con respecto ao hardware, os núcleos OpenCL acceden á memoria física compartida mediante a conexión directa ao controlador de memoria ríxida HPS DDR. Con respecto ao software, a compatibilidade coa memoria física compartida implica as seguintes consideracións:

  1. Implementacións de software típicas para asignar memoria na CPU (por exemploample, a función malloc()) non pode asignar unha rexión de memoria que poida usar o FPGA.
    A memoria que asigna a función malloc() é contigua no espazo de enderezos da memoria virtual, pero é improbable que as páxinas físicas subxacentes sexan contiguas fisicamente. Como tal, o host debe poder asignar rexións de memoria físicamente contiguas. Non obstante, esta capacidade non existe nas aplicacións de espazo de usuario en Linux. Polo tanto, o controlador do núcleo de Linux debe realizar a asignación.
  2. O controlador do núcleo OpenCL SoC FPGA Linux inclúe a función mmap() para asignar memoria física compartida e asignala ao espazo do usuario. A función mmap() usa a chamada estándar do núcleo de Linux dma_alloc_coherent() para solicitar rexións de memoria físicamente contiguas para compartir cun dispositivo.
  3. No núcleo de Linux predeterminado, dma_alloc_coherent() non asigna memoria físicamente contigua de máis de 0.5 megabytes (MB) de tamaño. Para permitir que dma_alloc_coherent() asigne grandes cantidades de memoria fisicamente contigua, active a función de asignador de memoria contigua (CMA) do núcleo de Linux e despois recompile o núcleo de Linux.
    Para a plataforma de referencia do kit de desenvolvemento de SoC Cyclone V, CMA xestiona 512 MB de 1 GB de memoria física. Pode aumentar ou diminuír este valor, dependendo da cantidade de memoria compartida que precise a aplicación. A chamada dma_alloc_coherent() pode non ser capaz de asignar os 512 MB completos de memoria fisicamente contigua; non obstante, normalmente pode obter aproximadamente 450 MB de memoria.
  4. A CPU pode almacenar na memoria caché a chamada dma_alloc_coherent() asignada. En particular, as operacións de escritura desde a aplicación host non son visibles para os núcleos OpenCL. A función mmap() do controlador do núcleo OpenCL SoC FPGA Linux tamén contén chamadas á función pgprot_noncached() ou remap_pf_range() para desactivar a caché desta rexión de memoria de forma explícita.
  5. Despois de que a función dma_alloc_coherent() asigna a memoria fisicamente contigua, a función mmap() devolve o enderezo virtual ao principio do intervalo, que é o intervalo de enderezos da memoria que asigna. A aplicación host require este enderezo virtual para acceder á memoria. Por outra banda, os núcleos OpenCL requiren enderezos físicos. O controlador do núcleo de Linux fai un seguimento da asignación de enderezos virtuales a físicos. Pode mapear os enderezos físicos que mmap() devolve aos enderezos físicos reais engadindo unha consulta ao controlador.
    A chamada á interface de programación de aplicacións (API) MMD aocl_mmd_shared_mem_alloc() incorpora as seguintes consultas:
    a. A función mmap() que asigna memoria e devolve o enderezo virtual.
    b. A consulta adicional que asigna o enderezo virtual devolto ao enderezo físico.
    A chamada á API MMD aocl_mmd_shared_mem_alloc() devolve dous enderezos
    —o enderezo devolto real é o enderezo virtual e o enderezo físico vai a device_ptr_out.
    Nota: O controlador só pode mapear os enderezos virtuais que a función mmap() devolve aos enderezos físicos. Se solicita o enderezo físico de calquera outro punteiro virtual, o controlador devolve un valor NULL.

Aviso: O Intel FPGA SDK para as bibliotecas de tempo de execución OpenCL asume que a memoria compartida é a primeira memoria listada no board_spec.xml file. Noutras palabras, o enderezo físico que obtén o controlador do núcleo de Linux convértese no enderezo Avalon® que o núcleo OpenCL pasa á SDRAM de HPS.
Con respecto á biblioteca en tempo de execución, use a chamada clCreateBuffer() para asignar a memoria compartida como un búfer do dispositivo do seguinte xeito:

  • Para a variante de placa de dúas DDR con memoria compartida e non compartida, clCreateBuffer() asigna memoria compartida se especifica a marca CL_MEM_USE_HOST_PTR. Usar outras marcas fai que clCreateBuffer() asigne o búfer na memoria non compartida.
  • Para a variante dunha placa DDR con só memoria compartida, clCreateBuffer() asigna memoria compartida independentemente da marca que especifique.
    Actualmente, o soporte de Linux de 32 bits na CPU ARM rexe a extensión da compatibilidade de memoria compartida nas bibliotecas de execución do SDK. Noutras palabras, as bibliotecas en tempo de execución compiladas noutros ambientes (por exemploample, x86_64 Linux ou Windows de 64 bits) non admiten memoria compartida.
    C5soc non implementou memoria heteroxénea para distinguir entre memoria compartida e non compartida polos seguintes motivos:
    1. Historial: a compatibilidade de memoria heteroxénea non estaba dispoñible cando se creou orixinalmente a compatibilidade de memoria compartida.
    2. Interface uniforme: debido a que OpenCL é un estándar aberto, Intel mantén a coherencia entre provedores de plataformas informáticas heteroxéneas. Polo tanto, utilízase a mesma interface que as arquitecturas doutros vendedores de placas para asignar e utilizar a memoria compartida.

1.4 Reconfiguración FPGA
Para FPGA SoC, a CPU pode reconfigurar o tecido do núcleo FPGA sen interromper o funcionamento da CPU. O bloque de hardware FPGA Manager que se atopa entre o HPS e o núcleo FPGA realiza a reconfiguración. O núcleo de Linux inclúe un controlador que permite un fácil acceso ao Xestor FPGA.

  • Para view o estado do núcleo FPGA, invoque o comando cat /sys/class/fpga/fpga0/ status.
    A utilidade do programa Intel FPGA SDK para OpenCL dispoñible coa plataforma de referencia do kit de desenvolvemento de SoC Cyclone V usa esta interface para programar o FPGA. Ao reprogramar un núcleo FPGA cunha CPU en execución, a utilidade do programa realiza todas as seguintes tarefas:
    1. Antes de reprogramar, desactive todas as pontes de comunicación entre a FPGA e o HPS, tanto as pontes H2F como as LH2F.
    Volve habilitar estas pontes despois de completar a reprogramación.
    Atención: o sistema OpenCL non usa a ponte FPGA a HPS (F2H). Consulte a sección Interfaces HPS-FPGA do Manual do dispositivo Cyclone V, Volume 3: Manual de referencia técnica do sistema de procesador duro para obter máis información.
    2. Asegúrese de que a ligazón entre a FPGA e o controlador DDR HPS estea desactivada durante a reprogramación.
    3. Asegúrese de que as interrupcións da FPGA están desactivadas durante a reprogramación.
    Ademais, notifique ao controlador para que rexeite as interrupcións da FPGA durante a reprogramación.

Consulte o código fonte da utilidade do programa para obter detalles sobre a implementación real.

Aviso: Non cambie a configuración do controlador HPS DDR cando a CPU estea en execución.
Facelo pode provocar un erro fatal do sistema porque pode cambiar a configuración do controlador DDR cando hai transaccións de memoria pendentes da CPU. Isto significa que cando a CPU está en execución, non pode reprogramar o núcleo FPGA cunha imaxe que use HPS DDR nunha configuración diferente.
Lembra que o sistema OpenCL e o deseño de referencia Golden Hardware dispoñible co Intel SoC FPGA Embedded Design Suite (EDS), configura o HPS DDR nun único modo de 256 bits.
As partes do sistema da CPU, como o predictor de ramas ou o prefecher da táboa de páxinas, poden emitir comandos DDR aínda que pareza que non se está a executar nada na CPU.
Polo tanto, o tempo de arranque é o único momento seguro para configurar a configuración do controlador HPS DDR.
Isto tamén implica que U-boot debe ter un binario en bruto file (.rbf) imaxe para cargar na memoria. En caso contrario, pode estar habilitando o HPS DDR con portos non utilizados na FPGA e, a continuación, pode cambiar as configuracións dos portos despois. Por este motivo, o controlador do núcleo OpenCL Linux xa non inclúe a lóxica necesaria para configurar a configuración do controlador HPS DDR.
Os interruptores do paquete en liña dual (DIP) SW3 do kit de desenvolvemento de SoC Cylone V controlan a forma esperada da imaxe .rbf (é dicir, se o file está comprimido e/ou cifrado). C5soc, e o Golden Hardware Reference Design dispoñible co SoC EDS, inclúen imaxes .rbf comprimidas pero sen cifrar. A configuración do interruptor DIP SW3 descrita no Intel FPGA SDK para OpenCL Cyclone V SoC Getting Started Guide coinciden con esta configuración de imaxe .rbf.

Ligazóns relacionadas

  • Interfaces HPS-FPGA
  • Configuración dos interruptores SW3

1.4.1 Detalles da arquitectura do sistema FPGA
O soporte para a plataforma de referencia do kit de desenvolvemento de SoC Cyclone V baséase na plataforma de referencia Stratix® V (s5_ref), dispoñible co SDK Intel FPGA para OpenCL.
A organización xeral do sistema c5soc Qsys e do controlador do núcleo son moi similares aos de s5_ref.
Os seguintes compoñentes do núcleo FPGA son iguais tanto en c5soc como en s5_ref:

  • Bloque VERSION_ID
  • Mecanismo de descanso
  • Divisor de banco de memoria
  • Interface Snoop de caché
  • Reloxo do núcleo
  • Bloques de acceso ao rexistro de control (CRA).

1.5 Construír unha imaxe de tarxeta flash SD
Como o Cyclone V SoC FPGA é un sistema completo nun chip, vostede é o responsable de ofrecer a definición completa do sistema. Intel recomenda que o entregue en forma de imaxe da tarxeta flash SD. O usuario Intel FPGA SDK para OpenCL pode simplemente escribir a imaxe na tarxeta flash micro SD e a placa SoC FPGA está lista para usar.
Modificación dunha imaxe de tarxeta flash SD existente na páxina 13
Intel recomenda que simplemente modifique a imaxe dispoñible coa plataforma de referencia do kit de desenvolvemento de SoC Cyclone V. Tamén tes a opción de crear unha nova imaxe da tarxeta flash SD.
Creación dunha imaxe de tarxeta flash SD na páxina 14
Tamén tes a opción de crear unha nova imaxe da tarxeta flash SD.

1.5.1 Modificar unha imaxe da tarxeta flash SD existente
Intel recomenda que simplemente modifique a imaxe dispoñible co SoC Cyclone V
Plataforma de referencia do kit de desenvolvemento. Tamén tes a opción de crear unha nova imaxe da tarxeta flash SD.
A imaxe c5soc linux_sd_card_image.tgz file está dispoñible no directorio ALTERAOCLSDKROOT/board/c5soc, onde ALTERAOCLSDKROOT apunta á ruta do SDK Intel FPGA para o directorio de instalación de OpenCL.

Atención: Para modificar a imaxe da tarxeta flash SD, debes ter privilexios de root ou sudo.

  1. Para descomprimir $ALTERAOCLSDKROOT/board/c5soc/linux_sd_card_image.tgz file, execute o comando tar xvfzlinux_sd_card_image.tgz.
  2. Compile o hello_world OpenCL exampdeseña le usando a túa plataforma personalizada. Cambia o nome do .rbf file que o Intel FPGA SDK for OpenCL Offline Compiler xera como opencl.rbf e colócao na partición fat32 dentro da imaxe da tarxeta flash SD.
    Podes descargar o hello_world exampo deseño do OpenCL Design Examples páxina do Altera websitio.
  3. Coloque o .rbf file na partición fat32 da imaxe da tarxeta flash.
    Atención: A partición fat32 debe conter tanto o zImage file e o .rbf file. Sen un .rbf file, producirase un erro fatal ao inserir o controlador.
  4. Despois de crear a imaxe da tarxeta SD, escríbea nunha tarxeta micro SD invocando o seguinte comando: sudo dd if=/path/to/sdcard/image.bin of=/dev/sdcard
  5. Para probar a imaxe da tarxeta flash SD, realiza as seguintes tarefas:
    a. Insira a tarxeta flash micro SD na placa SoC FPGA.
    b. Enciende o taboleiro.
    c. Invoque o comando da utilidade de diagnóstico aocl.

1.5.2 Creación dunha imaxe de tarxeta flash SD
Tamén tes a opción de crear unha nova imaxe da tarxeta flash SD. As instrucións xenéricas sobre a creación dunha nova imaxe de tarxeta flash SD e a reconstrución dunha imaxe de tarxeta flash SD existente están dispoñibles na páxina GSRD v14.0.2 - Tarxeta SD de RocketBoards.org websitio.
Os pasos seguintes describen o procedemento para crear a imaxe linux_sd_card_image.tgz a partir da imaxe da tarxeta flash SD Golden System Reference Design (GSRD):
Nota:
Para crear a imaxe a partir da imaxe c5soc, realice todas as tarefas aplicables descritas neste procedemento.

  1. Descarga e desempaqueta a versión 14.0 da imaxe da tarxeta flash GSRD SD desde Rocketboards.org.
  2. Monte o file táboa de asignación (fat32) e ampliada file particións do sistema (ext3) nesta imaxe como dispositivos de bucle. Para montar unha partición, siga os seguintes pasos:
    a. Determine o inicio do byte da partición dentro da imaxe invocando o /sbin/fdisk -lu image_file mando.
    Por example, a partición número 1 do tipo W95 FAT ten unha compensación de bloque de 2121728. Con 512 bytes por bloque, a compensación de bytes é de 512 bytes x 2121728 = 1086324736 bytes.
    b. Identifique un dispositivo de bucle libre (por exemploample, /dev/loop0) escribindo o comando losetup -f.
    c. Asumindo que /dev/loop0 é o dispositivo de bucle libre, asigne a imaxe da tarxeta flash ao dispositivo de bloque de bucle invocando a imaxe losetup /dev/loop0_file -0 1086324736 comando.
    d. Monte o dispositivo de bucle invocando o comando mount /dev/loop0 /media/disk1.
    Dentro da imaxe file, /media/disk1 agora é unha partición fat32 montada.
    e. Repita os pasos a a d para a partición ext3.
  3. Descarga a versión FPGA do SoC Cyclone V do paquete Intel FPGA Runtime Environment para OpenCL desde o Centro de descargas de Altera websitio.
    a. Fai clic no botón Descargar a carón da edición de software Quartus Prime.
    b. Especifique a versión do lanzamento, o sistema operativo e o método de descarga.
    c. Fai clic na pestana Software adicional e selecciona para descargar Intel FPGA
    Entorno de execución para OpenCL Linux Cyclone V SoC TGZ.
    d. Despois de descargar o aocl-rte- .brazo32.tgz file, desempaqueteo
    un directorio que posúe.
  4. Coloque o aocl-rte- desempaquetado .arm32 no directorio /home/root/opencl_arm32_rte na partición ext3 da imaxe file.
  5. Elimine o(s) cartafol(s) de hardware da súa Plataforma personalizada e, a continuación, coloque a Plataforma personalizada no subdirectorio do taboleiro de /home/root/opencl_arm32_rte.
  6. Crea o ficheiro init_opencl.sh file no directorio /home/root co seguinte contido: export ALTERAOCLSDKROOT=/home/root/opencl_arm32_rte export AOCL_BOARD_PACKAGE_ROOT=$ALTERAOCLSDKROOT/board/ export PATH=$ALTERAOCLSDKROOT/bin:$PATH export LD_LIBRARY_PATH=$ALTERAOCLSDKROOT/host/arm32/lib:$LD_LIBRARY_PATH insmod $AOCL_BOARD_PACKAGE_ROOT/driver/aclsoc_drv.ko
    O usuario do SDK executa o comando source ./init_opencl.sh para cargar as variables de ambiente e o controlador do núcleo OpenCL Linux.
  7. Se precisa actualizar o precargador, o DTS files, ou o núcleo de Linux, necesitas o compilador arm-linux-gnueabihf-gcc do SoC EDS. Siga as instrucións descritas na Guía de usuario de Intel SoC FPGA Embedded Design Suite para adquirir o software, recompilalo e actualizar os datos relevantes. files na partición fat32 montada.
    Atención: O máis probable é que necesites actualizar o precargador se a túa plataforma personalizada ten usos de pin diferentes aos de c5soc.
    Lembra: se recompilas o núcleo de Linux, recompila o controlador do núcleo de Linux coa mesma fonte do núcleo de Linux files. Se hai unha discrepancia entre o controlador do núcleo de Linux e o núcleo de Linux, o controlador non se cargará. Ademais, debes activar o CMA.
    Consulte Recompilar o núcleo de Linux para obter máis información.
  8. Compile o hello_world OpenCL exampdeseña le usando a túa plataforma personalizada. Cambia o nome do .rbf file que o Intel FPGA SDK for OpenCL Offline Compiler xera como opencl.rbf e colócao na partición fat32 dentro da imaxe da tarxeta flash SD.
    Podes descargar o hello_world exampo deseño do OpenCL Design Examples páxina do Altera websitio.
    9. Despois de almacenar todo o necesario files na imaxe da tarxeta flash, invoque os seguintes comandos:
    a. sincronizar
    b. desmontar /media/disk1
    c. desmontar onde é o nome do directorio que usa para montar a partición ext3 en 3 na páxina 3 (por exemploample, /media/disk2).
    d. losetup -d /dev/loop0
    e. losetup -d /dev/loop1
  9. Comprime a imaxe da tarxeta flash SD invocando o seguinte comando: tar cvfz .tgz linux_sd_card_image
  10. Entregar o .tgz file dentro do directorio raíz da túa plataforma personalizada.
  11. Para probar a imaxe da tarxeta flash SD, realiza as seguintes tarefas:
    a. Escribe a imaxe sen comprimir resultante nunha tarxeta flash micro SD.
    b. Insira a tarxeta flash micro SD na placa SoC FPGA.
    c. Enciende o taboleiro.
    d. Invoque o comando da utilidade de diagnóstico aocl.

Ligazóns relacionadas

  • Guía de usuario de Intel SoC FPGA Embedded Design Suite
  • Deseño OpenCL Examples páxina do Altera websitio
  • Recompilar o núcleo de Linux na páxina 16
    Para activar o CMA, primeiro debes recompilar o núcleo de Linux.
  • Consultar o nome do dispositivo da tarxeta FPGA (diagnóstico)

1.6 Compilación do núcleo de Linux para Cyclone V SoC FPGA
Antes de executar aplicacións OpenCL na placa FPGA SoC Cyclone V, debes compilar a fonte do núcleo Linux e compilar e instalar o controlador do núcleo OpenCL Linux.

  1. Recompilar o núcleo de Linux na páxina 16
    Para activar o CMA, primeiro debes recompilar o núcleo de Linux.
  2. Compilación e instalación do controlador do núcleo OpenCL Linux na páxina 17 Compile o controlador do núcleo OpenCL Linux contra a fonte do núcleo compilado.

1.6.1 Recompilar o núcleo de Linux
Para activar o CMA, primeiro debes recompilar o núcleo de Linux.

  1. Fai clic na ligazón GSRD v14.0 - Compilando Linux na páxina de Recursos de RocketBoards.org websitio para acceder ás instrucións sobre a descarga e a reconstrución do código fonte do núcleo de Linux.
    Para usar co SDK™ Intel FPGA para OpenCL, especifique socfpga-3.13-rel14.0 como .
  2. Nota: o proceso de construción crea o arch/arm/configs/socfpga_defconfig file. Isto file especifica a configuración da configuración predeterminada de socfpga.
    Engade as seguintes liñas á parte inferior do arch/arm/configs/socfpga_defconfig file.
    CONFIG_MEMORY_ISOLATION=y
    CONFIG_CMA=y
    CONFIG_DMA_CMA=y
    CONFIG_CMA_DEBUG=y
    CONFIG_CMA_SIZE_MBYTES=512
    CONFIG_CMA_SIZE_SEL_MBYTES=y
    CONFIG_CMA_ALIGNMENT=8
    CONFIG_CMA_AREAS=7
    O valor de configuración CONFIG_CMA_SIZE_MBYTES establece o límite superior do número total de memoria fisicamente contigua dispoñible. Pode aumentar este valor se precisa máis memoria.
  3. Atención: A cantidade total de memoria física dispoñible para o procesador ARM na placa SoC FPGA é de 1 GB. Intel non recomenda que configure o xestor CMA preto de 1 GB.
  4. Execute o comando make mrproper para limpar a configuración actual.
  5. Execute o comando make ARCH=arm socfpga_deconfig.
    ARCH=arm indica que quere configurar a arquitectura ARM.
    socfpga_defconfig indica que quere utilizar a configuración predeterminada de socfpga.
  6. Execute o comando export CROSS_COMPILE=arm-linux-gnueabihf-.
    Este comando establece a variable de ambiente CROSS_COMPILE para especificar o prefixo da cadea de ferramentas desexada.
  7. Execute o comando make ARCH=arm zImage. A imaxe resultante está dispoñible no arch/arm/boot/zImage file.
  8. Coloque o zImage file na partición fat32 da imaxe da tarxeta flash. Para obter instrucións detalladas, consulte o Manual de usuario de GSRD específico de Cyclone V SoC FPGA en Rocketboards.org.
  9. Nota: para inserir correctamente o controlador do núcleo OpenCL Linux, cargue primeiro un SDKgenerated.rbf file á FPGA.
    Para crear o .rbf file, compile un deseño de SDK example coa plataforma de referencia do kit de desenvolvemento de SoC Cyclone V como a plataforma personalizada de destino.
    9. Coloque o .rbf file na partición fat32 da imaxe da tarxeta flash.
    Atención: a partición fat32 debe conter tanto o zImage file e o .rbf file. Sen un .rbf file, producirase un erro fatal ao inserir o controlador.
  10. Insira a tarxeta micro SD programada, que contén a imaxe da tarxeta SD modificada ou creada anteriormente, no kit de desenvolvemento de SoC Cyclone V e, a continuación, encienda a placa FPGA SoC.
  11. Verifique a versión do núcleo Linux instalado executando o comando uname -r.
  12. Para verificar que activa o CMA correctamente no núcleo, coa placa SoC FPGA acendida, execute o comando grep init_cma /proc/kallsyms.
    CMA está habilitado se a saída non está baleira.
  13. Para usar o núcleo Linux recompilado co SDK, compile e instale o controlador do núcleo Linux.

Ligazóns relacionadas

  • Manuais de usuario de Golden System Reference Design (GSRD).
  • Creación dunha imaxe da tarxeta flash SD na páxina 13
    Como o Cyclone V SoC FPGA é un sistema completo nun chip, vostede é o responsable de ofrecer a definición completa do sistema.

1.6.2 Compilación e instalación do controlador do núcleo OpenCL Linux
Compile o controlador do núcleo OpenCL Linux contra a fonte do núcleo compilado.

A fonte do controlador está dispoñible na versión FPGA Cyclone V SoC do entorno de execución Intel FPGA para OpenCL. Ademais, asegúrate de ter cargado un SDK Intel FPGA para .rbf xerado por OpenCL file no FPGA para evitar a instalación incorrecta do módulo do núcleo de Linux.

  1. Descarga a versión FPGA do SoC Cyclone V do paquete Intel FPGA Runtime Environment para OpenCL desde o Centro de descargas de Altera websitio.
    a. Fai clic no botón Descargar a carón da edición de software Quartus Prime.
    b. Especifique a versión do lanzamento, o sistema operativo e o método de descarga.
    c. Fai clic na pestana Software adicional e selecciona para descargar Intel FPGA
    Entorno de execución para OpenCL Linux Cyclone V SoC TGZ.
    d. Despois de descargar o aocl-rte- .brazo32.tgz file, desempaqueteo
    un directorio que posúe.
    A fonte do controlador está no aocl-rte- .arm32/board/c5soc/ directorio de controladores.
  2. Para recompilar o controlador do núcleo OpenCL Linux, estableza o valor KDIR na Marca do controladorfile ao directorio que contén a fonte do núcleo de Linux files.
  3. Execute o comando export CROSS_COMPILE=arm-linux-gnueabihf- para indicar o prefixo da súa cadea de ferramentas.
  4. Execute o comando make clean.
  5. Execute o comando make para crear o aclsoc_drv.ko file.
  6. Transfire o directorio opencl_arm32_rte á placa FPGA SoC Cyclone V.
    Executar o scp -r root@o teu enderezo de IP: O comando coloca o ambiente de execución no directorio/home/root.
  7. Executa o script init_opencl.sh que creaches cando creaches a imaxe da tarxeta SD.
  8.  Invoque o comando da utilidade de diagnóstico aocl. A utilidade de diagnóstico devolverá un resultado positivo despois de executar init_opencl.sh correctamente.

1.7 Problemas coñecidos
Actualmente, hai certas limitacións no uso do SDK Intel FPGA para OpenCL coa plataforma de referencia do kit de desenvolvemento de SoC Cyclone V.

  1. Non podes anular os nomes do fornecedor e do taboleiro que indican as cadeas CL_DEVICE_VENDOR e CL_DEVICE_NAME da chamada clGetDeviceInfo().
  2. Se o host asigna memoria constante no sistema DDR compartido (é dicir, HPS DDR) e modifica a memoria constante despois da execución do núcleo, os datos da memoria poden quedar obsoletos. Este problema xorde porque o núcleo FPGA non pode espiar transaccións DDR de CPU a HPS.
    Para evitar que as execucións do núcleo posteriores accedan a datos obsoletos, implemente unha das seguintes solucións:
    • Non modifique a memoria constante despois da súa inicialización.
    • Se precisa varios conxuntos de datos __constantes, cree varios búfers de memoria constantes.
    • Se está dispoñible, asigne memoria constante na FPGA DDR da tarxeta aceleradora.
  3. A utilidade SDK en ARM só admite o programa e os comandos da utilidade de diagnóstico.
    Os comandos de utilidade flash, instalar e desinstalar non son aplicables ao kit de desenvolvemento de SoC Cyclone V polos seguintes motivos:
    a. A utilidade de instalación ten que compilar o controlador do núcleo de Linux aclsoc_drv e activalo no FPGA SoC. A máquina de desenvolvemento ten que realizar a compilación; con todo, xa contén fontes do núcleo de Linux para o SoC FPGA. As fontes do núcleo de Linux para a máquina de desenvolvemento son diferentes das do SoC FPGA. O usuario do SDK probablemente descoñeza a localización das fontes do núcleo de Linux para o SoC FPGA. Do mesmo xeito, a utilidade de desinstalación tampouco está dispoñible para o kit de desenvolvemento de SoC Cyclone V.
    Ademais, entregar aclsoc_drv ao taboleiro de SoC é un reto porque a distribución predeterminada do Kit de desenvolvemento de SoC Cyclone V non contén o núcleo de Linux. files ou o compilador GNU Compiler Collection (GCC).
    b. A utilidade flash require colocar un .rbf file dun deseño OpenCL na partición FAT32 da tarxeta flash micro SD. Actualmente, esta partición non está montada cando o usuario do SDK enciende o taboleiro. Polo tanto, a mellor forma de actualizar a partición é utilizar un lector de tarxetas flash e a máquina de desenvolvemento.
  4. Ao cambiar entre o executable Intel FPGA SDK para OpenCL Offline Compiler files (.aocx) que corresponden a diferentes variantes de placa (é dicir, c5soc e c5soc_sharedonly), debes usar a utilidade do programa do SDK para cargar o .aocx file para a nova variante do taboleiro por primeira vez. Se simplemente executa a aplicación anfitrión usando unha nova variante de placa pero a FPGA contén a imaxe doutra variante de placa, pode ocorrer un erro fatal.
  5. O .qxp file non inclúe as asignacións de particións da interface porque o software Quartus Prime cumpre de forma consistente os requisitos de tempo desta partición.
  6. Cando encender a placa, o seu enderezo de control de acceso multimedia (MAC) establécese nun número aleatorio. Se a súa política de LAN non permite este comportamento, configure o enderezo MAC realizando as seguintes tarefas:
    a. Durante o encendido de U-Boot, prema calquera tecla para acceder ao indicador de comandos de U-Boot.
    b. Escriba setenv ethaddr 00:07:ed:00:00:03 no símbolo do sistema.
    Podes escoller calquera enderezo MAC.
    c. Escriba o comando saveenv.
    d. Reinicie o taboleiro.

1.8 Historial de revisións de documentos
Táboa 1.
Historial de revisión de documentos do SDK Intel FPGA para OpenCL Cyclone V SoC
Guía de portabilidade da plataforma de referencia do kit de desenvolvemento

Data Versión Cambios
Maio-17 2017.05.08 •Liberación de mantemento.
Outubro 2016 2016.10.31 • Rebautizado Altera SDK para OpenCL a Intel FPGA SDK para OpenCL.
•Cambio de marca Altera Offline Compiler a Intel FPGA SDK para OpenCL Offline Compiler.
Maio-16 2016.05.02 •Instrucións modificadas sobre a construción e modificación dunha imaxe da tarxeta flash SD.
•Instrucións modificadas para recompilar o núcleo Linux e o controlador do núcleo Linux OpenCL.
Novembro-15 2015.11.02 •Versión de mantemento e cambiou as instancias de Quartus II a Quartus Prime.
Maio-15 15.0.0 •En FPGA Reconfiguration, eliminouse a instrución para reprogramar o núcleo FPGA
cun . imaxe rbf invocando o gato filenome>. rbf
> Comando /dev/ fpga0 porque este método non se recomenda.
Decembro-14 14.1.0 •Cambiou o nome do documento como Altera Cyclone V SoC Development Kit Reference Platform Porting Guide.
•Actualizouse a utilidade de reprogramación ao programa aoclfilenome> comando da utilidade .aocx.
•Actualizouse a utilidade de diagnóstico ao diagnóstico aocl e ao diagnóstico aocl comando de utilidade.
•Actualizouse o procedemento na sección Portar a plataforma de referencia ao teu taboleiro de SoC para incluír instrucións sobre a portabilidade e a modificación da partición do taboleiro c5soc para crear unha partición de limpeza de tempo para o fluxo de peche de tempo garantido.
•Inseriu o tema Actualización dunha plataforma de referencia portada para esbozar os procedementos para as seguintes tarefas:
1.Excluíndo o bloque do sistema de procesador duro (HPS) na partición da placa
2.Actualizando a imaxe da tarxeta flash SD
•Actualizouse a sección Construír unha imaxe de tarxeta flash SD. Recoméndase usar a versión 14.0 da imaxe Golden System Reference Design (GSRD) como punto de partida en lugar da imaxe dispoñible con SoC Embedded Design Suite (EDS).
•Actualizouse a sección Recompilar o núcleo de Linux e o controlador do núcleo de Linux OpenCL:
1.Engadida instrución para establecer a variable CROSS COMPILE.
2.Cambiou o comando que executa para verificar que o CMA está activado correctamente.
Xullo-14 14.0.0 •Lanzamento inicial.

Documentos/Recursos

Intel FPGA SDK para OpenCL [pdfGuía do usuario
FPGA SDK para OpenCL, FPGA SDK, SDK para OpenCL, SDK

Referencias

Deixa un comentario

O teu enderezo de correo electrónico non será publicado. Os campos obrigatorios están marcados *