VisualApplets 실행 시점에 설계 매개변수에 접근하기 위한 다양한 모델을 지원합니다:
-
HAP 파일을 기반으로 한 eVA 런타임 환경 사용
-
생성된 GenICam XML 코드를 기반으로 한 GenICam API 사용
-
다음에 의해 생성된 일반적이고 설계에 특화된 C API 코드를 사용하여 VisualApplets
VisualApplets FPGA 설계의 합성 및 구현을 제어합니다. 그 결과로 생성된 설계는 Basler의 독자적인 파일 형식(*.hap)으로 저장됩니다. 이 형식에는 FPGA용 구성 비트스트림과 설계별 소프트웨어 인터페이스를 구현하기 위한 수단이 포함되어 있습니다.
일반적으로 VisualApplets 연산자에는 런타임 중에 수정할 수 있는 동적 매개변수가 포함되어 있습니다. HAP 파일에는 설계별 매개변수에 쉽게 접근하는 데 필요한 모든 정보가 포함되어 있습니다.
사용자 플랫폼에서 런타임 소프트웨어가 정상적으로 작동하려면 다음 요구 사항을 충족해야 합니다:
-
사용자는 구성을 수행해야 하므로 FPGA 비트스트림에 액세스할 수 있어야 합니다. 이를 위해 런타임 인터페이스에서는 다음 함수를 제공합니다.
vaRt_GetConfig(). -
설계 레지스터의 슬레이브 인터페이스에 접근하려면 사용자는 다음 함수들을 구현해야 합니다.
WriteReg32(),ReadReg32(), 또는 선택적으로WriteReg64()및ReadReg64(). 런타임 소프트웨어는 함수가 호출될 때 이러한 함수에 대해 알림을 받습니다.vaRt_InitParams()이(가) 호출될 때까지.
그러면 VisualApplets 비트스트림을 구성할 수 있으며, 런타임 소프트웨어는 설계 매개변수를 읽고 쓸 수 있습니다.
레지스터 액세스 함수는 다음 함수 유형을 준수해야 합니다:
typedef int ReadReg32(void* device, const uintptr_t address, uint32_t *value)
typedef int WriteReg32(void* device, const uintptr_t address, uint32_t value)
typedef int ReadReg64(void* device, const uintptr_t address, uint64_t *value)
typedef int WriteReg64(void* device, const uintptr_t address, uint64_t value)
이 소프트웨어 인터페이스 라이브러리는 VisualApplets 설계를 제어하기 위한 추가 기능을 제공합니다. 다음 표에는 모든 액세스 함수가 나열되어 있습니다:
|
번호. |
기능 |
설명 |
|---|---|---|
|
1 |
|
하드웨어 애플릿을 엽니다 |
|
2 |
|
다음에 의해 열려 있는 하드웨어 애플릿을 닫습니다. |
|
3 |
|
FPGA의 구성 비트 스트림에 대한 포인터를 반환합니다. |
|
4 |
|
애플릿의 시계 신호(clock) 최대 주파수, 애플릿의 iDesignClk 네트, 대상 플랫폼에 대한 정보, 버전 정보 등과 같은 애플릿 속성을 조회하는 기능. |
|
5 |
|
디자인을 구성하는 프로세스의 개수를 반환합니다. |
|
6 |
|
사용 중인 외부 인터페이스 포트의 수를 반환합니다. 모든 종류의 인터페이스
포트는 하나의 목록으로 통합되며, 목록 내의 순서는 해당 포트의 논리적 번호에
해당합니다. 포트 이름과 속성은 아래에 명시된 함수를 통해 얻을 수 있습니다.
|
|
7 |
|
지정된 논리 포트 번호를 가진 인터페이스 포트의 이름을 가져옵니다. |
|
8 |
|
연결된 연산자의 이름, 이 포트를 제어하는 프로세스, 이 포트의 현재 이미지 형식 설정 등 I/O 포트 속성을 조회합니다. |
|
9 |
|
디자인의 매개변수 개수를 반환합니다. |
|
10 |
|
주어진 매개변수 번호에 대해 해당 이름이 반환됩니다. |
|
11 |
|
주어진 매개변수 번호에 대해 해당 매개변수의 ID가 반환됩니다. |
|
12 |
|
주어진 매개변수 이름에 대해 해당 매개변수의 ID가 반환됩니다. |
|
13 |
|
쿼리 매개변수 속성. |
|
14 |
|
매개변수 인터페이스를 구성하고 매개변수를 기본값으로 초기화합니다. |
|
15 |
|
쿼리 매개변수 값. |
|
16 |
|
매개변수 배열을 조회합니다. |
|
17 |
|
매개변수 값을 설정합니다. |
|
18 |
|
매개변수 배열을 설정합니다. |
|
19 |
|
마스터 활성화 신호를 설정하십시오. |
|
20 |
|
VisualApplets 설계의 프로세스를 활성화합니다. |
|
21 |
|
VisualApplets 설계 프로세스를 재설정합니다. |
|
22 |
|
주어진 오류 코드에 대한 쿼리 설명. |
정보를 조회하거나 매개변수를 구성하려면, 데이터를
런타임 인터페이스를 통해 교환해야 합니다. 인터페이스 기능을 단순하게 유지하면서도 유형 안전성을
보장하기 위해, 데이터에 대한 추상화 메커니즘이 구현되어 있습니다. 서로 다른
유형의 데이터를 전달해야 할 때마다, va_data 이 사용되며,
여기에는 데이터에 대한 참조와 기본 데이터 유형에 대한 정보가 포함됩니다. 이 데이터
구조는 사용자가 생성하지만, 아래에 나열된 전용 함수를 통해 구성됩니다.
다음 표는 이 방법으로 처리되는 데이터 유형을 보여줍니다:
|
Data Type |
설명 |
|---|---|
|
|
32비트 정수로 지정된 열거형 항목. |
|
|
32비트 부호 있는 정수. |
|
|
32비트 부호 없는 정수. |
|
V |
64비트 부호 있는 정수. |
|
|
64비트 부호 없는 정수. |
|
|
부동소수점 값, 이중 정밀도. |
|
|
Array of 32-bit signed integer numbers. |
|
|
32비트 부호 없는 정수 배열. |
|
|
64비트 부호 있는 정수 배열. |
|
|
64비트 부호 없는 정수 배열. |
|
|
double형 숫자로 구성된 배열. |
|
|
다음 형식으로 제공되는 문자열 |
이전에 생성된 va_data 데이터 통신을 설정하기 위한
구조체(vaData)는 다음 함수를 통해 처리됩니다:
va_data* va_data_enum(va_data* vaData, int32_t *data)
va_data* va_data_int32(va_data* vaData, int32_t *data)
va_data* va_data_uint32(va_data* vaData, uint32_t *data)
va_data* va_data_int64(va_data* vaData, int64_t *data)
va_data* va_data_uint64(va_data* vaData, uint64_t *data)
va_data* va_data_double(va_data* vaData, double *data)
va_data* va_data_int32_array(va_data* vaData, int32_t *data, size_t elementCount)
va_data* va_data_uint32_array (va_data* vaData, uint32_t *data, size_t elementCount)
va_data* va_data_int64_array (va_data* vaData, int64_t *data, size_t elementCount)
va_data* va_data_uint64_array (va_data* vaData, uint64_t *data, size_t elementCount)
va_data* va_data_double_array (va_data* vaData, double *data, size_t elementCount)
va_data* va_data_string(va_data* vaData, char *data, size_t strSize)
va_data* va_data_const_string(va_data* vaData, const char **data)
문자열 통신 방식에는 다음 두 가지 옵션이 있습니다.
-
char 배열 제공
va_data_string(). 그러면 쿼리된 문자열 데이터가 해당 배열로 복사됩니다. -
포인터 제공
const char*. 그런 다음, 유형의 정보가 있을 때 내부 문자열 표현에 대한 포인터가 반환됩니다.VA_STRING는 쿼리됩니다. 이 방식을 사용할 때는 반환된 문자열의 유효 기간을 확인하십시오.
예제 코드:
다음 예제는 구성된 설계에 대한 설계 주파수를 조회하는 코드를 보여줍니다.
double desFreq;
va_data va_desFreq;
va_data_double(&va_desFreq,&desFreq);
vaRt_GetAppletProperty(hapHandle, "DesignFreq",&va_desFreq);
그 후, 변수 desFreq 요청하신 정보가 포함되어 있을 것입니다.
다음 표에는 지정된 런타임 액세스 함수에 대한 매개변수 및 반환 값에 대한 자세한 설명이 나와 있습니다.
|
기능 |
|
|---|---|
|
매개변수 1 |
열어야 할 hap 파일의 이름. |
|
Parameter 2 |
hap 핸들에 대한 반환 포인터. |
|
설명 |
지정된 이름으로 하드웨어 애플릿을 열고, hap 구조체에 대한 포인터를 반환합니다. 반환된 포인터는 다른 모든 인터페이스 함수에서 핸들로 사용됩니다. |
|
반환 값 |
0 : 확인 <0: Error opening applet |
|
기능 |
|
|---|---|
|
매개변수 1 |
Hap 핸들, 출처: |
|
설명 |
VA 하드웨어 애플릿을 닫습니다. |
|
반환 값 |
0 = 정상 <0 = Error closing HAP |
|
기능 |
|
|---|---|
|
매개변수 1 |
Hap 핸들, 출처: |
|
Parameter 2 |
대상 플랫폼 내 FPGA의 ID입니다. 단일 구성 HAP 파일의 경우 (현재 유일한 옵션) 이 매개변수는 -1로 고정될 수 있습니다. 그렇지 않은 경우, 이 매개변수는 VisualApplets 플랫폼을 생성하는 데 사용된 하드웨어 정의 파일에서 지정된 (선택 사항인) FPGA ID와 일치해야 합니다. |
|
Parameter 3 |
구성 비트스트림을 저장할 버퍼를 가리키는 포인터. |
|
Parameter 4 |
구성 비트스트림의 크기를 바이트 단위로 표시하십시오. |
|
설명 |
FPGA 설계에 대한 구성 비트스트림을 가져옵니다. 이 함수에는 두 가지 작동 모드가 있습니다: |
|
반환 값 |
0: 확인 <0: Error acquiring the bitstream |
|
기능 |
int vaRt_GetAppletProperty (va_hap_handle handle, const char* propName,va_data
* data)
|
|---|---|
|
매개변수 1 |
Hap 핸들, 출처: |
|
Parameter 2 |
조회할 부동산의 명칭. |
|
Parameter 3 |
통신에 사용될 데이터 구조체에 대한 포인터. |
|
설명 |
애플릿의 속성을 가져옵니다. 다음 속성을 조회할 수 있습니다:
속성은 위의 문자열 중 하나(매개변수 2를 통해 제공됨)로 식별되며,
매개변수 3을 통해 제공된 데이터 구조를 통해 전달됩니다.
유형이 |
|
반환 값 |
0: OK <0 : Can’t retrieve applet property |
|
기능 |
|
|---|---|
|
매개변수 1 |
Hap 핸들, 출처: |
|
Parameter 2 |
프로세스 수에 대한 반환값. |
|
설명 |
디자인을 구성하는 프로세스의 개수를 가져옵니다. |
|
반환 값 |
0: OK <0 : Can’t retrieve information |
|
기능 |
|
|---|---|
|
매개변수 1 |
Hap 핸들, 출처: |
|
Parameter 2 |
포트 수에 대한 반환값. |
|
설명 |
VA IP 코어에서 사용 중인 I/O 포트 수를 확인합니다. 반환된 숫자는 모든 인터페이스 포트가 등록된 내부적으로 관리되는 포트 목록의 크기를 나타내며, 목록 내의 위치는 I/O 포트의 논리 번호를 의미합니다. |
|
반환 값 |
0: OK <0 : Can’t retrieve information |
|
기능 |
|
|---|---|
|
매개변수 1 |
Hap 핸들, 출처: |
|
Parameter 2 |
논리 인터페이스 포트 번호로, 0과
다음에서 반환된 값 사이의 정수입니다. |
|
설명 |
주어진 논리 번호를 가진 인터페이스 포트의 이름을 가져옵니다. 동일한 종류의 포트가 여러 개 있는 경우, 이러한 포트는 접미사 _X 이며, X 는 포트 인덱스를 나타냅니다(예: DmaRd_0). |
|
반환 값 |
0: 확인; <0 : No port with given index found |
|
기능 |
|
|---|---|
|
매개변수 1 |
Hap 핸들, 출처: |
|
Parameter 2 |
I/O 포트 이름. |
|
Parameter 3 |
조회할 부동산의 명칭. |
|
Parameter 4 |
통신에 사용될 데이터 구조체에 대한 포인터. |
|
설명 |
지정된 이름의 I/O 포트에 대한 속성을 가져옵니다. 다음 속성을 조회할 수 있습니다:
속성은 위의 문자열 중 하나(매개변수 3을 통해 제공됨)로 식별되며,
매개변수 4를 통해 제공된 데이터 구조를 통해 전달됩니다.
다음 유형의 속성의 경우 |
|
반환 값 |
0: OK <0 : Can’t retrieve the requested property |
|
기능 |
|
|---|---|
|
매개변수 1 |
Hap 핸들, 출처: |
|
Parameter 2 |
저수준 액세스 함수에 제공되는 장치 핸들에 대한 포인터
|
|
Parameter 3 |
32비트 레지스터 읽기 함수를 위한 함수 포인터. |
|
Parameter 4 |
32비트 레지스터 쓰기 함수를 위한 함수 포인터. |
|
매개변수 5 |
64비트 레지스터 읽기 함수를 위한 함수 포인터. |
|
매개변수 6 |
64비트 레지스터 쓰기 함수를 위한 함수 포인터. |
|
설명 |
저수준 레지스터 액세스
함수를 제공하고, 이에 보드 인터페이스 포인터를 연결하여 매개변수 인터페이스를 초기화합니다. 초기화
절차에는 초기값 설정도 포함됩니다. 다른 모든 함수는
레지스터 액세스 함수와 관련하여 다음과 같은 옵션을 사용할 수 있습니다: |
|
반환 값 |
0: 매개변수 인터페이스가 성공적으로 초기화되었습니다. <0 : Error during initialization |
|
기능 |
|
|---|---|
|
매개변수 1 |
Hap 핸들, 출처: |
|
Parameter 2 |
매개변수 개수에 대한 반환값. |
|
설명 |
매개변수 인터페이스를 통해 액세스할 수 있는 애플릿의 매개변수 개수를 가져옵니다. 반환된 숫자는 사용 가능한 모든 매개변수가 등록된 내부적으로 관리되는 매개변수 목록의 크기를 나타내며, 목록 내의 위치는 매개변수의 논리적 번호를 정의합니다. |
|
반환 값 |
0: OK <0 : Can’t retrieve information |
|
기능 |
|
|---|---|
|
매개변수 1 |
Hap 핸들, 출처: |
|
Parameter 2 |
논리 매개변수 번호는 0과 다음에서 반환된
값 사이의 정수이며, |
|
Parameter 3 |
이름 문자열을 가리키는 포인터를 반환합니다. |
|
설명 |
주어진 논리 매개변수 번호를 통해 애플릿 매개변수의 이름을 가져옵니다. |
|
반환 값 |
0: OK; *name은 매개변수 name(0으로 종료됨)을 저장하는 정적 버퍼에 대한 포인터를 반환합니다. 이 버퍼는 이 함수의 다음 호출 시 덮어쓰일 수 있다는 점에 유의하십시오. <0 : Can’t retrieve information |
|
기능 |
|
|---|---|
|
매개변수 1 |
Hap 핸들, 출처: |
|
Parameter 2 |
논리 매개변수 번호는 0과 다음에서 반환된
값 사이의 정수이며, |
|
Parameter 3 |
매개변수 ID에 대한 반환 포인터. |
|
설명 |
애플릿의 매개변수 ID를 가져옵니다. 이 ID는 해당 매개변수에 접근하는 데 사용됩니다. |
|
반환 값 |
0: OK <0 : No parameter with given index found |
|
기능 |
|
|---|---|
|
매개변수 1 |
Hap 핸들, 출처: |
|
Parameter 2 |
다음에서 제공하는 값 중 하나일 수 있는 매개변수의 이름
|
|
Parameter 3 |
매개변수 ID에 대한 반환 포인터. |
|
설명 |
지정된 이름의 매개변수 ID를 가져옵니다. 이 ID는 해당 매개변수에 접근하는 데 사용됩니다. |
|
반환 값 |
0: OK <0 : No parameter with given name found |
|
기능 |
|
|---|---|
|
매개변수 1 |
Hap 핸들, 출처: |
|
Parameter 2 |
매개변수 이름. |
|
Parameter 3 |
조회할 부동산의 명칭. |
|
Parameter 4 |
통신에 사용될 데이터 구조체에 대한 포인터. |
|
설명 |
애플릿 매개변수의 쿼리 속성입니다. 매개변수 유형에 따라
속성도 다릅니다. 사용 가능한
매개변수 속성 목록은 VA 엔진 사양서를 참조하십시오. 속성은 매개변수
3에 의해 지정된 문자열로 식별되며, 매개변수 4가 제공하는 데이터 구조를 통해 전달됩니다. 유형이
인 속성의 경우 |
|
반환 값 |
0: OK <0 : Can’t retrieve parameter property |
|
기능 |
|
|---|---|
|
매개변수 1 |
Hap 핸들, 출처: |
|
Parameter 2 |
매개변수 ID. |
|
Parameter 3 |
통신에 사용될 데이터 구조체에 대한 포인터입니다. 해당 데이터 요소는 획득된 값으로 덮어쓰게 됩니다. |
|
설명 |
매개변수 ID를 사용하여 애플릿 매개변수를 조회합니다. 데이터는
매개변수 3에 지정된 데이터 구조를 사용하여 전달됩니다. 필드 매개변수를 조회하려면 다음을 사용하십시오.
|
|
반환 값 |
0: 알겠습니다. <0 : Error querying the parameter. |
|
기능 |
|
|---|---|
|
매개변수 1 |
Hap 핸들, 출처: |
|
Parameter 2 |
매개변수 ID. |
|
Parameter 3 |
통신에 사용될 데이터 구조체에 대한 포인터입니다. 관련 데이터 요소들은 획득된 값으로 덮어쓰게 됩니다. |
|
Parameter 4 |
매개변수 필드 내에서 인덱스 시작 |
|
매개변수 5 |
쿼리 대상 요소 수 |
|
설명 |
매개변수 ID를 사용하여 애플릿의 쿼리 필드 매개변수에 데이터 요소로 구성된 배열을 채웁니다. 데이터는 매개변수 4에 의해 지정된 데이터 구조를 통해 전달됩니다. |
|
반환 값 |
0: 알겠습니다. <0 : Error querying the array. |
|
기능 |
|
|---|---|
|
매개변수 1 |
Hap 핸들, 출처: |
|
Parameter 2 |
매개변수 ID. |
|
Parameter 3 |
애플릿에 데이터를 전송하는 데 사용될 데이터 구조체에 대한 포인터. |
|
설명 |
지정된 이름의 애플릿 매개변수를 설정합니다. 데이터는 데이터
구조체(매개변수 4)를 통해 제공됩니다. 필드 매개변수를 설정하려면
v를 사용하십시오. |
|
반환 값 |
0: 알겠습니다. <0 : Error setting the parameter. |
|
기능 |
|
|---|---|
|
매개변수 1 |
Hap 핸들, 출처: |
|
Parameter 2 |
매개변수 ID. |
|
Parameter 3 |
애플릿에 값을 전송하는 데 사용될 데이터 구조에 대한 포인터. |
|
Parameter 4 |
매개변수 필드 내에서 인덱스를 시작합니다. |
|
매개변수 5 |
설정해야 할 요소의 개수. |
|
설명 |
주어진 이름의 애플릿 필드 매개변수를 데이터 요소 배열을 제출하여 설정합니다. 데이터는 데이터 구조체(매개변수 3)를 통해 제공됩니다. |
|
반환 값 |
0: 알겠습니다. <0 : Error setting the parameter field. |
|
기능 |
|
|---|---|
|
매개변수 1 |
Hap 핸들, 출처: |
|
Parameter 2 |
글로벌 활성화 설정을 적용할 상태(1 또는 0). |
|
설명 |
전역 활성화 설정을 1(활성=1) 또는 0(활성=0)으로 설정하십시오. |
|
반환 값 |
0: OK <0 : Error setting the global enable state. |
|
기능 |
|
|---|---|
|
매개변수 1 |
Hap 핸들, 출처: |
|
Parameter 2 |
모든 프로세스를 한 번에 식별하기 위한 프로세스 번호 또는 ((unsigned int)-1). |
|
Parameter 3 |
enable을 설정해야 할 상태(1 또는 0). |
|
설명 |
프로세스(또는 모든 프로세스)의 활성화 상태를 1(활성=1) 또는 0 (활성=0)으로 설정합니다. |
|
반환 값 |
0: 알겠습니다. <0 : Error setting the process enable state. |
|
기능 |
|
|---|---|
|
매개변수 1 |
Hap 핸들, 출처: |
|
Parameter 2 |
모든 프로세스를 한 번에 식별하기 위한 프로세스 번호 또는 ((unsigned int)-1). |
|
설명 |
지정된 논리 프로세스 번호(또는 모든 프로세스)에 대해 프로세스를 재설정합니다.
해당 프로세스의 재설정 신호가 활성화되었다가 다시 해제됩니다.
해당 프로세스의 활성화 신호는 변경되지 않습니다. 사용법
|
|
반환 값 |
0: 알겠습니다. <0 : Cannot reset the process. |
|
기능 |
|
|---|---|
|
매개변수 1 |
Hap 핸들, 출처: |
|
매개변수2 |
다음 출처의 코드: |
|
설명 |
지정된 오류 코드에 해당하는 오류 메시지 문자열을 조회합니다. |
|
반환 값 |
NULL이 아님: 오류 설명 (0으로 끝나는 C 문자열) NULL: 설명이 없습니다. |
주어진 설계의 경우, VisualApplets 는 GenICam XML 코드를 생성할 수 있습니다. 대상 플랫폼이 GenICam 호환 인터페이스를 통해 소프트웨어에 연결된 경우, 이 옵션을 사용하면 이미지 처리 매개변수를 GenICam API에 원활하게 통합할 수 있습니다. 별도의 소프트웨어 구성 요소가 필요하지 않습니다.
매개변수 액세스 기능을 기존 마스터 파일( GenICam XML )에 통합해야 하는 경우, 일부 후처리가 필요합니다. 이는 일반적으로 VA IP 코어를 임베드하기 전에 플랫폼이 이미 GenICam 를 통해 제어되고 있는 경우에 해당합니다.
매개변수 액세스를 기존 마스터 GenICam XML 파일에 통합하려면:
-
VisualApplets 명령어로 생성된 XML 파일의 헤더 부분을 잘라내세요.
-
카테고리, 변수 및 레지스터에 대한 나머지 코드를 마스터 파일인 XML 에 복사하십시오.
VisualApplets 사용자 정의 게시물 처리 작업을 호출할 수 있으므로 이 단계를 자동화할 수 있습니다.
주어진 설계에 대해, VisualApplets 는 범용 C API 코드를 생성할 수 있습니다. 이 코드는 플랫폼 독립적인 ANSI-C 코드입니다. 이 방식은 임베디드 시스템(예: Zynq7000)에서의 소프트웨어 통합에 매우 적합합니다.
생성된 코드는 다음과 같은 인터페이스를 제공합니다:
#include <stdint.h>
typedef int (*write_func_t)(void* boardHandle,int address, uint64_t value, size_t sizeInBytes);
int (*read_func_t)(void* boardHandle,int address, uint64_t *value, size_t sizeInBytes);
enum VariableTypes_enum{
TYPE_UNKNOWN = 0,
TYPE_INT = 1,
TYPE_FLOAT = 2,
TYPE_STRING = 3
};
typedef enum VariableTypes_enum VariableType_t;
enum AccessMode_enum{
RO,
WO,
RW
};
typedef enum AccessMode_enum AccessMode_t;
int va_init(void* boardHandle, write_func_t wrFunc, read_func_t rdFunc);
int va_set_property(const char* propName, const char* propValue);
int va_get_int_value(const char* varName, int64_t *retValue);
int va_set_int_value(const char* varName, int64_t value);
int va_get_float_value(const char* varName, double *retValue);
int va_set_float_value(const char* varName, double value);
int va_get_string_value(const char* varName, const char **retValue);
int va_get_enum_value(const char* varName, const char** retValue);
int va_set_enum_value(const char* varName, const char* value);
int va_get_enum_item_count(const char* varName, int64_t *itemCount);
int va_get_enum_item_info(const char* varName, int64_t index, const char** itemName, int64_t *itemValue);
int va_query_variables_count(int32_t *retCount);
int va_query_variable_name(int32_t index, const char** retName);
int va_query_variable_type(const char* varName, VariableType_t *type);
int va_query_int_variable_properties(const char* varName,
int64_t *from,
int64_t *to,
int64_t *inc,
AccessMode_t *access);
int va_query_float_variable_properties(const char* varName,
double *from,
double *to,
double *inc,
AccessMode_t *access);
다음과 같이 호출하여 인터페이스를 초기화합니다. va_init().
VA IP 코어의 레지스터 슬레이브 인터페이스에 대한 쓰기 및 읽기 액세스를 위한
콜백 함수가 등록됩니다. 주어진 boardHandle 이 정보는 저장되어,
이러한 쓰기 및 읽기 함수가 호출될 때마다 제공됩니다. 일련의 쿼리 함수는
범용 런타임 인터페이스를 구현하기 위한 기본 메커니즘을 제공합니다. 주어진 설계에 대해, 일련의
set 함수와 get 함수는 매개변수를 이름으로 참조하여 매개변수에 접근할 수 있게 해줍니다.
이러한 함수는 설계 매개변수에 대한 접근을, 레지스터 접근을 위한 콜백 함수를 통해
하드웨어의 레지스터에 대한 접근으로 변환하는 역할을 수행합니다.

이전

