인텔 - 로고OpenCL용 FPGA SDK
사용자 가이드

UG-OCL009
2017.05.08
Intel® Quartus® Prime Design Suite에 대한 마지막 업데이트: 17.0

RENPHO RF FM059HS WiFi 스마트 발 마사지기 - 아이콘 5구독하다
SAMSUNG SM A136UZKZAIO Galaxy A13 5G 스마트폰 - 아이콘 12피드백 보내기

OpenCL™용 Intel® FPGA SDK Intel® Cyclone®V SoC 개발 키트 참조 플랫폼 포팅 가이드

V SoC 개발 키트 참조 플랫폼 포팅 가이드는 OpenCL™ Intel® FPGA SDK for OpenCL™ Intel Cyclone®을 위한 Intel 소프트웨어 개발 키트(SDK)와 함께 사용하기 위한 Intel Cyclone V SoC 개발 키트 참조 플랫폼(c5soc)의 하드웨어 및 소프트웨어 설계를 설명합니다. 시작하기 전에 Intel은 다음 문서의 내용을 숙지하는 것을 강력히 권장합니다.

  1. OpenCL용 Intel FPGA SDKIntel Cyclone V SoC 시작 가이드
  2. OpenCL 사용자 정의 플랫폼 툴킷 사용자 가이드를 위한 Intel FPGA SDK
  3. Cyclone V 장치 핸드북, 제3권: 하드 프로세서 시스템 기술 참조 매뉴얼 또한 Altera의 Cyclone V SoC 개발 키트 및 SoC 임베디드 설계 제품군 페이지를 참조하십시오. web자세한 내용은 사이트를 참조하세요. 1 2

주목: 인텔은 사용자가 Intel FPGA SDK for OpenCL Custom Platform Toolkit 사용자 가이드에 대한 심층적인 이해를 가지고 있다고 가정합니다. Cyclone V SoC 개발 키트 참조 플랫폼 포팅 가이드는 Cyclone V SoC 개발 키트를 위한 사용자 정의 플랫폼을 구현하기 위해 SDK의 사용자 정의 플랫폼 툴킷을 사용하는 방법을 설명하지 않습니다. Cyclone V SoC 개발 키트의 SDK 지원과 OpenCL 사용자 정의 플랫폼을 위한 일반 Intel FPGA SDK 간의 차이점만 설명합니다.

관련 링크

  • OpenCL Cyclone V SoC용 Intel FPGA SDK 시작 가이드
  • OpenCL 사용자 정의 플랫폼 툴킷 사용자 가이드를 위한 Intel FPGA SDK
  • Cyclone V 장치 핸드북, 3권: 하드 프로세서 시스템 기술 참조 매뉴얼
  • Altera의 Cyclone V SoC 개발 키트 및 SoC 임베디드 디자인 스위트 페이지 web대지
  1. OpenCL 및 OpenCL 로고는 Apple Inc.의 상표이며 Khronos Group™의 허가를 받아 사용됩니다.
  2. OpenCL용 Intel FPGA SDK는 공개된 Khronos 사양을 기반으로 하며 Khronos 적합성 테스트 프로세스를 통과했습니다. 현재 적합성 상태는 다음에서 확인할 수 있습니다. www.khronos.org/conformance.

Intel Corporation. 모든 권리 보유. Intel, Intel 로고, Altera, Arria, Cyclone, Enpirion, MAX, Nios, Quartus 및 Stratix 단어와 로고는 미국 및/또는 기타 국가에서 Intel Corporation 또는 그 자회사의 상표입니다. Intel은 Intel의 표준 보증에 따라 FPGA 및 반도체 제품의 성능을 현재 사양에 따라 보증하지만, 사전 통지 없이 언제든지 모든 제품과 서비스를 변경할 권리를 보유합니다. Intel은 Intel이 서면으로 명시적으로 동의한 경우를 제외하고 여기에 설명된 정보, 제품 또는 서비스의 적용 또는 사용으로 인해 발생하는 책임이나 의무를 지지 않습니다. Intel 고객은 게시된 정보에 의존하고 제품이나 서비스를 주문하기 전에 최신 버전의 장치 사양을 얻는 것이 좋습니다.
*다른 이름과 브랜드는 다른 사람의 재산이라고 주장될 수 있습니다.

1.1.1 Cyclone V SoC 개발 키트 참조 플랫폼 보드 변형
OpenCL Cyclone V SoC 개발 키트 참조 플랫폼용 Intel FPGA SDK에는 두 가지 보드 변형이 포함됩니다.

  • c5soc 보드
    이 기본 보드는 두 개의 DDR 메모리 뱅크에 대한 액세스를 제공합니다. HPS DDR은 FPGA와 CPU 모두에서 액세스할 수 있습니다. FPGA DDR은 FPGA에서만 액세스할 수 있습니다.
  • c5soc_sharedonly 보드
    이 보드 변형에는 HPS DDR 연결만 있습니다. FPGA DDR은 액세스할 수 없습니다. 이 보드 변형은 하나의 DDR 메모리 뱅크를 지원하는 데 필요한 하드웨어가 적기 때문에 공간 효율성이 더 높습니다. c5soc_sharedonly 보드는 단일 DDR 메모리 뱅크가 있는 최종 생산 보드에 적합한 프로토타입 플랫폼이기도 합니다.
    OpenCL 커널을 컴파일할 때 이 보드 변형을 대상으로 하려면 aoc 명령에 -board c5soc_sharedonly 옵션을 포함하세요.
    –board에 대한 자세한 내용은 aoc 명령의 옵션에 대해서는 OpenCL 프로그래밍 가이드를 위한 Intel FPGA SDK를 참조하세요.

관련 링크
특정 FPGA 보드에 대한 커널 컴파일(–board) )
1.1.2 Cyclone V SoC 개발 키트 참조 플랫폼의 콘텐츠
Cyclone V SoC 개발 키트 참조 플랫폼은 다음으로 구성됩니다. files 및 디렉토리:

File 또는 디렉토리 설명
보드_환경.xml 확장 가능한 마크업 언어(XML) file Intel FPGA SDK for OpenCL에 대한 c5soc를 설명합니다.
리눅스_SD카드_이미지.tgz 압축 SD 플래시 카드 이미지 file SDK 사용자가 Cyclone V SoC 개발 키트를 SDK와 함께 사용하는 데 필요한 모든 것이 포함되어 있습니다.
팔32 다음 내용이 포함된 디렉토리:

1.1.3 Cyclone V SoC 개발 키트의 관련 기능

다음 목록은 Intel FPGA SDK for OpenCL과 관련된 Cyclone V SoC 개발 키트 구성 요소와 기능을 강조합니다.

  • 9비트 Linux를 실행하는 듀얼코어 ARM Cortex-A32 CPU.
  • HPS와 FPGA 코어 패브릭 사이의 AXI(Advanced eXtensible Interface) 버스.
  • 각각 1기가바이트(GB) DDR3 SDRAM에 연결되는 강화된 DDR 메모리 컨트롤러 XNUMX개.
    — 하나의 DDR 컨트롤러는 FPGA 코어(즉, FPGA DDR)에만 액세스할 수 있습니다.
    — 다른 DDR 컨트롤러는 HPS와 FPGA(즉, HPS DDR) 모두에서 액세스할 수 있습니다. 이 공유 컨트롤러는 CPU와 FPGA 코어 간의 자유로운 메모리 공유를 허용합니다.
  • CPU는 FPGA 코어 패브릭을 재구성할 수 있습니다.

1.1.3.1 Cyclone V SoC 개발 키트 참조 플랫폼 설계 목표 및 결정 Intel은 Cyclone V SoC 개발 키트 참조 플랫폼의 구현을 여러 가지 설계 목표 및 결정에 기반합니다. Intel은 이 참조 플랫폼을 SoC FPGA 보드로 이식할 때 이러한 목표와 결정을 고려할 것을 권장합니다.
c5soc 디자인 목표는 다음과 같습니다.

  1. FPGA의 커널과 DDR 메모리 시스템 간에 가능한 가장 높은 대역폭을 제공합니다.
  2. FPGA(즉, OpenCL 커널)에서의 계산이 주변 장치 서비스를 포함한 다른 CPU 작업을 방해하지 않는지 확인하세요.
  3. 인터페이스 구성 요소 대신 커널 계산에 최대한 많은 FPGA 리소스를 남겨 둡니다.

인텔의 설계 목표의 직접적인 결과인 상위 수준의 설계 결정은 다음과 같습니다.

  1. 참조 플랫폼은 가능한 가장 광범위한 구성(256비트)을 갖춘 하드 DDR 메모리 컨트롤러만 사용합니다.
  2. FPGA는 HPS 내부의 AXI 버스와 L3 스위치를 포함하지 않고 HPS DDR 메모리 컨트롤러와 직접 통신합니다. 직접 통신은 DDR에 최상의 대역폭을 제공하고 FPGA 계산이 CPU와 주변 장치 간의 통신을 방해하지 않도록 합니다.
  3. Scatter-gather 직접 메모리 액세스(SG-DMA)는 FPGA 인터페이스 로직의 일부가 아닙니다. DDR 메모리 시스템 간에 대량의 데이터를 전송하는 대신 공유 HPS DDR에 데이터를 저장합니다. FPGA가 CPU 메모리에 직접 액세스하는 것이 DMA보다 효율적입니다. 하드웨어 리소스(즉, FPGA 영역)를 절약하고 Linux 커널 드라이버를 간소화합니다.
    경고: 공유 HPS DDR 시스템과 FPGA에서만 액세스할 수 있는 DDR 시스템 간의 메모리 전송은 매우 느립니다.
    이런 방식으로 메모리를 전송하고, 매우 적은 양의 데이터에만 사용하세요.
  4. 호스트와 장치는 HPS-to-FPGA(H2F) 브리지를 통해 서로 간에 비 DMA 데이터 전송을 수행하며, 32비트 포트 하나만 사용합니다. 그 이유는 DMA가 없으면 Linux 커널은 32비트 읽기 또는 쓰기 요청을 하나만 발행할 수 있으므로 더 넓은 연결이 필요하지 않기 때문입니다.
  5. 호스트는 경량 H2F(LH2F) 브리지를 통해 장치에 제어 신호를 보냅니다.
    호스트에서 장치로 가는 제어 신호는 대역폭이 낮은 신호이므로 LH2F 브리지가 이 작업에 이상적입니다.

1.2 참조 플랫폼을 SoC FPGA 보드로 이식
Cyclone V SoC 개발 키트 참조 플랫폼을 SoC FPGA 보드로 이식하려면 다음 작업을 수행하세요.

  1. 설계의 시작점으로 c5soc 참조 플랫폼의 DDR 메모리 XNUMX개 또는 DDR 메모리 XNUMX개 버전을 선택하세요.
  2. ALTERAOCLSDKROOT/board/c5soc/에서 핀 위치를 업데이트합니다. /상단.qsf file여기서 ALTERAOCLSDKROOT는 OpenCL용 Intel FPGA SDK 설치 위치의 경로이고 보드 변형의 디렉토리 이름입니다. c5soc_sharedonly 디렉토리는 DDR 메모리 시스템이 하나인 보드 변형을 위한 것입니다. c5soc 디렉토리는 DDR 메모리 시스템이 두 개인 보드 변형을 위한 것입니다.
  3.  ALTERAOCLSDKROOT/board/c5soc/에서 HPS 및/또는 FPGA SDRAM 블록에 대한 DDR 설정을 업데이트합니다. /system.qsys file.
    4. 모든 Intel FPGA SDK for OpenCL 선호 보드 설계는 보장된 타이밍 클로저를 달성해야 합니다. 따라서 설계 배치는 타이밍이 깨끗해야 합니다. c5soc 보드 파티션(acl_iface_partition.qxp)을 SoC FPGA 보드로 이식하려면 다음 작업을 수행합니다.
    보드 파티션을 수정하고 보존하는 방법에 대한 자세한 지침은 Quartus를 참조하세요.
    Quartus Prime Standard Edition 핸드북의 계층적 및 팀 기반 설계를 위한 Prime 증분 컴파일 챕터입니다.
    a. ALTERAOCLSDKROOT/board/c5soc/c5soc 디렉토리에서 acl_iface_partition.qxp를 제거합니다.
    b. Tcl 명령 set_global_assignment -name LL_ENABLED OFF -section_id acl_iface_region을 set_global_assignment -name LL_ENABLED ON -section_id acl_iface_region으로 변경하여 acl_iface_region LogicLock™ 영역을 활성화합니다.
    c. 보드에 맞는 OpenCL 커널을 컴파일합니다.
    d. 필요한 경우 LogicLock 영역의 크기와 위치를 조정합니다.
    e. 디자인 배치가 타이밍이 깔끔한지 확인되면 해당 파티션을 acl_iface_partition.qxp Quartus Prime Exported Partition으로 내보냅니다. File.
    AIntel FPGA SDK for OpenCL Custom Platform Toolkit 사용자 가이드의 보장된 타이밍 흐름 설정 섹션에 설명된 대로 이 .qxp를 가져와서  file 최상위 설계에 타이밍 클로저 흐름이 보장된 보드 설계를 제공한다는 요구 사항을 충족합니다.
    내보낸 파티션의 결과 품질(QoR)에 영향을 줄 수 있는 요소에 대해서는 Intel FPGA SDK for OpenCL Custom Platform Toolkit 사용자 가이드의 내보낸 보드 파티션에 대한 일반적인 결과 품질 고려 사항 섹션을 참조하세요.
    f. 2단계의 명령을 set_global_assignment -name LL_ENABLED OFF section_id acl_iface_region으로 되돌려 acl_iface_region LogicLock 영역을 비활성화합니다.
  4. SoC FPGA 보드가 HPS 블록의 다른 핀과 주변 장치를 사용하는 경우 프리로더와 장치 트리 소스(DTS)를 재생성합니다. fileHPS DDR 메모리 컨트롤러 설정을 변경하는 경우 프리로더를 다시 생성하세요.
  5. SD 플래시 카드 이미지를 만듭니다.
  6. SD 플래시 카드 이미지를 포함하는 사용자 정의 플랫폼을 만듭니다.
  7. OpenCL용 Intel FPGA 런타임 환경(RTE)과 함께 사용할 사용자 정의 플랫폼의 런타임 환경 버전을 만드는 것을 고려하세요. 사용자 정의 플랫폼의 RTE 버전에는 하드웨어 디렉토리와 SD 플래시 카드 이미지가 포함되지 않습니다. 이 사용자 정의 플랫폼은 SoC FPGA 시스템에 로드되어 호스트 애플리케이션을 실행할 수 있습니다. 반면, 사용자 정의 플랫폼의 SDK 버전은 SDK가 OpenCL 커널을 컴파일하는 데 필요합니다.
    팁: RTE에 대한 사용자 정의 플랫폼의 SDK 버전을 사용할 수 있습니다. 저장하려면
    공간을 확보하려면 사용자 지정 플랫폼의 RTE 버전에서 SD 플래시 카드 이미지를 제거합니다.
  8. 맞춤형 플랫폼을 테스트하세요.
    자세한 내용은 Intel FPGA SDK for OpenCL Custom Platform Toolkit 사용자 가이드의 하드웨어 설계 테스트 섹션을 참조하세요.

관련 링크

  • 하드웨어 설계 테스트
  • 계층적 및 팀 기반 설계를 위한 Quartus Prime 증분 컴파일
  • 보장된 타이밍 흐름 설정
  • 내보낸 보드 파티션에 대한 일반적인 결과 품질 고려 사항

1.2.1 포팅된 참조 플랫폼 업데이트
Cyclone V SoC 개발 키트 참조 플랫폼의 현재 버전에서 HPS 블록은 모든 비커널 로직을 정의하는 파티션 내부에 있습니다. 그러나 HPS를 .qxp의 일부로 내보낼 수는 없습니다. file. 이전 버전의 c5soc에서 수정한 기존 사용자 정의 플랫폼을 업데이트하려면 QXP 보존 흐름을 구현하고 SD 플래시 카드 이미지를 업데이트하여 최신 런타임 환경을 얻고 board_spec.xml을 업데이트합니다. file 자동 마이그레이션을 활성화합니다.
OpenCL 버전 14.1 이상을 위한 Altera® SDK는 다음을 조사합니다. board_spec.xml file 보드 정보를 위해 자동 업데이트를 구현합니다. 귀하가 수정하기 때문에
QXP 보존 흐름을 구현하여 설계하려면 board_spec.xml을 업데이트해야 합니다. file 현재 버전의 형식으로 업데이트합니다. file SDK가 보존되지 않은 사용자 정의 플랫폼과 현재 QXP 기반 사용자 정의 플랫폼을 구별할 수 있도록 합니다. 자세한 내용은 Intel FPGA SDK for OpenCL 사용자 정의 플랫폼 툴킷 사용자 가이드의 전방 호환성을 위한 사용자 정의 플랫폼 자동 마이그레이션을 참조하세요.

  1. 이전 버전의 c5soc에서 이식된 Cyclone V SoC FPGA 하드웨어 설계에서 QXP 보존 흐름을 구현하려면 다음 단계를 수행하여 .qxp에서 HPS를 제외하기 위한 하위 파티션을 만드십시오. file:
    a. 비커널 로직 주위에 파티션을 생성하기 전에 .qsf Quartus Prime 설정에서 HPS 주위에 파티션을 생성합니다. File.
    예를 들어amp르 :
    # HPS 전용 I/O를 모델로 하는 인스턴스를 수동으로 분할 set_instance_assignment -name PARTITION_HIERARCHY borde_18261 -to “system:the_system|system_acl_iface:acl_iface|system_acl_iface_hps_0:hps_0|system_acl_iface_hps_0_hps_io:hps_io| system_acl_iface_hps_0_hps_io_border:border” -section_id “system_acl_iface_hps_0_hps_io_border:border”
    # 나머지 Quartus에서 올바르게 처리되도록 파티션을 HPS_PARTITION 유형으로 설정합니다.
    set_global_assignment -name PARTITION_TYPE HPS_PARTITION -section_id “system_acl_iface_hps_0_hps_io_border:border”
    quartus_cdb 상위 -c 상위
    –증분 컴파일 내보내기=acl_iface_partition.qxp
    –증분 컴파일 내보내기 파티션 이름=acl_iface_파티션
    –증분 컴파일 내보내기_포스트_신스=켜짐
    –증분 컴파일 내보내기_사후 맞춤=켜짐
    –증분 컴파일 내보내기 라우팅=켜짐
    –증분 컴파일 내보내기 플래튼=끄기
    파티션에서 HPS를 제외한 후 .qxp를 가져올 수 있습니다. file 디자인을 편집하세요.
  2. 다음 작업을 수행하여 OpenCL용 Intel FPGA RTE의 최신 버전으로 SD 플래시 카드 이미지를 업데이트합니다.
    a. 마운트 file 할당 테이블(fat32) 및 확장 file 기존 이미지의 시스템(ext3) 파티션을 루프백 장치로 사용합니다. 자세한 지침은 SD 플래시 카드 이미지 빌드의 2단계를 참조하세요.
    b. /home/root/opencl_arm32_rte 디렉토리에서 다음을 제거합니다. file이전 버전의 RTE에서 가져온 것입니다.
    c. RTE의 현재 버전을 /home/root/opencl_arm32_rte 디렉토리에 다운로드하여 압축을 풉니다.
    d. 에서 /드라이버/버전.h file 사용자 정의 플랫폼의 ACL_DRIVER_VERSION 할당을 업데이트합니다. . (예를 들어amp(le, 16.1.x, 여기서 16.1은 SDK 버전이고, x는 사용자가 설정한 드라이버 버전입니다).
    e. 드라이버를 다시 빌드합니다.
    f. 사용자 정의 플랫폼의 하드웨어 폴더를 삭제합니다. 업데이트된 드라이버와 함께 사용자 정의 플랫폼을 /home/root/opencl_arm_rte/board 디렉토리로 복사합니다.
    g. Altera.icd를 복사합니다. file /home/root/opencl_arm32_rte 디렉토리에서 /etc/OpenCL/vendors 디렉토리에 추가합니다.
    h. 새 이미지를 언마운트하고 테스트합니다. 자세한 지침은 SD 플래시 카드 이미지 구축의 8~11단계를 참조하세요.

관련 링크

  • 14페이지 SD 플래시 카드 이미지 생성
    새로운 SD 플래시 카드 이미지를 만들 수도 있습니다.
  • 전방 호환성을 위한 사용자 정의 플랫폼 자동 마이그레이션

1.3 공유 메모리에 대한 소프트웨어 지원
FPGA와 CPU 간의 공유된 물리적 메모리는 SoC FPGA에서 실행되는 OpenCL 커널에 선호되는 메모리입니다. FPGA는 공유된 가상 메모리와 달리 공유된 물리적 메모리에 액세스하기 때문에 사용자 가상 주소를 물리적 페이지 주소에 매핑하는 CPU의 페이지 테이블에 액세스할 수 없습니다.
하드웨어와 관련하여 OpenCL 커널은 HPS DDR 하드 메모리 컨트롤러에 직접 연결하여 공유된 물리적 메모리에 액세스합니다. 소프트웨어와 관련하여 공유된 물리적 메모리에 대한 지원에는 다음과 같은 고려 사항이 포함됩니다.

  1. CPU에 메모리를 할당하기 위한 일반적인 소프트웨어 구현(예:amp(malloc() 함수)는 FPGA가 사용할 수 있는 메모리 영역을 할당할 수 없습니다.
    malloc() 함수가 할당하는 메모리는 가상 메모리 주소 공간에서 연속적이지만, 기본 물리 페이지는 물리적으로 연속적일 가능성이 낮습니다. 따라서 호스트는 물리적으로 연속적인 메모리 영역을 할당할 수 있어야 합니다. 그러나 이 기능은 Linux의 사용자 공간 애플리케이션에는 없습니다. 따라서 Linux 커널 드라이버가 할당을 수행해야 합니다.
  2. OpenCL SoC FPGA Linux 커널 드라이버에는 공유된 물리적 메모리를 할당하고 사용자 공간에 매핑하는 mmap() 함수가 포함되어 있습니다. mmap() 함수는 표준 Linux 커널 호출 dma_alloc_coherent()를 사용하여 장치와 공유할 물리적으로 연속된 메모리 영역을 요청합니다.
  3. 기본 Linux 커널에서 dma_alloc_coherent()는 크기가 0.5메가바이트(MB)를 넘는 물리적으로 연속된 메모리를 할당하지 않습니다. dma_alloc_coherent()가 대량의 물리적으로 연속된 메모리를 할당할 수 있도록 하려면 Linux 커널의 연속 메모리 할당자(CMA) 기능을 활성화한 다음 Linux 커널을 다시 컴파일합니다.
    Cyclone V SoC 개발 키트 참조 플랫폼의 경우 CMA는 512GB의 실제 메모리 중 1MB를 관리합니다. 애플리케이션에 필요한 공유 메모리 양에 따라 이 값을 늘리거나 줄일 수 있습니다. dma_alloc_coherent() 호출은 물리적으로 연속된 메모리의 전체 512MB를 할당하지 못할 수 있지만, 일상적으로 약 450MB의 메모리를 얻을 수 있습니다.
  4. CPU는 dma_alloc_coherent() 호출이 할당하는 메모리를 캐시할 수 있습니다. 특히 호스트 애플리케이션의 쓰기 작업은 OpenCL 커널에 표시되지 않습니다. OpenCL SoC FPGA Linux 커널 드라이버의 mmap() 함수에는 이 메모리 영역에 대한 캐싱을 명시적으로 비활성화하기 위한 pgprot_noncached() 또는 remap_pf_range() 함수에 대한 호출도 포함되어 있습니다.
  5. dma_alloc_coherent() 함수가 물리적으로 연속된 메모리를 할당한 후, mmap() 함수는 가상 주소를 범위의 시작 부분으로 반환합니다. 이는 할당한 메모리의 주소 범위입니다. 호스트 애플리케이션은 메모리에 액세스하기 위해 이 가상 주소가 필요합니다. 반면, OpenCL 커널은 물리적 주소가 필요합니다. Linux 커널 드라이버는 가상-물리적 주소 매핑을 추적합니다. mmap()이 반환하는 물리적 주소를 드라이버에 쿼리를 추가하여 실제 물리적 주소에 매핑할 수 있습니다.
    aocl_mmd_shared_mem_alloc() MMD 애플리케이션 프로그래밍 인터페이스(API) 호출에는 다음 쿼리가 통합되어 있습니다.
    a. 메모리를 할당하고 가상 주소를 반환하는 mmap() 함수.
    b. 반환된 가상 주소를 물리적 주소에 매핑하는 추가 쿼리.
    aocl_mmd_shared_mem_alloc() MMD API 호출은 두 개의 주소를 반환합니다.
    —실제 반환된 주소는 가상 주소이고, 물리적 주소는 device_ptr_out으로 이동합니다.
    메모: 드라이버는 mmap() 함수가 반환하는 가상 주소만 물리적 주소에 매핑할 수 있습니다. 다른 가상 포인터의 물리적 주소를 요청하면 드라이버는 NULL 값을 반환합니다.

경고: OpenCL 런타임 라이브러리용 Intel FPGA SDK는 공유 메모리가 board_spec.xml에 나열된 첫 번째 메모리라고 가정합니다. file즉, Linux 커널 드라이버가 얻는 물리적 주소는 OpenCL 커널이 HPS SDRAM에 전달하는 Avalon® 주소가 됩니다.
런타임 라이브러리와 관련하여 clCreateBuffer() 호출을 사용하여 다음과 같은 방식으로 공유 메모리를 장치 버퍼로 할당합니다.

  • 공유 및 비공유 메모리를 모두 갖춘 2-DDR 보드 변형의 경우, CL_MEM_USE_HOST_PTR 플래그를 지정하면 clCreateBuffer()가 공유 메모리를 할당합니다. 다른 플래그를 사용하면 clCreateBuffer()가 비공유 메모리에 버퍼를 할당합니다.
  • 공유 메모리만 있는 1개 DDR 보드 변형의 경우, clCreateBuffer()는 지정한 플래그에 관계없이 공유 메모리를 할당합니다.
    현재 ARM CPU에서 32비트 Linux 지원은 SDK 런타임 라이브러리에서 공유 메모리 지원 범위를 제어합니다. 즉, 다른 환경(예:ample, x86_64 Linux 또는 64비트 Windows는 공유 메모리를 지원하지 않습니다.
    C5soc는 다음과 같은 이유로 공유 메모리와 비공유 메모리를 구별하기 위해 이기종 메모리를 구현하지 않았습니다.
    1. 역사 - 공유 메모리 지원이 처음 만들어졌을 때는 이기종 메모리 지원이 제공되지 않았습니다.
    2. 균일한 인터페이스—OpenCL은 개방형 표준이기 때문에 인텔은 이기종 컴퓨팅 플랫폼 공급업체 간에 일관성을 유지합니다. 따라서 다른 보드 공급업체의 아키텍처와 동일한 인터페이스를 사용하여 공유 메모리를 할당하고 사용합니다.

1.4 FPGA 재구성
SoC FPGA의 경우 CPU는 CPU의 작동을 방해하지 않고 FPGA 코어 패브릭을 재구성할 수 있습니다. HPS와 코어 FPGA를 가로지르는 FPGA 관리자 하드웨어 블록이 재구성을 수행합니다. Linux 커널에는 FPGA 관리자에 쉽게 액세스할 수 있는 드라이버가 포함되어 있습니다.

  • 에게 view FPGA 코어의 상태를 알아보려면 cat /sys/class/fpga/fpga0/ status 명령을 호출하세요.
    Cyclone V SoC 개발 키트 참조 플랫폼과 함께 제공되는 Intel FPGA SDK for OpenCL 프로그램 유틸리티는 이 인터페이스를 사용하여 FPGA를 프로그래밍합니다. 실행 중인 CPU로 FPGA 코어를 재프로그래밍할 때 프로그램 유틸리티는 다음 모든 작업을 수행합니다.
    1. 재프로그래밍하기 전에 FPGA와 HPS 간의 모든 통신 브리지(H2F 및 LH2F 브리지 모두)를 비활성화합니다.
    재프로그래밍이 완료된 후 이러한 브리지를 다시 활성화하세요.
    주의: OpenCL 시스템은 FPGA-to-HPS(F2H) 브리지를 사용하지 않습니다. 자세한 내용은 Cyclone V Device Handbook, Volume 3: Hard Processor System Technical Reference Manual의 HPS-FPGA Interfaces 섹션을 참조하십시오.
    2. 재프로그래밍하는 동안 FPGA와 HPS DDR 컨트롤러 간의 링크가 비활성화되었는지 확인하세요.
    3. 재프로그래밍하는 동안 FPGA의 FPGA 인터럽트가 비활성화되었는지 확인하세요.
    또한, 재프로그래밍 중에 FPGA로부터의 모든 인터럽트를 거부하도록 드라이버에 알립니다.

실제 구현에 대한 자세한 내용은 프로그램 유틸리티의 소스 코드를 참조하세요.

경고: CPU가 실행 중일 때는 HPS DDR 컨트롤러의 구성을 변경하지 마세요.
그렇게 하면 CPU에서 미처리된 메모리 트랜잭션이 있을 때 DDR 컨트롤러 구성을 변경할 수 있으므로 치명적인 시스템 오류가 발생할 수 있습니다. 즉, CPU가 실행 중일 때 다른 구성에서 HPS DDR을 사용하는 이미지로 FPGA 코어를 재프로그래밍할 수 없습니다.
OpenCL 시스템과 Intel SoC FPGA Embedded Design Suite(EDS)와 함께 제공되는 Golden Hardware 참조 디자인은 HPS DDR을 단일 256비트 모드로 설정합니다.
분기 예측기나 페이지 테이블 프리페처와 같은 CPU 시스템 부분은 CPU에서 아무것도 실행되지 않는 것처럼 보일 때에도 DDR 명령을 실행할 수 있습니다.
따라서 부팅 시간은 HPS DDR 컨트롤러 구성을 설정하기에 유일하게 안전한 시간입니다.
이는 또한 U-boot에 원시 바이너리가 있어야 함을 의미합니다. file (.rbf) 이미지를 메모리에 로드합니다. 그렇지 않으면 FPGA에서 사용하지 않는 포트로 HPS DDR을 활성화한 다음 나중에 포트 구성을 변경할 수 있습니다. 이러한 이유로 OpenCL Linux 커널 드라이버에는 더 이상 HPS DDR 컨트롤러 구성을 설정하는 데 필요한 로직이 포함되지 않습니다.
Cylone V SoC 개발 키트의 SW3 듀얼 인라인 패키지(DIP) 스위치는 .rbf 이미지의 예상 형식을 제어합니다(즉, file 압축 및/또는 암호화됨). C5soc 및 SoC EDS와 함께 제공되는 Golden Hardware Reference Design에는 압축되었지만 암호화되지 않은 .rbf 이미지가 포함되어 있습니다. Intel FPGA SDK for OpenCL Cyclone V SoC 시작 안내서에 설명된 SW3 DIP 스위치 설정은 이 .rbf 이미지 구성과 일치합니다.

관련 링크

  • HPS-FPGA 인터페이스
  • SW3 스위치 구성

1.4.1 FPGA 시스템 아키텍처 세부 정보
Cyclone V SoC 개발 키트 참조 플랫폼에 대한 지원은 Intel FPGA SDK for OpenCL과 함께 제공되는 Stratix® V 참조 플랫폼(s5_ref)을 기반으로 합니다.
c5soc Qsys 시스템과 커널 드라이버의 전반적인 구성은 s5_ref와 매우 유사합니다.
다음 FPGA 코어 구성 요소는 c5soc와 s5_ref에서 동일합니다.

  • VERSION_ID 블록
  • 휴식 메커니즘
  • 메모리 뱅크 디바이더
  • 캐시 스눕 인터페이스
  • 커널 클럭
  • 제어 레지스터 액세스(CRA) 블록

1.5 SD 플래시 카드 이미지 구축
Cyclone V SoC FPGA는 완전한 시스템 온 칩이므로 시스템의 전체 정의를 제공해야 합니다. Intel은 SD 플래시 카드 이미지 형태로 제공할 것을 권장합니다. OpenCL용 Intel FPGA SDK 사용자는 이미지를 마이크로 SD 플래시 카드에 쓰기만 하면 SoC FPGA 보드를 사용할 준비가 됩니다.
13페이지의 기존 SD 플래시 카드 이미지 수정
인텔은 Cyclone V SoC 개발 키트 참조 플랫폼에서 사용 가능한 이미지를 간단히 수정하는 것을 권장합니다. 새 SD 플래시 카드 이미지를 만드는 옵션도 있습니다.
14페이지 SD 플래시 카드 이미지 생성
새로운 SD 플래시 카드 이미지를 만들 수도 있습니다.

1.5.1 기존 SD 플래시 카드 이미지 수정
Intel은 Cyclone V SoC에서 사용 가능한 이미지를 간단히 수정하는 것을 권장합니다.
개발 키트 참조 플랫폼. 새로운 SD 플래시 카드 이미지를 만드는 옵션도 있습니다.
c5soc linux_sd_card_image.tgz 이미지 file ALTERAOCLSDKROOT/board/c5soc 디렉토리에서 사용할 수 있으며, 여기서 ALTERAOCLSDKROOT는 OpenCL용 Intel FPGA SDK 설치 디렉토리 경로를 가리킵니다.

주목: SD 플래시 카드 이미지를 수정하려면 root 또는 sudo 권한이 있어야 합니다.

  1. $ALTERAOCLSDKROOT/board/c5soc/linux_sd_card_image.tgz를 압축 해제하려면 filetar xvfzlinux_sd_card_image.tgz 명령을 실행합니다.
  2. hello_world OpenCL ex를 컴파일합니다.amp사용자 정의 플랫폼 지원을 사용하여 le 디자인을 만듭니다. .rbf 이름을 바꿉니다. file Intel FPGA SDK for OpenCL Offline Compiler가 opencl.rbf로 생성하고 SD 플래시 카드 이미지 내의 fat32 파티션에 저장합니다.
    hello_world ex를 다운로드할 수 있습니다ampOpenCL Design Ex의 le 디자인ampAltera에 대한 페이지 web대지.
  3. .rbf를 넣으세요 file 플래시 카드 이미지의 fat32 파티션으로.
    주목: fat32 파티션에는 zImage가 모두 포함되어야 합니다. file 그리고 .rbf file.rbf 없이 file드라이버를 삽입하면 치명적인 오류가 발생합니다.
  4. SD 카드 이미지를 만든 후 다음 명령을 호출하여 Micro SD 카드에 씁니다. sudo dd if=/path/to/sdcard/image.bin of=/dev/sdcard
  5. SD 플래시 카드 이미지를 테스트하려면 다음 작업을 수행하세요.
    a. 마이크로 SD 플래시 카드를 SoC FPGA 보드에 삽입합니다.
    b. 보드에 전원을 켜세요.
    c. aocl diagnose 유틸리티 명령을 호출합니다.

1.5.2 SD 플래시 카드 이미지 생성
새 SD 플래시 카드 이미지를 만드는 옵션도 있습니다. 새 SD 플래시 카드 이미지를 빌드하고 기존 SD 플래시 카드 이미지를 재구성하는 방법에 대한 일반적인 지침은 RocketBoards.org의 GSRD v14.0.2 – SD 카드 페이지에서 제공됩니다. web대지.
아래 단계에서는 Golden System Reference Design(GSRD) SD 플래시 카드 이미지에서 linux_sd_card_image.tgz 이미지를 만드는 절차를 설명합니다.
메모:
c5soc 이미지에서 이미지를 생성하려면 이 절차에 설명된 모든 해당 작업을 수행하세요.

  1. Rocketboards.org에서 GSRD SD 플래시 카드 이미지 버전 14.0을 다운로드하여 압축을 풉니다.
  2. 마운트하다 file 할당 테이블(fat32) 및 확장 file 이 이미지의 시스템(ext3) 파티션을 루프백 장치로 사용합니다. 파티션을 마운트하려면 다음 단계를 수행합니다.
    a. /sbin/fdisk -lu image_ 명령을 호출하여 이미지 내 파티션의 바이트 시작을 확인합니다.file 명령.
    예를 들어ample, W1 FAT 유형의 파티션 번호 95은 블록 오프셋이 2121728입니다. 블록당 512바이트이므로 바이트 오프셋은 512바이트 x 2121728 = 1086324736바이트입니다.
    b. 자유 루프 장치 식별(예:amplosetup -f 명령을 입력하여 (le, /dev/loop0)을 삭제합니다.
    c. /dev/loop0가 자유 루프 장치라고 가정하고 losetup /dev/loop0 image_를 호출하여 플래시 카드 이미지를 루프 블록 장치에 할당합니다.file -0 1086324736 명령.
    d. mount /dev/loop0 /media/disk1 명령을 호출하여 루프 장치를 마운트합니다.
    이미지 내에서 file, /media/disk1은 이제 마운트된 fat32 파티션이 되었습니다.
    e. ext3 파티션에 대해 a~d 단계를 반복합니다.
  3. Altera 다운로드 센터에서 Intel FPGA Runtime Environment for OpenCL 패키지의 Cyclone V SoC FPGA 버전을 다운로드하세요. web대지.
    a. Quartus Prime 소프트웨어 버전 옆에 있는 다운로드 버튼을 클릭하세요.
    b. 릴리스 버전, 운영 체제 및 다운로드 방법을 지정하세요.
    c. 추가 소프트웨어 탭을 클릭하고 Intel FPGA 다운로드를 선택합니다.
    OpenCL Linux Cyclone V SoC TGZ용 런타임 환경.
    d. aocl-rte를 다운로드한 후 .arm32.tgz file, 그것을 풀어서
    본인이 소유한 디렉토리.
  4. 압축을 푼 aocl-rte를 넣으세요. 이미지의 ext32 파티션에 있는 /home/root/opencl_arm32_rte 디렉토리에 .arm3 디렉토리를 추가합니다. file.
  5. 사용자 정의 플랫폼의 하드웨어 폴더를 삭제한 다음 사용자 정의 플랫폼을 /home/root/opencl_arm32_rte의 보드 하위 디렉토리에 넣습니다.
  6. init_opencl.sh를 생성합니다 file 다음 내용이 있는 /home/root 디렉토리: export ALTERAOCLSDKROOT=/home/root/opencl_arm32_rte export AOCL_BOARD_PACKAGE_ROOT=$ALTERAOCLSDKROOT/board/ 내보내기 PATH=$ALTERAOCLSDKROOT/bin:$PATH 내보내기 LD_LIBRARY_PATH=$ALTERAOCLSDKROOT/host/arm32/lib:$LD_LIBRARY_PATH insmod $AOCL_BOARD_PACKAGE_ROOT/driver/aclsoc_drv.ko
    SDK 사용자는 소스 ./init_opencl.sh 명령을 실행하여 환경 변수와 OpenCL Linux 커널 드라이버를 로드합니다.
  7. 프리로더를 업데이트해야 하는 경우 DTS files 또는 Linux 커널의 경우 SoC EDS의 arm-linux-gnueabihf-gcc 컴파일러가 필요합니다. Intel SoC FPGA Embedded Design Suite 사용자 가이드에 설명된 지침에 따라 소프트웨어를 취득하고 다시 컴파일하고 관련 file마운트된 fat32 파티션에 있습니다.
    주목: 사용자 정의 플랫폼의 핀 사용법이 c5soc와 다른 경우 프리로더를 업데이트해야 할 가능성이 높습니다.
    기억하세요: Linux 커널을 재컴파일하는 경우 동일한 Linux 커널 소스로 Linux 커널 드라이버를 재컴파일하세요. files. Linux 커널 드라이버와 Linux 커널 사이에 불일치가 있는 경우 드라이버가 로드되지 않습니다. 또한 CMA를 활성화해야 합니다.
    자세한 내용은 Linux 커널 재컴파일을 참조하세요.
  8. hello_world OpenCL ex를 컴파일합니다.amp사용자 정의 플랫폼 지원을 사용하여 le 디자인을 만듭니다. .rbf 이름을 바꿉니다. file Intel FPGA SDK for OpenCL Offline Compiler가 opencl.rbf로 생성하고 SD 플래시 카드 이미지 내의 fat32 파티션에 저장합니다.
    hello_world ex를 다운로드할 수 있습니다ampOpenCL Design Ex의 le 디자인ampAltera에 대한 페이지 web대지.
    9. 필요한 모든 것을 저장한 후 file플래시 카드 이미지에 s를 추가하려면 다음 명령을 호출하세요.
    a. 동기화
    b. /media/disk1 마운트 해제
    c. 언마운트 어디 는 3페이지 3의 ext3 파티션을 마운트하는 데 사용하는 디렉토리 이름입니다(예:amp파일, /media/disk2).
    d. losetup -d /dev/loop0
    e. losetup -d /dev/loop1
  9. 다음 명령을 호출하여 SD 플래시 카드 이미지를 압축합니다: tar cvfz .tgz 리눅스_sd_카드_이미지
  10. 전달하다 .tgz file 사용자 정의 플랫폼의 루트 디렉토리 내부에 있습니다.
  11. SD 플래시 카드 이미지를 테스트하려면 다음 작업을 수행하세요.
    a. 압축되지 않은 결과 이미지를 마이크로 SD 플래시 카드에 기록합니다.
    b. 마이크로 SD 플래시 카드를 SoC FPGA 보드에 삽입합니다.
    c. 보드에 전원을 켜세요.
    d. aocl diagnose 유틸리티 명령을 호출합니다.

관련 링크

  • Intel SoC FPGA 임베디드 디자인 스위트 사용자 가이드
  • OpenCL 디자인 ExampAltera에 대한 페이지 web대지
  • 16페이지의 Linux 커널 재컴파일
    CMA를 활성화하려면 먼저 Linux 커널을 다시 컴파일해야 합니다.
  • FPGA 보드의 장치 이름 쿼리(진단)

1.6 Cyclone V SoC FPGA용 Linux 커널 컴파일
Cyclone V SoC FPGA 보드에서 OpenCL 애플리케이션을 실행하기 전에 Linux 커널 소스를 컴파일하고, OpenCL Linux 커널 드라이버를 컴파일하여 설치해야 합니다.

  1. 16페이지의 Linux 커널 재컴파일
    CMA를 활성화하려면 먼저 Linux 커널을 다시 컴파일해야 합니다.
  2. 17페이지의 OpenCL Linux 커널 드라이버 컴파일 및 설치 컴파일된 커널 소스에 대해 OpenCL Linux 커널 드라이버를 컴파일합니다.

1.6.1 Linux 커널 재컴파일
CMA를 활성화하려면 먼저 Linux 커널을 다시 컴파일해야 합니다.

  1. RocketBoards.org의 리소스 페이지에서 GSRD v14.0 – Linux 컴파일 링크를 클릭하세요. webLinux 커널 소스 코드를 다운로드하고 다시 빌드하는 방법에 대한 지침에 액세스할 수 있는 사이트입니다.
    OpenCL용™ Intel FPGA SDK와 함께 사용하려면 socfpga-3.13-rel14.0을 지정하십시오. .
  2. 참고: 빌드 프로세스는 arch/arm/configs/socfpga_defconfig를 생성합니다. file. 이것 file socfpga 기본 구성에 대한 설정을 지정합니다.
    arch/arm/configs/socfpga_defconfig의 맨 아래에 다음 줄을 추가합니다. file.
    구성_메모리_격리=y
    구성_CMA=y
    구성_DMA_CMA=y
    구성_CMA_디버그=y
    구성_CMA_크기_MBYTES=512
    CONFIG_CMA_크기_선택_MBYTES=y
    구성_CMA_정렬=8
    구성_CMA_영역=7
    CONFIG_CMA_SIZE_MBYTES 구성 값은 사용 가능한 물리적으로 연속된 총 메모리 수의 상한을 설정합니다. 더 많은 메모리가 필요한 경우 이 값을 늘릴 수 있습니다.
  3. 주목: SoC FPGA 보드에서 ARM 프로세서에 사용 가능한 총 물리적 메모리 양은 1GB입니다. 인텔은 CMA 관리자를 1GB에 가깝게 설정하는 것을 권장하지 않습니다.
  4. make mrproper 명령을 실행하여 현재 구성을 정리합니다.
  5. make ARCH=arm socfpga_deconfig 명령을 실행합니다.
    ARCH=arm은 ARM 아키텍처를 구성하고자 함을 나타냅니다.
    socfpga_defconfig는 기본 socfpga 구성을 사용하고자 함을 나타냅니다.
  6. export CROSS_COMPILE=arm-linux-gnueabihf- 명령을 실행합니다.
    이 명령은 CROSS_COMPILE 환경 변수를 설정하여 원하는 도구 체인의 접두사를 지정합니다.
  7. make ARCH=arm zImage 명령을 실행합니다. 결과 이미지는 arch/arm/boot/zImage에서 사용할 수 있습니다. file.
  8. zImage를 배치하세요 file 플래시 카드 이미지의 fat32 파티션으로. 자세한 지침은 Rocketboards.org의 Cyclone V SoC FPGA 특정 GSRD 사용자 설명서를 참조하세요.
  9. 참고: OpenCL Linux 커널 드라이버를 올바르게 삽입하려면 먼저 SDKgenerated.rbf를 로드하세요. file FPGA에.
    .rbf를 생성하려면 file, SDK 디자인을 컴파일합니다.ampCyclone V SoC 개발 키트 참조 플랫폼을 대상 커스텀 플랫폼으로 지정했습니다.
    9. .rbf를 배치합니다. file 플래시 카드 이미지의 fat32 파티션으로.
    주의: fat32 파티션에는 zImage가 모두 포함되어야 합니다. file 그리고 .rbf file.rbf 없이 file드라이버를 삽입하면 치명적인 오류가 발생합니다.
  10. 이전에 수정하거나 생성한 SD 카드 이미지가 포함된 프로그래밍된 마이크로 SD 카드를 Cyclone V SoC 개발 키트에 삽입한 다음 SoC FPGA 보드에 전원을 켭니다.
  11. uname -r 명령을 실행하여 설치된 Linux 커널 버전을 확인합니다.
  12. SoC FPGA 보드에 전원이 켜진 상태에서 커널에서 CMA가 성공적으로 활성화되었는지 확인하려면 grep init_cma /proc/kallsyms 명령을 실행합니다.
    출력이 비어 있지 않으면 CMA가 활성화됩니다.
  13. 재컴파일된 Linux 커널을 SDK와 함께 사용하려면 Linux 커널 드라이버를 컴파일하고 설치해야 합니다.

관련 링크

  • 골든 시스템 레퍼런스 디자인(GSRD) 사용자 매뉴얼
  • 13페이지 SD 플래시 카드 이미지 구축
    Cyclone V SoC FPGA는 칩상의 완전한 시스템이므로 시스템의 전체 정의를 제공해야 합니다.

1.6.2 OpenCL Linux 커널 드라이버 컴파일 및 설치
컴파일된 커널 소스에 대해 OpenCL Linux 커널 드라이버를 컴파일합니다.

드라이버 소스는 Intel FPGA Runtime Environment for OpenCL의 Cyclone V SoC FPGA 버전에서 사용할 수 있습니다. 또한 OpenCL에서 생성된 Intel FPGA SDK for OpenCL-generated .rbf를 로드했는지 확인하세요. file Linux 커널 모듈이 잘못 설치되는 것을 방지하기 위해 FPGA에 넣습니다.

  1. Altera 다운로드 센터에서 Intel FPGA Runtime Environment for OpenCL 패키지의 Cyclone V SoC FPGA 버전을 다운로드하세요. web대지.
    a. Quartus Prime 소프트웨어 버전 옆에 있는 다운로드 버튼을 클릭하세요.
    b. 릴리스 버전, 운영 체제 및 다운로드 방법을 지정하세요.
    c. 추가 소프트웨어 탭을 클릭하고 Intel FPGA 다운로드를 선택합니다.
    OpenCL Linux Cyclone V SoC TGZ용 런타임 환경.
    d. aocl-rte를 다운로드한 후 .arm32.tgz file, 그것을 풀어서
    본인이 소유한 디렉토리.
    드라이버 소스는 aocl-rte에 있습니다. .arm32/board/c5soc/ 드라이버 디렉토리.
  2. OpenCL Linux 커널 드라이버를 다시 컴파일하려면 드라이버의 Make에서 KDIR 값을 설정하세요.file Linux 커널 소스가 포함된 디렉토리로 files.
  3. 툴 체인의 접두사를 나타내려면 export CROSS_COMPILE=arm-linux-gnueabihf- 명령을 실행하세요.
  4. make clean 명령을 실행합니다.
  5. make 명령을 실행하여 aclsoc_drv.ko를 생성합니다. file.
  6. opencl_arm32_rte 디렉토리를 Cyclone V SoC FPGA 보드로 전송합니다.
    scp -r 실행 root@당신의-아이피주소: 명령은 런타임 환경을 /home/root 디렉토리에 저장합니다.
  7. SD 카드 이미지를 빌드할 때 생성한 init_opencl.sh 스크립트를 실행합니다.
  8.  aocl diagnose 유틸리티 명령을 호출합니다. init_opencl.sh를 성공적으로 실행한 후 diagnose 유틸리티가 통과 결과를 반환합니다.

1.7 알려진 문제
현재 Cyclone V SoC 개발 키트 참조 플랫폼에서 OpenCL용 Intel FPGA SDK를 사용하는 데에는 특정 제한이 있습니다.

  1. clGetDeviceInfo() 호출의 CL_DEVICE_VENDOR 및 CL_DEVICE_NAME 문자열에서 보고된 공급업체 및 보드 이름을 재정의할 수 없습니다.
  2. 호스트가 공유 DDR 시스템(즉, HPS DDR)에서 상수 메모리를 할당하고 커널 실행 후 상수 메모리를 수정하면 메모리의 데이터가 오래될 수 있습니다. 이 문제는 FPGA 코어가 CPU-HPS DDR 트랜잭션을 엿볼 수 없기 때문에 발생합니다.
    이후 커널 실행에서 오래된 데이터에 액세스하는 것을 방지하려면 다음 해결 방법 중 하나를 구현합니다.
    • 초기화 후에는 상수 메모리를 수정하지 마세요.
    • 여러 개의 __constant 데이터 세트가 필요한 경우 여러 개의 상수 메모리 버퍼를 생성하세요.
    • 가능하다면 가속기 보드의 FPGA DDR에 상수 메모리를 할당하세요.
  3. ARM용 SDK 유틸리티는 프로그램 및 진단 유틸리티 명령만 지원합니다.
    플래시, 설치 및 제거 유틸리티 명령은 다음과 같은 이유로 Cyclone V SoC 개발 키트에 적용되지 않습니다.
    a. 설치 유틸리티는 aclsoc_drv Linux 커널 드라이버를 컴파일하고 SoC FPGA에서 활성화해야 합니다. 개발 머신은 컴파일을 수행해야 하지만, 이미 SoC FPGA용 Linux 커널 소스가 포함되어 있습니다. 개발 머신용 Linux 커널 소스는 SoC FPGA용과 다릅니다. SoC FPGA용 Linux 커널 소스의 위치는 SDK 사용자에게 알려지지 않을 가능성이 큽니다. 마찬가지로, 제거 유틸리티도 Cyclone V SoC 개발 키트에서 사용할 수 없습니다.
    또한 Cyclone V SoC 개발 키트의 기본 배포판에는 Linux 커널이 포함되지 않기 때문에 aclsoc_drv를 SoC 보드에 전달하는 것이 어렵습니다. file또는 GNU 컴파일러 컬렉션(GCC) 컴파일러입니다.
    b. 플래시 유틸리티에는 .rbf를 배치해야 합니다. file OpenCL 디자인을 마이크로 SD 플래시 카드의 FAT32 파티션에 삽입합니다. 현재 이 파티션은 SDK 사용자가 보드에 전원을 켤 때 마운트되지 않습니다. 따라서 파티션을 업데이트하는 가장 좋은 방법은 플래시 카드 리더와 개발 머신을 사용하는 것입니다.
  4. OpenCL 오프라인 컴파일러 실행 파일용 Intel FPGA SDK 간을 전환할 때 file다양한 보드 변형(즉, c5soc 및 c5soc_sharedonly)에 해당하는 s(.aocx)가 있는 경우 SDK의 프로그램 유틸리티를 사용하여 .aocx를 로드해야 합니다. file 새로운 보드 변형을 처음으로 사용하는 경우입니다. 새로운 보드 변형을 사용하여 호스트 애플리케이션을 실행하기만 했지만 FPGA에 다른 보드 변형의 이미지가 포함되어 있는 경우 치명적인 오류가 발생할 수 있습니다.
  5. .qxp file Quartus Prime 소프트웨어는 이 파티션의 타이밍 요구 사항을 일관되게 충족하기 때문에 인터페이스 파티션 할당은 포함되지 않습니다.
  6. 보드에 전원을 켜면 해당 미디어 액세스 제어(MAC) 주소가 임의의 숫자로 설정됩니다. LAN 정책에서 이 동작을 허용하지 않는 경우 다음 작업을 수행하여 MAC 주소를 설정합니다.
    a. U-Boot 전원을 켜는 동안 아무 키나 눌러 U-Boot 명령 프롬프트를 입력합니다.
    b. 명령 프롬프트에 setenv ethaddr 00:07:ed:00:00:03을 입력합니다.
    원하는 MAC 주소를 선택할 수 있습니다.
    c. saveenv 명령을 입력하세요.
    d. 보드를 재부팅합니다.

1.8 문서 개정 내역
표 1.
OpenCL Cyclone V SoC용 Intel FPGA SDK의 문서 개정 내역
개발 키트 참조 플랫폼 포팅 가이드

날짜 버전 변화
17월-XNUMX 2017.05.08 •유지보수 릴리스.
2016년 XNUMX월 2016.10.31 •OpenCL용 Altera SDK를 OpenCL용 Intel FPGA SDK로 리브랜딩했습니다.
•Altera 오프라인 컴파일러를 OpenCL 오프라인 컴파일러용 Intel FPGA SDK로 리브랜딩했습니다.
16월-XNUMX 2016.05.02 •SD 플래시 카드 이미지를 빌드하고 수정하는 방법에 대한 지침이 수정되었습니다.
•Linux 커널과 OpenCL Linux 커널 드라이버를 다시 컴파일하는 데 대한 지침이 수정되었습니다.
15월-XNUMX일 2015.11.02 •유지 관리 릴리스 및 Quartus II 인스턴스를 Quartus Prime으로 변경했습니다.
15월-XNUMX 15.0.0 •FPGA 재구성에서 FPGA 코어를 재프로그래밍하는 명령어 제거
고양이를 호출하여 .rbf 이미지로 file이름>.rbf
> /dev/ fpga0 명령을 사용하는 것은 권장되지 않습니다.
14 년 XNUMX 월 14.1.0 •문서 이름이 Altera Cyclone V SoC 개발 키트 참조 플랫폼 포팅 가이드로 변경되었습니다.
• aocl 프로그램에 대한 재프로그램 유틸리티를 업데이트했습니다.filename>.aocx 유틸리티 명령.
•진단 유틸리티를 aocl diagnose 및 aocl diagnose로 업데이트했습니다. 유틸리티 명령.
• 보장된 타이밍 클로저 흐름을 위한 타이밍이 깨끗한 파티션을 생성하기 위해 c5soc 보드 파티션을 포팅하고 수정하는 방법에 대한 지침을 포함하도록 참조 플랫폼을 SoC 보드로 이식하는 절차를 업데이트했습니다.
• 다음 작업의 절차를 설명하기 위해 포팅된 참조 플랫폼 업데이트 주제를 삽입했습니다.
1.보드 파티션의 하드 프로세서 시스템(HPS) 블록 제외
2. SD 플래시 카드 이미지 업데이트
•SD 플래시 카드 이미지 구축 섹션을 업데이트했습니다. SoC 임베디드 디자인 스위트(EDS)에서 제공하는 이미지 대신 Golden System Reference Design(GSRD) 이미지의 버전 14.0을 시작점으로 사용하는 것이 좋습니다.
•Linux 커널 및 OpenCL Linux 커널 드라이버 재컴파일 섹션을 업데이트했습니다.
1. CROSS COMPILE 변수를 설정하는 지침이 추가되었습니다.
2. CMA가 성공적으로 활성화되었는지 확인하기 위해 실행하는 명령을 변경했습니다.
14월-XNUMX일 14.0.0 •최초 릴리스.

문서 / 리소스

OpenCL을 위한 인텔 FPGA SDK [PDF 파일] 사용자 가이드
OpenCL용 FPGA SDK, FPGA SDK, OpenCL용 SDK, SDK

참고문헌

댓글을 남겨주세요

이메일 주소는 공개되지 않습니다. 필수 항목은 표시되어 있습니다. *