OpenCores
URL https://opencores.org/ocsvn/pcie_ds_dma/pcie_ds_dma/trunk

Subversion Repositories pcie_ds_dma

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /pcie_ds_dma/trunk/soft/linux/common
    from Rev 5 to Rev 6
    Reverse comparison

Rev 5 → Rev 6

/utils/utypes.h
1,351 → 1,351
/***************************************************
*
* UTYPES.H - define usefull types.
*
* (C) Instrumental Systems Corp. Ekkore, Dec. 1997-2001
*
****************************************************/
 
 
#ifndef _UTYPES_H_
#define _UTYPES_H_
 
#include "utypes_linux.h"
 
 
 
/*************************************
*
* Types for MSDOS
*/
 
 
#ifdef __MSDOS__
 
typedef unsigned char UINT08;
typedef signed char SINT08;
typedef unsigned short UINT16;
typedef signed short SINT16;
typedef unsigned long UINT32;
typedef signed long SINT32;
 
typedef unsigned char U08, *PU08;
typedef signed char S08, *PS08;
typedef unsigned short U16, *PU16;
typedef signed short S16, *PS16;
typedef unsigned long U32, *PU32;
typedef signed long S32, *PS32;
 
typedef float REAL32, *PREAL32;
typedef double REAL64, *PREAL64;
 
//typedef enum{ FALSE=0, TRUE=1} BOOL;
typedef unsigned char UCHAR;
typedef unsigned short USHORT;
typedef unsigned long ULONG;
typedef unsigned long HANDLE;
 
#endif /* __MSDOS__ */
 
 
/*************************************
*
* Types for Windows
*/
 
 
#ifdef _WIN32
 
typedef unsigned char UINT08;
typedef signed char SINT08;
typedef unsigned short UINT16;
typedef signed short SINT16;
typedef unsigned int UINT32;
typedef signed int SINT32;
 
typedef unsigned char U08, *PU08;
typedef signed char S08, *PS08;
typedef unsigned short U16, *PU16;
typedef signed short S16, *PS16;
typedef unsigned int U32, *PU32;
typedef signed int S32, *PS32;
 
#if _MSC_VER == 1200
#else
typedef unsigned long long int U64, *PU64;
typedef signed long long int S64, *PS64;
#endif
 
typedef float REAL32, *PREAL32;
typedef double REAL64, *PREAL64;
 
#ifdef _WIN64
typedef wchar_t BRDCHAR;
#define _BRDC(x) L ## x
#define BRDC_strlen wcslen
#define BRDC_strcpy wcscpy
#define BRDC_strncpy wcsncpy
#define BRDC_strcmp wcscmp
#define BRDC_stricmp _wcsicmp
#define BRDC_strnicmp wcsnicmp
#define BRDC_strcat wcscat
#define BRDC_strchr wcschr
#define BRDC_strstr wcsstr
#define BRDC_strtol wcstol
#define BRDC_strtoul wcstoul
#define BRDC_strtod wcstod
#define BRDC_atol _wtol
#define BRDC_atoi _wtoi
#define BRDC_atoi64 _wtoi64
#define BRDC_atof _wtof
#define BRDC_printf wprintf
#define BRDC_fprintf fwprintf
#define BRDC_sprintf swprintf
#define BRDC_vsprintf vswprintf
#define BRDC_sscanf swscanf
#define BRDC_fopen _wfopen
#define BRDC_sopen _wsopen
#define BRDC_fgets fgetws
#define BRDC_fputs fputws
#define BRDC_getenv _wgetenv
#define BRDC_main wmain
#else
typedef char BRDCHAR;
#define _BRDC(x) x
#define BRDC_strlen strlen
#define BRDC_strcpy strcpy
#define BRDC_strncpy strncpy
#define BRDC_strcmp strcmp
#define BRDC_stricmp _stricmp
#define BRDC_strnicmp _strnicmp
#define BRDC_strcat strcat
#define BRDC_strchr strchr
#define BRDC_strstr strstr
#define BRDC_strtol strtol
#define BRDC_strtoul strtoul
#define BRDC_strtod strtod
#define BRDC_atol atol
#define BRDC_atoi atoi
#define BRDC_atoi64 _atoi64
#define BRDC_atof atof
#define BRDC_printf printf
#define BRDC_fprintf fprintf
#define BRDC_sprintf sprintf
#define BRDC_vsprintf vsprintf
#define BRDC_sscanf sscanf
#define BRDC_fopen fopen
#define BRDC_sopen sopen
#define BRDC_fgets fgets
#define BRDC_fputs fputs
#define BRDC_getenv getenv
#define BRDC_main main
#endif
 
#endif /* _WIN32 */
 
 
/*************************************
*
* Types for TMS320C3x/C4x
*/
 
 
#if defined(_TMS320C30) || defined(_TMS320C40 )
 
/*
typedef unsigned char UINT08;
typedef signed char SINT08;
typedef unsigned short UINT16;
typedef signed short SINT16;
*/
typedef unsigned int UINT32;
typedef signed int SINT32;
 
typedef unsigned int U32, *PU32;
typedef signed int S32, *PS32;
 
typedef float REAL32, *PREAL32;
typedef double REAL64, *PREAL64;
 
typedef UINT32 ULONG;
typedef UINT32 USHORT;
typedef UINT32 UCHAR;
 
#endif /* _TMS320C30 || _TMS320C40 */
 
 
/*************************************
*
* Types for TMS320C6x
*/
 
 
#ifdef _TMS320C6X
 
typedef unsigned char UINT08;
typedef signed char SINT08;
typedef unsigned short UINT16;
typedef signed short SINT16;
typedef unsigned int UINT32;
typedef signed int SINT32;
 
typedef unsigned char U08, *PU08;
typedef signed char S08, *PS08;
typedef unsigned short U16, *PU16;
typedef signed short S16, *PS16;
typedef unsigned int U32, *PU32;
typedef signed int S32, *PS32;
 
typedef unsigned long long int U64, *PU64;
typedef signed long long int S64, *PS64;
 
typedef float REAL32, *PREAL32;
typedef double REAL64, *PREAL64;
 
typedef UINT32 ULONG;
typedef UINT16 USHORT;
typedef UINT08 UCHAR;
 
#endif /* _TMS320C6X */
 
 
/*************************************
*
* Types for ADSP2106x
*/
 
 
#if defined(__ADSP21060__) || defined(__ADSP21061__) || defined(__ADSP21062__)|| defined(__ADSP21065L__)
 
typedef unsigned int UINT32;
typedef signed int SINT32;
 
typedef unsigned int U32, *PU32;
typedef signed int S32, *PS32;
 
typedef float REAL32, *PREAL32;
typedef double REAL64, *PREAL64;
 
typedef UINT32 ULONG;
typedef UINT32 USHORT;
typedef UINT32 UCHAR;
 
#endif /* __ADSP2106x__ */
 
/*************************************
*
* Types for ADSP2116x
*/
 
 
#if defined(__ADSP21160__) || defined(__ADSP21161__)
 
typedef unsigned int UINT32;
typedef signed int SINT32;
 
typedef unsigned int U32, *PU32;
typedef signed int S32, *PS32;
 
typedef float REAL32, *PREAL32;
typedef double REAL64, *PREAL64;
 
typedef UINT32 ULONG;
typedef UINT32 USHORT;
typedef UINT32 UCHAR;
 
#endif /* __ADSP2116x__ */
 
/*************************************
*
* Types for ADSP-TS101
*/
 
 
#if defined(__ADSPTS__)
 
typedef unsigned int UINT32;
typedef signed int SINT32;
 
typedef unsigned int U32, *PU32;
typedef signed int S32, *PS32;
 
typedef unsigned long long int U64, *PU64;
typedef signed long long int S64, *PS64;
 
typedef float REAL32, *PREAL32;
typedef long double REAL64, *PREAL64;
 
typedef UINT32 ULONG;
typedef UINT32 USHORT;
typedef UINT32 UCHAR;
 
#endif /* __ADSPTS__ */
 
/*************************************
*
* Types for MC24
*/
 
#if defined(__GNUC__) && !defined(__linux__)
 
typedef unsigned char UINT08;
typedef signed char SINT08;
typedef unsigned short UINT16;
typedef signed short SINT16;
typedef unsigned long UINT32;
typedef signed long SINT32;
 
typedef unsigned char U08, *PU08;
typedef signed char S08, *PS08;
typedef unsigned short U16, *PU16;
typedef signed short S16, *PS16;
typedef unsigned long U32, *PU32;
typedef signed long S32, *PS32;
 
typedef unsigned long long int U64, *PU64;
typedef signed long long int S64, *PS64;
 
typedef float REAL32, *PREAL32;
typedef double REAL64, *PREAL64;
 
typedef unsigned char UCHAR;
typedef unsigned short USHORT;
typedef unsigned long ULONG;
typedef unsigned long HANDLE;
 
#endif /* __GNUC__ */
 
/*************************************
*
* Type Aliasing
*/
 
typedef UINT32 Uns;
 
/*************************************************
*
* Entry Point types
*
*/
#if !defined(WIN32) && !defined(__WIN32__)
//#ifndef WIN32
#define FENTRY
#define STDCALL
#else
#include <windows.h>
#define DllImport __declspec( dllimport )
#define DllExport __declspec( dllexport )
#define FENTRY DllExport
#define STDCALL __stdcall
#define huge
#endif // WIN32
 
 
#endif /* _UTYPES_H_ */
 
/*
* End of File
*/
 
 
 
/***************************************************
*
* UTYPES.H - define usefull types.
*
* (C) Instrumental Systems Corp. Ekkore, Dec. 1997-2001
*
****************************************************/
 
 
#ifndef _UTYPES_H_
#define _UTYPES_H_
 
#include "utypes_linux.h"
 
 
 
/*************************************
*
* Types for MSDOS
*/
 
 
#ifdef __MSDOS__
 
typedef unsigned char UINT08;
typedef signed char SINT08;
typedef unsigned short UINT16;
typedef signed short SINT16;
typedef unsigned long UINT32;
typedef signed long SINT32;
 
typedef unsigned char U08, *PU08;
typedef signed char S08, *PS08;
typedef unsigned short U16, *PU16;
typedef signed short S16, *PS16;
typedef unsigned long U32, *PU32;
typedef signed long S32, *PS32;
 
typedef float REAL32, *PREAL32;
typedef double REAL64, *PREAL64;
 
//typedef enum{ FALSE=0, TRUE=1} BOOL;
typedef unsigned char UCHAR;
typedef unsigned short USHORT;
typedef unsigned long ULONG;
typedef unsigned long HANDLE;
 
#endif /* __MSDOS__ */
 
 
/*************************************
*
* Types for Windows
*/
 
 
#ifdef _WIN32
 
typedef unsigned char UINT08;
typedef signed char SINT08;
typedef unsigned short UINT16;
typedef signed short SINT16;
typedef unsigned int UINT32;
typedef signed int SINT32;
 
typedef unsigned char U08, *PU08;
typedef signed char S08, *PS08;
typedef unsigned short U16, *PU16;
typedef signed short S16, *PS16;
typedef unsigned int U32, *PU32;
typedef signed int S32, *PS32;
 
#if _MSC_VER == 1200
#else
typedef unsigned long long int U64, *PU64;
typedef signed long long int S64, *PS64;
#endif
 
typedef float REAL32, *PREAL32;
typedef double REAL64, *PREAL64;
 
#ifdef _WIN64
typedef wchar_t BRDCHAR;
#define _BRDC(x) L ## x
#define BRDC_strlen wcslen
#define BRDC_strcpy wcscpy
#define BRDC_strncpy wcsncpy
#define BRDC_strcmp wcscmp
#define BRDC_stricmp _wcsicmp
#define BRDC_strnicmp wcsnicmp
#define BRDC_strcat wcscat
#define BRDC_strchr wcschr
#define BRDC_strstr wcsstr
#define BRDC_strtol wcstol
#define BRDC_strtoul wcstoul
#define BRDC_strtod wcstod
#define BRDC_atol _wtol
#define BRDC_atoi _wtoi
#define BRDC_atoi64 _wtoi64
#define BRDC_atof _wtof
#define BRDC_printf wprintf
#define BRDC_fprintf fwprintf
#define BRDC_sprintf swprintf
#define BRDC_vsprintf vswprintf
#define BRDC_sscanf swscanf
#define BRDC_fopen _wfopen
#define BRDC_sopen _wsopen
#define BRDC_fgets fgetws
#define BRDC_fputs fputws
#define BRDC_getenv _wgetenv
#define BRDC_main wmain
#else
typedef char BRDCHAR;
#define _BRDC(x) x
#define BRDC_strlen strlen
#define BRDC_strcpy strcpy
#define BRDC_strncpy strncpy
#define BRDC_strcmp strcmp
#define BRDC_stricmp _stricmp
#define BRDC_strnicmp _strnicmp
#define BRDC_strcat strcat
#define BRDC_strchr strchr
#define BRDC_strstr strstr
#define BRDC_strtol strtol
#define BRDC_strtoul strtoul
#define BRDC_strtod strtod
#define BRDC_atol atol
#define BRDC_atoi atoi
#define BRDC_atoi64 _atoi64
#define BRDC_atof atof
#define BRDC_printf printf
#define BRDC_fprintf fprintf
#define BRDC_sprintf sprintf
#define BRDC_vsprintf vsprintf
#define BRDC_sscanf sscanf
#define BRDC_fopen fopen
#define BRDC_sopen sopen
#define BRDC_fgets fgets
#define BRDC_fputs fputs
#define BRDC_getenv getenv
#define BRDC_main main
#endif
 
#endif /* _WIN32 */
 
 
/*************************************
*
* Types for TMS320C3x/C4x
*/
 
 
#if defined(_TMS320C30) || defined(_TMS320C40 )
 
/*
typedef unsigned char UINT08;
typedef signed char SINT08;
typedef unsigned short UINT16;
typedef signed short SINT16;
*/
typedef unsigned int UINT32;
typedef signed int SINT32;
 
typedef unsigned int U32, *PU32;
typedef signed int S32, *PS32;
 
typedef float REAL32, *PREAL32;
typedef double REAL64, *PREAL64;
 
typedef UINT32 ULONG;
typedef UINT32 USHORT;
typedef UINT32 UCHAR;
 
#endif /* _TMS320C30 || _TMS320C40 */
 
 
/*************************************
*
* Types for TMS320C6x
*/
 
 
#ifdef _TMS320C6X
 
typedef unsigned char UINT08;
typedef signed char SINT08;
typedef unsigned short UINT16;
typedef signed short SINT16;
typedef unsigned int UINT32;
typedef signed int SINT32;
 
typedef unsigned char U08, *PU08;
typedef signed char S08, *PS08;
typedef unsigned short U16, *PU16;
typedef signed short S16, *PS16;
typedef unsigned int U32, *PU32;
typedef signed int S32, *PS32;
 
typedef unsigned long long int U64, *PU64;
typedef signed long long int S64, *PS64;
 
typedef float REAL32, *PREAL32;
typedef double REAL64, *PREAL64;
 
typedef UINT32 ULONG;
typedef UINT16 USHORT;
typedef UINT08 UCHAR;
 
#endif /* _TMS320C6X */
 
 
/*************************************
*
* Types for ADSP2106x
*/
 
 
#if defined(__ADSP21060__) || defined(__ADSP21061__) || defined(__ADSP21062__)|| defined(__ADSP21065L__)
 
typedef unsigned int UINT32;
typedef signed int SINT32;
 
typedef unsigned int U32, *PU32;
typedef signed int S32, *PS32;
 
typedef float REAL32, *PREAL32;
typedef double REAL64, *PREAL64;
 
typedef UINT32 ULONG;
typedef UINT32 USHORT;
typedef UINT32 UCHAR;
 
#endif /* __ADSP2106x__ */
 
/*************************************
*
* Types for ADSP2116x
*/
 
 
#if defined(__ADSP21160__) || defined(__ADSP21161__)
 
typedef unsigned int UINT32;
typedef signed int SINT32;
 
typedef unsigned int U32, *PU32;
typedef signed int S32, *PS32;
 
typedef float REAL32, *PREAL32;
typedef double REAL64, *PREAL64;
 
typedef UINT32 ULONG;
typedef UINT32 USHORT;
typedef UINT32 UCHAR;
 
#endif /* __ADSP2116x__ */
 
/*************************************
*
* Types for ADSP-TS101
*/
 
 
#if defined(__ADSPTS__)
 
typedef unsigned int UINT32;
typedef signed int SINT32;
 
typedef unsigned int U32, *PU32;
typedef signed int S32, *PS32;
 
typedef unsigned long long int U64, *PU64;
typedef signed long long int S64, *PS64;
 
typedef float REAL32, *PREAL32;
typedef long double REAL64, *PREAL64;
 
typedef UINT32 ULONG;
typedef UINT32 USHORT;
typedef UINT32 UCHAR;
 
#endif /* __ADSPTS__ */
 
/*************************************
*
* Types for MC24
*/
 
#if defined(__GNUC__) && !defined(__linux__)
 
typedef unsigned char UINT08;
typedef signed char SINT08;
typedef unsigned short UINT16;
typedef signed short SINT16;
typedef unsigned long UINT32;
typedef signed long SINT32;
 
typedef unsigned char U08, *PU08;
typedef signed char S08, *PS08;
typedef unsigned short U16, *PU16;
typedef signed short S16, *PS16;
typedef unsigned long U32, *PU32;
typedef signed long S32, *PS32;
 
typedef unsigned long long int U64, *PU64;
typedef signed long long int S64, *PS64;
 
typedef float REAL32, *PREAL32;
typedef double REAL64, *PREAL64;
 
typedef unsigned char UCHAR;
typedef unsigned short USHORT;
typedef unsigned long ULONG;
typedef unsigned long HANDLE;
 
#endif /* __GNUC__ */
 
/*************************************
*
* Type Aliasing
*/
 
typedef UINT32 Uns;
 
/*************************************************
*
* Entry Point types
*
*/
#if !defined(WIN32) && !defined(__WIN32__)
//#ifndef WIN32
#define FENTRY
#define STDCALL
#else
#include <windows.h>
#define DllImport __declspec( dllimport )
#define DllExport __declspec( dllexport )
#define FENTRY DllExport
#define STDCALL __stdcall
#define huge
#endif // WIN32
 
 
#endif /* _UTYPES_H_ */
 
/*
* End of File
*/
 
 
 
/utils/cl_ambpex.h
4,19 → 4,16
#define TF_CheckItem_CL_AMBPEXH
 
#include "utypes.h"
//#include "brd.h"
//#include "time.h"
#include "board.h"
#include "time.h"
#include "ctrlstrm.h"
 
//#include <string.h>
 
class board;
 
class CL_AMBPEX
{
 
 
public:
// virtual char* GetName( void ); //!< Возвращает название класса
 
//! Инициализация модуля
virtual U32 init( void );
57,14 → 54,16
//! Чтение из прямого регистра
U32 RegPeekDir( S32 trdNo, S32 rgnum );
 
CL_AMBPEX(const char* dev_name = NULL);
 
CL_AMBPEX(const char *devname);
virtual ~CL_AMBPEX();
 
 
private:
 
//! Указатель на модуль
board *m_pBoard;
 
 
struct StreamParam
{
U32 status;
95,6 → 94,8
 
};
 
void Sleep( int ms );
void Sleep(int ms);
 
//---------------------------------------------------------------------------
 
#endif
/utils/ctrlstrm.h
171,7 → 171,7
BRDstrm_STAT_STOP = 2,
BRDstrm_STAT_DESTROY = 3,
BRDstrm_STAT_BREAK = 4
};
};
 
//
// Constants: Direction of CBUF
193,6 → 193,6
BRDstrm_DRQ_ALMOST = 0x0, // Almost empty = 1 for input FIFO, Almost full = 1 for output FIFO
BRDstrm_DRQ_READY = 0x1, // Ready = 1
BRDstrm_DRQ_HALF = 0x2 // Half full = 0 for input FIFO, Half full = 1 for output FIFO
};
};
 
#endif // _CTRL_STREAM_H
/utils/tf_workparam.h
1,18 → 1,7
/**
\file
\brief Объявление класса TF_WorkParam
 
\version 1
#ifndef __TF_WORK_PARAM_H__
#define __TF_WORK_PARAM_H__
 
 
*/
 
#pragma once
 
 
 
 
 
//! Класс хранения параметров обработки
/**
 
38,8 → 27,8
struct STR_CFG {
 
U32 is_float; //!< 1 - число с плавающей точкой; 0 - целое.
const char *name; //!< Название параметра
const char *def; //!< Значение по умолчанию
const char *name; //!< Название параметра
const char *def; //!< Значение по умолчанию
U32 *ptr; //!< Указатель на переменную
const char *cmt; //!< Комментарий для параметра
 
101,3 → 90,5
//! Функция отображения параметров
void log_out( const char* fmt, ... );
};
 
#endif //__TF_WORK_PARAM_H__
/utils/cl_wbpex.cpp
24,8 → 24,8
//! Инициализация модуля
U32 CL_WBPEX::init( void )
{
S32 err;
S32 num;
//S32 err;
//S32 num;
 
/*
if( g_hBrd<=0)
41,7 → 41,7
board *brd = new pex_board();
m_pBoard = brd;
 
brd->brd_open( "/dev/AMBPEX50" );
brd->brd_open( "/dev/pexdrv0" );
brd->brd_init();
brd->brd_board_info();
//brd->brd_pld_info();
53,7 → 53,7
//! Завершение работы с модулем
void CL_WBPEX::cleanup( void )
{
S32 ret;
//S32 ret;
//ret=BRD_cleanup();
 
}
195,8 → 195,8
if( pStrm->status!=1 )
return;
 
S32 err;
U32 val;
//S32 err;
//U32 val;
 
//val=RegPeekInd( pStrm->trd, 0 );
//err = BRD_ctrl( pStrm->hStream, 0, BRDctrl_STREAM_CBUF_STOP, NULL);
205,7 → 205,7
pStrm->indexDma=-1;
pStrm->indexPc=-1;
 
val=pStrm->cycle; // 0 - однократный режим, 1 - циклический
//val=pStrm->cycle; // 0 - однократный режим, 1 - циклический
//err = BRD_ctrl( pStrm->hStream, 0, BRDctrl_STREAM_CBUF_START, &val );
}
 
214,9 → 214,9
if( strm>1 )
return;
 
StreamParam *pStrm= m_streamParam+strm;
//StreamParam *pStrm= m_streamParam+strm;
 
S32 err;
//S32 err;
 
//RegPokeInd( pStrm->trd, 0, 2 );
 
259,7 → 259,7
if( strm>1 )
return -1;
 
StreamParam *pStrm= m_streamParam+strm;
//StreamParam *pStrm= m_streamParam+strm;
 
 
 
273,8 → 273,8
return;
 
StreamParam *pStrm= m_streamParam+strm;
S32 err;
static U32 err_code=0;
//S32 err;
//static U32 err_code=0;
 
if( pStrm->agree_mode )
{
/utils/tf_testbufm2.cpp
1,10 → 1,16
/** \file
\brief Функции формирования и проверки массива данных
 
В файле содержится реализация класса TF_TestBufM2 - формирование и проверка массива данных.
 
\author Dmitry Smekhov
\version 1.0
 
 
*/
 
 
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
#include "utypes.h"
#include "tf_testbufm2.h"
33,16 → 39,13
{
// n%100 - тип блока
U32 ii;
//U32 di0, di1;
//U32 cnt_err=0;
 
__int64 *ptr=(__int64*)buf;
U32 size64 = size/2;
__int64 data_ex;
//__int64 data_in;
__int64 data_sig;
__int64 data_ex1;
__int64 data_ex2;
__int64 data_ex = 0ULL;
__int64 data_sig = 0ULL;
__int64 data_ex1 = 0ULL;
__int64 data_ex2 = 0ULL;
 
data_sig = n;
if( mode & 0x80 )
62,7 → 65,7
case 2: data_ex = 1; break;
case 3: data_ex = ~1; break;
case 4: data_ex = 1; data_ex2=0; break;
case 5: data_ex = ~1; data_ex2=0xFFFFFFFFFFFFFFFFLL; break;
case 5: data_ex = ~1; data_ex2=0xFFFFFFFFFFFFFFFFULL; break;
case 6:
case 7: data_ex = data_ex_cnt; break;
case 8:
79,7 → 82,7
//data_in=*ptr++;
*ptr++=data_ex;
{
U32 f= (data_ex & 0x8000000000000000LL) ? 1:0;
U32 f= (data_ex & 0x8000000000000000ULL) ? 1:0;
data_ex <<= 1;
data_ex &=~1;
data_ex |=f;
93,7 → 96,7
//data_in=*ptr++;
*ptr++=(~data_ex);
{
U32 f= (data_ex & 0x8000000000000000LL) ? 1:0;
U32 f= (data_ex & 0x8000000000000000ULL) ? 1:0;
data_ex <<= 1;
data_ex &=~1;
data_ex |=f;
106,7 → 109,7
*ptr++=~data_ex;
 
{
U32 f= (data_ex & 0x8000000000000000LL) ? 1:0;
U32 f= (data_ex & 0x8000000000000000ULL) ? 1:0;
data_ex <<= 1;
data_ex &=~1;
data_ex |=f;
128,7 → 131,7
*ptr++=data_ex1;
if( flag )
{
U32 f= (data_ex & 0x8000000000000000LL) ? 1:0;
U32 f= (data_ex & 0x8000000000000000ULL) ? 1:0;
data_ex <<= 1;
data_ex &=~1;
data_ex |=f;
325,11 → 328,11
 
__int64 *ptr=(__int64*)buf;
U32 size64 = size/2;
__int64 data_ex;
__int64 data_in;
__int64 data_sig;
__int64 data_ex1;
__int64 data_ex2;
__int64 data_ex = 0ULL;
__int64 data_in = 0ULL;
__int64 data_sig = 0ULL;
__int64 data_ex1 = 0ULL;
__int64 data_ex2 = 0ULL;
 
data_sig = n;
if( mode & 0x80 )
369,7 → 372,7
case 2: data_ex = 1; break;
case 3: data_ex = ~1; break;
case 4: data_ex = 1; data_ex2=0; break;
case 5: data_ex = ~1; data_ex2=0xFFFFFFFFFFFFFFFFLL; break;
case 5: data_ex = ~1; data_ex2=0xFFFFFFFFFFFFFFFFULL; break;
case 6:
case 7: data_ex = data_ex_cnt; break;
case 8:
390,7 → 393,7
//cnt_err=0;
}
{
U32 f= (data_ex & 0x8000000000000000LL) ? 1:0;
U32 f= (data_ex & 0x8000000000000000ULL) ? 1:0;
data_ex <<= 1;
data_ex &=~1;
data_ex |=f;
407,7 → 410,7
cnt_err+=check( 1, ~data_ex, data_in );
}
{
U32 f= (data_ex & 0x8000000000000000LL) ? 1:0;
U32 f= (data_ex & 0x8000000000000000ULL) ? 1:0;
data_ex <<= 1;
data_ex &=~1;
data_ex |=f;
431,7 → 434,7
 
 
{
U32 f= (data_ex & 0x8000000000000000LL) ? 1:0;
U32 f= (data_ex & 0x8000000000000000ULL) ? 1:0;
data_ex <<= 1;
data_ex &=~1;
data_ex |=f;
457,7 → 460,7
}
if( flag )
{
U32 f= (data_ex & 0x8000000000000000LL) ? 1:0;
U32 f= (data_ex & 0x8000000000000000ULL) ? 1:0;
data_ex <<= 1;
data_ex &=~1;
data_ex |=f;
590,7 → 593,7
Массив должен быть сформирован функцией buf_set или аналогичной
При обнаружении ошибки в массив word_error записываются четыре числа:
- номер массива
- индекс в массиве
- индекс в массивк
- ожидаемые данные
- полученные данные
В массивы bit_error0 и bit_error1 заносится распределение ошибок по битам.
616,7 → 619,6
__int64 data_ex;
__int64 data_in;
 
 
data_ex = data_ex_psd ;
 
 
626,7 → 628,16
 
if( data_ex!=data_in )
{
cnt_err+=check( ii, data_ex, data_in );
if( word_cnt_error<max_cnt_error )
{
word_error[ word_cnt_error*4+0 ]=buf_current;
word_error[ word_cnt_error*4+1 ]=ii;
word_error[ word_cnt_error*4+2 ]=data_ex;
word_error[ word_cnt_error*4+3 ]=data_in;
}
word_cnt_error++;
cnt_err++;
//cnt_err+=check( ii, data_ex, data_in );
data_ex=data_in;
}
 
637,6 → 648,7
f59 = data_ex >> 59;
f0 = (f63 ^ f62 ^ f60 ^ f59)&1;
*/
 
U32 data_h=data_ex>>32;
U32 f63 = data_h >> 31;
U32 f62 = data_h >> 30;
643,6 → 655,7
U32 f60 = data_h >> 28;
U32 f59 = data_h >> 27;
U32 f0 = (f63 ^ f62 ^ f60 ^ f59)&1;
 
//U32 data_l=data_ex;
//U32 f31 = (data_l>>31) & 1;
//data_l<<=1;
680,7 → 693,59
 
}
 
//! Проверка двоично-инверсной последовательности
U32 TF_TestBufM2::buf_check_inv( U32 *buf, U32 size )
{
 
// n%100 - тип блока
U32 ii;
U32 cnt_err=0;
 
__int64 *ptr=(__int64*)buf;
U32 size64 = size/2;
__int64 data_ex;
__int64 data_in;
 
register unsigned f0;
 
 
data_ex = data_ex_inv ;
 
 
for( ii=0; ii<size64; ii++ )
{
data_in=*ptr++;
 
if( data_ex!=data_in )
{
cnt_err+=check( ii, data_ex, data_in );
//data_ex=data_in;
}
 
//data_h=data_ex>>32; f63 = data_h >> 31; f0 = f63^1; data_ex <<= 1; data_ex &= ~1; data_ex |=f0;
f0 = ((data_ex >>63) & 1) ^1; data_ex <<= 1; data_ex &= ~1; data_ex |=f0;
 
 
 
 
}
 
data_ex_inv = data_ex;
 
block_mode++;
if( block_mode==10 )
block_mode=0;
 
buf_current++;
if (cnt_err==0)
buf_cnt_ok++;
else
buf_cnt_error++;
 
return cnt_err;
 
}
 
//! Начало проверки группы массивов
/** Функция подготавливает параметры для проверки нескольких массивов.
Обнуляются счётчики ошибок.
764,10 → 829,11
 
char *ptr=str;
int len;
char bit[64], *ptr_bit;
//char bit[64], *ptr_bit;
U32 nb, na;
__int64 dout, din;
int size=0;
//U32 mask;
*ptr=0;
int cnt=max_cnt_error;
if( word_cnt_error<max_cnt_error )
777,7 → 843,7
na=word_error[ii*4+1];
dout=word_error[ii*4+2];
din=word_error[ii*4+3];
ptr_bit=bit;
//ptr_bit=bit;
/*
mask=0x80000000;
for( int jj=0; jj<32; jj++ ) {
816,63 → 882,14
char* TF_TestBufM2::report_bit_error( void ) {
 
char *ptr=str;
//int len;
//char bit[64], *ptr_bit;
//U32 mask;
*ptr=0;
 
return str;
}
 
//! Проверка двоично-инверсной последовательности
U32 TF_TestBufM2::buf_check_inv( U32 *buf, U32 size )
{
 
// n%100 - тип блока
U32 ii;
U32 cnt_err=0;
//---------------------------------------------------------------------------
 
__int64 *ptr=(__int64*)buf;
U32 size64 = size/2;
__int64 data_ex;
__int64 data_in;
 
register unsigned f0;
 
 
data_ex = data_ex_inv ;
 
 
for( ii=0; ii<size64; ii++ )
{
data_in=*ptr++;
 
if( data_ex!=data_in )
{
cnt_err+=check( ii, data_ex, data_in );
//data_ex=data_in;
}
 
//data_h=data_ex>>32; f63 = data_h >> 31; f0 = f63^1; data_ex <<= 1; data_ex &= ~1; data_ex |=f0;
f0 = ((data_ex >>63) & 1) ^1; data_ex <<= 1; data_ex &= ~1; data_ex |=f0;
 
 
 
 
}
 
data_ex_inv = data_ex;
 
block_mode++;
if( block_mode==10 )
block_mode=0;
 
buf_current++;
if (cnt_err==0)
buf_cnt_ok++;
else
buf_cnt_error++;
 
return cnt_err;
 
}
 
 
//---------------------------------------------------------------------------
/utils/tf_testbufm2.h
12,7 → 12,6
#ifndef TF_TestBufM2H
#define TF_TestBufM2H
 
 
//! Проверка массива данных
/** Класс содержит функции для проверки произвольных
массивов.
51,8 → 50,8
Начальное значение - 1
Слово формируется сдвигом на один разряд вправо.
В младший разряд слова записывается значение x[63] xor x[62] xor x[60] xor x[59]
 
 
Для режима счётчика и псевдослучайной последовательности начальное значение
формируется при инициализации тестовой последовательности.
Для остальных режимов - при инициализации проверки блока
74,75 → 73,55
*/
class TF_TestBufM2 {
 
U32 bit_error0[64]; //!< Число ошибок типа принят 0
U32 bit_error1[64]; //!< Число ошибок типа принят 1
U32 bit_error0[64]; //!< Число ошибок типа принят 0
U32 bit_error1[64]; //!< Число ошибок типа принят 1
 
U32 max_cnt_error; //!< Заданное максимальное число ошибок
U32 max_bit_cnt; //!< Число бит в слове
U32 buf_cnt_ok; //!< Число правильных массивов.
U32 buf_cnt_error; //!< Число неправильных массивов.
U32 word_cnt_error; //!< Число неправильных слов.
U32 buf_current; //!< Номер текущего массива.
__int64 word_error[4*32]; //!< Список ошибок
U32 max_cnt_error; //!< Заданное максимальное число ошибок
U32 max_bit_cnt; //!< Число бит в слове
U32 buf_cnt_ok; //!< Число правильных массивов.
U32 buf_cnt_error; //!< Число неправильных массивов.
U32 word_cnt_error; //!< Число неправильных слов.
U32 buf_current; //!< Номер текущего массива.
__int64 word_error[4*32]; //!< Список ошибок
 
char str[10240]; //!< Буфер сообщений
U32 block_mode; //!< Тип блока
__int64 data_ex_cnt;
__int64 data_ex_noise;
__int64 data_ex_psd;
__int64 data_ex_inv;
char str[10240]; //!< Буфер сообщений
U32 block_mode; //!< Тип блока
__int64 data_ex_cnt;
__int64 data_ex_noise;
__int64 data_ex_psd;
__int64 data_ex_inv;
 
public:
 
TF_TestBufM2(); //!< Конструктор
~TF_TestBufM2(); //!< Деструктор
 
float *resData;
int FFT_size;
int numberOfSteps;
int numberOfFFTSizeSteps;
int m_chanMask;
 
U32 lowRange;
U32 topRange;
U32 fftSize;
//! Формирование массива
void buf_set( U32 *buf, U32 n, U32 size, U32 mode ) ;
 
inline U32 check( U32 index, __int64 d0, __int64 di0 );
 
public:
//! Проверка массива
U32 buf_check( U32 *buf, U32 n, U32 size, U32 mode );//, U32 *err, U32 size_err, U32 *bit_err, U32 bit_cnt );
 
TF_TestBufM2(); //!< Конструктор
~TF_TestBufM2(); //!< Деструктор
//! Начало проверки группы массивов
void buf_check_start( U32 n_error, U32 bit_cnt );
 
//! Результаты проверки группы массивов
U32 check_result( U32 *cnt_ok, U32 *cnt_error, U32 **error, U32 **bit0, U32 **bit1 );
 
//! Формирование массива
void buf_set( U32 *buf, U32 n, U32 size, U32 mode ) ;
//! Формирование отчёта по ошибкам
char* report_word_error( void );
 
inline U32 check( U32 index, __int64 d0, __int64 di0 );
//! Формирование отчёта распределения ошибок по битам
char* report_bit_error( void );
 
//! Проверка массива
U32 buf_check( U32 *buf, U32 n, U32 size, U32 mode );//, U32 *err, U32 size_err, U32 *bit_err, U32 bit_cnt );
//! Проверка псевдослучайной последовательности
U32 buf_check_psd( U32 *buf, U32 size );
 
//! Начало проверки группы массивов
void buf_check_start( U32 n_error, U32 bit_cnt );
 
//! Результаты проверки группы массивов
U32 check_result( U32 *cnt_ok, U32 *cnt_error, U32 **error, U32 **bit0, U32 **bit1 );
 
//! Формирование отчёта по ошибкам
char* report_word_error( void );
 
//! Формирование отчёта распределения ошибок по битам
char* report_bit_error( void );
 
//! Проверка псевдослучайной последовательности
U32 buf_check_psd( U32 *buf, U32 size );
 
//! Проверка двоично-инверсной последовательности
U32 buf_check_inv( U32 *buf, U32 size );
 
 
//! Проверка двоично-инверсной последовательности
U32 buf_check_inv( U32 *buf, U32 size );
};
 
 
 
 
 
//---------------------------------------------------------------------------
#endif
/utils/cl_ambpex.cpp
1,29 → 1,28
//---------------------------------------------------------------------------
 
#include <stdio.h>
#include <stdint.h>
#include <sys/select.h>
 
#include "board.h"
//#include "brderr.h"
#include "ctrlstrm.h"
//#include "ctrlreg.h"
//#include "useful.h"
//#include "CL_AMBPEX.h"
 
#ifndef __PEX_BOARD_H__
#include "pex_board.h"
#endif
 
#ifndef __BOARD_H__
#include "board.h"
#endif
 
#include "cl_ambpex.h"
#include "sys/select.h"
//BRD_Handle g_hBrd=0;
#include "ctrlstrm.h"
#include "cl_ambpex.h"
 
//---------------------------------------------------------------------------
 
void Sleep( int ms );
 
//-----------------------------------------------------------------------------
//! Инициализация модуля
U32 CL_AMBPEX::init( void )
{
DEBUG_PRINT("CL_AMBPEX::%s()\n", __FUNCTION__);
// сброс прошивки ПЛИС
RegPokeInd( 0, 0, 1 );
Sleep( 100 );
33,21 → 32,25
return 0;
}
 
//-----------------------------------------------------------------------------
//! Завершение работы с модулем
void CL_AMBPEX::cleanup( void )
{
DEBUG_PRINT("CL_AMBPEX::%s()\n", __FUNCTION__);
}
 
//-----------------------------------------------------------------------------
//! Открываем модуль
CL_AMBPEX::CL_AMBPEX(const char *devname)
{
DEBUG_PRINT("CL_AMBPEX::%s()\n", __FUNCTION__);
 
// Доступ к регистрам
CL_AMBPEX::CL_AMBPEX(const char* dev_name)
{
m_pBoard = new pex_board();
 
if(dev_name) {
m_pBoard->brd_open(dev_name);
if(devname) {
m_pBoard->brd_open(devname);
} else {
m_pBoard->brd_open("/dev/AMBPEX50");
m_pBoard->brd_open("/dev/pexdrv0");
}
 
m_pBoard->brd_init();
55,64 → 58,67
m_pBoard->brd_pld_info();
}
 
//-----------------------------------------------------------------------------
 
CL_AMBPEX::~CL_AMBPEX()
{
if(m_pBoard) delete m_pBoard;
DEBUG_PRINT("CL_AMBPEX::%s()\n", __FUNCTION__);
}
 
//-----------------------------------------------------------------------------
 
 
 
//=********************* RegPokeInd *******************
//=****************************************************
void CL_AMBPEX::RegPokeInd( S32 trdNo, S32 rgnum, U32 val )
{
DEBUG_PRINT("CL_AMBPEX::%s()\n", __FUNCTION__);
m_pBoard->brd_reg_poke_ind( trdNo, rgnum, val );
 
}
 
//=********************* RegPeekInd *******************
//=****************************************************
//-----------------------------------------------------------------------------
 
U32 CL_AMBPEX::RegPeekInd( S32 trdNo, S32 rgnum )
{
DEBUG_PRINT("CL_AMBPEX::%s()\n", __FUNCTION__);
U32 ret;
ret=m_pBoard->brd_reg_peek_ind( trdNo, rgnum );
return ret;
}
 
//=********************* RegPokeDir *******************
//=****************************************************
//-----------------------------------------------------------------------------
 
void CL_AMBPEX::RegPokeDir( S32 trdNo, S32 rgnum, U32 val )
{
DEBUG_PRINT("CL_AMBPEX::%s()\n", __FUNCTION__);
m_pBoard->brd_reg_poke_dir( trdNo, rgnum, val );
}
 
//=********************* RegPeekDir *******************
//=****************************************************
//-----------------------------------------------------------------------------
 
U32 CL_AMBPEX::RegPeekDir( S32 trdNo, S32 rgnum )
{
DEBUG_PRINT("CL_AMBPEX::%s()\n", __FUNCTION__);
U32 ret;
ret=m_pBoard->brd_reg_peek_dir( trdNo, rgnum );
return ret;
}
 
//-----------------------------------------------------------------------------
 
 
 
int CL_AMBPEX::StreamInit( U32 strm, U32 cnt_buf, U32 size_one_buf_of_bytes, U32 trd, U32 dir, U32 cycle, U32 system, U32 agree_mode )
{
if( strm>1 )
return 1;
 
DEBUG_PRINT("CL_AMBPEX::%s()\n", __FUNCTION__);
 
StreamParam *pStrm= m_streamParam+strm;
if( pStrm->status!=0 )
return 1;
 
pStrm->cnt_buf = cnt_buf;
pStrm->size_one_buf_of_bytes = size_one_buf_of_bytes;
pStrm->trd = trd;
pStrm->cycle = cycle;
pStrm->system = system;
pStrm->cnt_buf = cnt_buf;
pStrm->size_one_buf_of_bytes = size_one_buf_of_bytes;
pStrm->trd = trd;
pStrm->cycle = cycle;
pStrm->system = system;
 
pStrm->indexDma=-1;
pStrm->indexPc=-1;
120,16 → 126,15
 
StreamDestroy( strm );
 
 
__int64 size=cnt_buf*(__int64)size_one_buf_of_bytes/(1024*1024);
 
if( system )
{
if( system ) {
 
BRDC_fprintf( stderr, _BRDC("Allocation memory: \r\n")
_BRDC(" Type of block: system memory\r\n")
_BRDC(" Block size: %lld MB\r\n"), size );
} else
{
} else {
 
BRDC_fprintf( stderr, _BRDC("Allocation memory: \r\n")
_BRDC(" Type of block: userspace memory\r\n")
_BRDC(" Block size: %lld MB (%dx%d MB)\r\n"), size, cnt_buf, size_one_buf_of_bytes/(1024*1024) );
145,6 → 150,11
};
 
u32 err = m_pBoard->dma_alloc( strm, &sSCA );
if(err != 0) {
throw( "Error allocate stream memory\n" );
return -1;
}
 
pStrm->pStub=sSCA.pStub;
if(!pStrm->pStub) {
throw( "Error allocate stream memory\n" );
162,8 → 172,6
*/
m_pBoard->dma_set_local_addr( strm, trd );
 
//agree_mode = 1;
 
// Перевод на согласованный режим работы
if( agree_mode ) {
 
175,9 → 183,9
BRDC_fprintf( stderr, _BRDC("Stream working in regular mode\n"));
}
 
m_pBoard->dma_stop(strm);//err = BRD_ctrl( pStrm->hStream, 0, BRDctrl_STREAM_CBUF_STOP, NULL);
m_pBoard->dma_reset_fifo(strm);//err = BRD_ctrl( pStrm->hStream, 0, BRDctrl_STREAM_RESETFIFO, NULL );
m_pBoard->dma_reset_fifo(strm);//err = BRD_ctrl( pStrm->hStream, 0, BRDctrl_STREAM_RESETFIFO, NULL );
m_pBoard->dma_stop(strm);
m_pBoard->dma_reset_fifo(strm);
m_pBoard->dma_reset_fifo(strm);
 
pStrm->status=1;
 
184,26 → 192,31
return 0;
}
 
//-----------------------------------------------------------------------------
 
int CL_AMBPEX::StreamGetNextIndex( U32 strm, U32 index )
{
if( strm>1 )
return 0;
 
DEBUG_PRINT("CL_AMBPEX::%s()\n", __FUNCTION__);
 
StreamParam *pStrm= m_streamParam+strm;
int n=index+1;
if( (U32)n>=pStrm->cnt_buf )
n=0;
return n;
 
}
 
//-----------------------------------------------------------------------------
 
void CL_AMBPEX::StreamDestroy( U32 strm )
{
S32 err;
 
if( strm>1 )
return;
 
DEBUG_PRINT("CL_AMBPEX::%s()\n", __FUNCTION__);
 
StreamParam *pStrm= m_streamParam+strm;
if( pStrm->status==0 )
return;
210,21 → 223,20
 
StreamStop( strm );
 
if( 1 )
{
BRDC_fprintf( stderr, _BRDC("\r\nStream free %.8X\r\n"), err );
// pStrm->hStream=0;
}
m_pBoard->dma_free_memory( strm );
 
pStrm->status=0;
 
}
 
//-----------------------------------------------------------------------------
 
U32* CL_AMBPEX::StreamGetBufByNum( U32 strm, U32 numBuf )
{
if( strm>1 )
return NULL;
 
DEBUG_PRINT("CL_AMBPEX::%s()\n", __FUNCTION__);
 
StreamParam *pStrm= m_streamParam+strm;
if( pStrm->status!=1 )
return NULL;
236,17 → 248,19
return ptr;
}
 
//-----------------------------------------------------------------------------
 
void CL_AMBPEX::StreamStart( U32 strm )
{
 
if( strm>1 )
return;
 
DEBUG_PRINT("CL_AMBPEX::%s()\n", __FUNCTION__);
 
StreamParam *pStrm= m_streamParam+strm;
if( pStrm->status!=1 )
return;
 
//S32 err;
U32 val;
 
val=RegPeekInd( pStrm->trd, 0 );
257,27 → 271,31
pStrm->indexPc=-1;
 
val=pStrm->cycle; // 0 - однократный режим, 1 - циклический
 
m_pBoard->dma_start(strm, val);
}
 
//-----------------------------------------------------------------------------
 
void CL_AMBPEX::StreamStop( U32 strm )
{
if( strm>1 )
return;
 
DEBUG_PRINT("CL_AMBPEX::%s()\n", __FUNCTION__);
 
StreamParam *pStrm= m_streamParam+strm;
 
S32 err;
 
RegPokeInd( pStrm->trd, 0, 2 );
 
m_pBoard->dma_stop(strm);//err = BRD_ctrl( pStrm->hStream, 0, BRDctrl_STREAM_CBUF_STOP, NULL);
m_pBoard->dma_reset_fifo(strm);//err = BRD_ctrl( pStrm->hStream, 0, BRDctrl_STREAM_RESETFIFO, NULL );
m_pBoard->dma_stop(strm);
m_pBoard->dma_reset_fifo(strm);
 
RegPokeInd( pStrm->trd, 0, 0 );
 
}
 
//-----------------------------------------------------------------------------
 
int CL_AMBPEX::StreamGetBuf( U32 strm, U32** ptr )
{
U32 *buf;
288,6 → 306,7
 
StreamParam *pStrm= m_streamParam+strm;
 
DEBUG_PRINT("CL_AMBPEX::%s()\n", __FUNCTION__);
 
if( pStrm->indexPc==pStrm->indexDma )
{
304,11 → 323,15
return ret;
}
 
//-----------------------------------------------------------------------------
 
int CL_AMBPEX::StreamGetIndexDma( U32 strm )
{
if( strm>1 )
return -1;
 
DEBUG_PRINT("CL_AMBPEX::%s()\n", __FUNCTION__);
 
StreamParam *pStrm= m_streamParam+strm;
 
if(!pStrm->pStub) {
323,9 → 346,11
return lastBlock;
}
 
//-----------------------------------------------------------------------------
 
void CL_AMBPEX::StreamGetBufDone( U32 strm )
{
//fprintf(stderr, "%s()\n", __FUNCTION__);
DEBUG_PRINT("CL_AMBPEX::%s()\n", __FUNCTION__);
 
if( strm>1 )
return;
344,6 → 369,7
}
}
 
//-----------------------------------------------------------------------------
 
void Sleep( int ms )
{
353,7 → 379,4
select(0,NULL,NULL,NULL,&tv);
}
 
 
 
 
 
//-----------------------------------------------------------------------------
/utils/tf_workparam.cpp
1,10 → 1,9
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <stdarg.h>
 
#include "utypes.h"
//#include "useful.h"
#include "tf_workparam.h"
 
#ifdef _DEBUG
13,10 → 12,8
static char THIS_FILE[] = __FILE__;
#endif
 
 
//
 
 
TF_WorkParam::TF_WorkParam(void)
{
 
24,8 → 21,6
memset( this, 0, sizeof( TF_WorkParam ) );
 
SetDefault();
 
 
}
 
TF_WorkParam::~TF_WorkParam(void)
68,55 → 63,13
}
 
 
//ZeroMemory( this, sizeof( TF_WorkParam ) );
 
 
 
 
 
ii=0;
/*
array_cfg[ii++]=STR_CFG( 0, "RGG_SideObservation", "1", (U32*)&st.Nav_LR_Side, "борт наблюдения (правый +1, левый -1)" );
array_cfg[ii++]=STR_CFG( 1, "lambda", "0.0032", (U32*)&st.lambda, "длина волны (м)" );
array_cfg[ii++]=STR_CFG( 2, "RliFileName", "..\\gol\\bmp\\_A_4Kx16k.bmp", (U32*)&pRliFileName, "имя файла с изображением для режима иммитации РЛИ " );
array_cfg[ii++]=STR_CFG( 3, "SYNTH_OBZOR_cutDoppler", "1", (U32*)(&st.cutDoppler), "cutDoppler" );
*/
 
max_item=ii;
 
 
/*
 
{
if( pPathVega==NULL )
{
pPathVega = (char*)malloc( 1024 );
}
 
int ret=GetEnvironmentVariableA(
"VEGA",
pPathVega,
1020
);
char buf[1024];
if( ret==0 )
sprintf( pPathVega, "c:\\vega" );
 
sprintf( buf, "%s\\temp\\obzor\\", pPathVega );
 
 
strcpy( st.output_dir, buf ); // директория файлов вычислений(server)
strcpy( st.output_dir_loc, buf ); // директория файлов вычислений(client)
 
strcpy( sk.output_dir, buf ); // директория файлов вычислений(server)
strcpy( sk.output_dir_loc, buf ); // директория файлов вычислений(client)
 
//free( pPathVega );
};
*/
{
char str[1024];
for( unsigned ii=0; ii<max_item; ii++ )
for( U32 ii=0; ii<max_item; ii++ )
{
sprintf( str, "%s %s", array_cfg[ii].name, array_cfg[ii].def );
GetParamFromStr( str );
137,12 → 90,10
 
in=BRDC_fopen( fname, _BRDC("rt") );
if( in==NULL ) {
//log_out( "Не могу открыть файл конфигурации %s\r\n", fname );
BRDC_fprintf( stderr, _BRDC("Can't open configuration file: %s\r\n"), fname );
BRDC_printf( _BRDC("Can't open configuration file: %s\r\n"), fname );
return;
}
//log_out( "\r\nЧтение параметров из файла %s\r\n\r\n", fname );
BRDC_fprintf( stderr, _BRDC("\r\nReading parameters from file: %s\r\n\r\n"), fname );
BRDC_printf( _BRDC("\r\nRead parameters from file: %s\r\n\r\n"), fname );
 
char str[512];
 
155,7 → 106,6
}
log_out( "\r\n" );
fclose( in );
 
}
 
//! Получение параметра из строки
171,12 → 121,10
if( strcmp( array_cfg[ii].name, name )==0 ) {
if( array_cfg[ii].is_float==0 ) {
sscanf( val, "%i", array_cfg[ii].ptr );
// scr.log_out( "%-20s %d\r\n", array_cfg[ii].name, *(array_cfg[ii].ptr) );
} else if( array_cfg[ii].is_float==1 ) {
sscanf( val, "%g", (float*)array_cfg[ii].ptr );
// scr.log_out( "%-20s %g\r\n", array_cfg[ii].name, *((float*)(array_cfg[ii].ptr)) );
} else if( array_cfg[ii].is_float==2 ) {
//*((CString*)array_cfg[ii].ptr)=val;
 
{
 
STR_CFG *cfg=array_cfg+ii;
186,9 → 134,8
if( ps!=NULL )
free( ps );
ps = (char*)malloc( 128 );
*(cfg->ptr)=((size_t)ps);
*(cfg->ptr)=(U32)ps;
sprintf( ps, "%s", val );
//scr.log_out("%-20s %s\r\n", array_cfg[ii].name, ps );
 
}
} else if( array_cfg[ii].is_float==3 ) {
197,10 → 144,8
sscanf( val, "%d", &v );
if( v ) {
*p=true;
//scr.log_out( "%-20s true\r\n", array_cfg[ii].name );
} else {
*p=false;
//scr.log_out( "%-20s false\r\n", array_cfg[ii].name );
}
}
break;
224,7 → 169,7
char str[256];
int len;
int total=0;
unsigned ii;
U32 ii;
STR_CFG *cfg;
 
*((U32*)ptr)=max_item;
258,7 → 203,7
 
}
len=strlen( str )+1;
if( (total+len)<(int)max_size )
if( (total+len)<(S32)max_size )
{
strcpy( ptr+total, str );
total+=len;
274,7 → 219,7
U32 len;
U32 n;
n=*((U32*)ptr);
unsigned ii;
U32 ii;
int total=4;
 
for( ii=0; ii<n; ii++ )
290,34 → 235,34
//! Отображение параметров
void TF_WorkParam::ShowParam( void )
{
U32 ii;
STR_CFG *item;
log_out( "\r\n\r\n\r\nParameters value:\r\n\r\n" );
for( ii=0; ii<max_item; ii++ )
{
item=array_cfg+ii;
if( item->is_float==2 )
{
U32 ii;
STR_CFG *item;
log_out( "\r\n\r\n\r\nParameters:\r\n\r\n" );
for( ii=0; ii<max_item; ii++ )
{
item=array_cfg+ii;
if( item->is_float==2 )
{
 
char **ptr=(char**)item->ptr;
char *ps=*ptr;
log_out( "%s %s\r\n", item->name, ps );
} else if( item->is_float==0 )
{
U32 ps=*((U32*)item->ptr);
log_out( "%s %d\r\n", item->name, ps );
} else if( item->is_float==1 )
{
float ps=*((float*)item->ptr);
log_out( "%s %g\r\n", item->name, ps );
} else if( item->is_float==3 )
{
U32 ps=*((U32*)item->ptr);
if( ps ) log_out( "%s %s\r\n", item->name, "true" );
else log_out( "%s %s\r\n", item->name, "false" );
}
}
log_out( "\r\n\r\n\r\n" );
char **ptr=(char**)item->ptr;
char *ps=*ptr;
log_out( "%s %s\r\n", item->name, ps );
} else if( item->is_float==0 )
{
U32 ps=*((U32*)item->ptr);
log_out( "%s %d\r\n", item->name, ps );
} else if( item->is_float==1 )
{
float ps=*((float*)item->ptr);
log_out( "%s %g\r\n", item->name, ps );
} else if( item->is_float==3 )
{
U32 ps=*((U32*)item->ptr);
if( ps ) log_out( "%s %s\r\n", item->name, "true" );
else log_out( "%s %s\r\n", item->name, "false" );
}
}
log_out( "\r\n\r\n\r\n" );
 
}
 
325,13 → 270,13
void TF_WorkParam::log_out( const char* format, ... )
{
 
char buffer[2048];
char buffer[2048];
 
va_list marker;
va_start( marker, format );
vsprintf( buffer, format, marker );
va_end( marker );
va_list marker;
va_start( marker, format );
vsprintf( buffer, format, marker );
va_end( marker );
 
BRDC_fprintf( stderr, "%s", buffer );
printf( "%s", buffer );
 
}
/Mk.Rules
0,0 → 1,55
 
#
# Detect operation system
#
 
#GPROF := -pg
 
#
# Setup common Makefile rules and defines
#
 
CC := $(CSTOOL_PREFIX)g++
LD := $(CSTOOL_PREFIX)g++
 
CFLAGS += -fPIC -Wall -g $(GPROF)
 
%.o: %.cpp
$(CC) $(CFLAGS) -c -MD $<
%.o: %.c
$(CC) $(CFLAGS) -c -MD $<
 
include $(wildcard *.d)
 
distclean:
rm -f *.o *~ core
rm -f *.d *~ core
rm -f *.so
rm -f *.0
 
clean:
rm -f *.o *~ core
rm -f *.d *~ core
rm -f *.so
rm -f *.0
 
SYSLIBDIR := /usr/local/lib/board
 
#
# в каталоге /etc/ld.so.conf.d/
# создать файл board.conf
# в котором прописать путь к библиотекам
# /usr/local/lib/board
# и выполнить ldconfig -v -n
#
 
install:
mkdir -p $(SYSLIBDIR)
chmod 777 $(SYSLIBDIR)
cp -af $(LIBNAME) $(SYSLIBDIR)
ln -sf $(SYSLIBDIR)/$(LIBNAME) $(SYSLIBDIR)/$(SONAME)
ln -sf $(SYSLIBDIR)/$(SONAME) $(SYSLIBDIR)/$(BASENAME)
echo '/usr/local/lib/board' > /etc/ld.so.conf.d/board.conf
/sbin/ldconfig
 
/board/board.cpp
1,6 → 1,6
 
#ifndef __BOARD_H__
#include "board.h"
#include "board.h"
#endif
 
//-----------------------------------------------------------------------------
32,6 → 32,7
 
int board::brd_open(const char *name)
{
DEBUG_PRINT("%s()\n", __FUNCTION__);
return core_open(name);
}
 
39,6 → 40,7
 
int board::brd_init()
{
DEBUG_PRINT("%s()\n", __FUNCTION__);
return core_init();
}
 
46,6 → 48,7
 
int board::brd_reset()
{
DEBUG_PRINT("%s()\n", __FUNCTION__);
return core_reset();
}
 
53,6 → 56,7
 
int board::brd_close()
{
DEBUG_PRINT("%s()\n", __FUNCTION__);
return core_close();
}
 
60,6 → 64,7
 
int board::brd_load_dsp()
{
DEBUG_PRINT("%s()\n", __FUNCTION__);
return core_load_dsp();
}
 
67,6 → 72,7
 
int board::brd_load_pld()
{
DEBUG_PRINT("%s()\n", __FUNCTION__);
return core_load_pld();
}
 
74,6 → 80,7
 
int board::brd_board_info()
{
DEBUG_PRINT("%s()\n", __FUNCTION__);
return core_board_info();
}
 
81,6 → 88,7
 
int board::brd_pld_info()
{
DEBUG_PRINT("%s()\n", __FUNCTION__);
return core_pld_info();
}
 
88,10 → 96,18
 
int board::brd_resource()
{
DEBUG_PRINT("%s()\n", __FUNCTION__);
return core_resource();
}
 
//-----------------------------------------------------------------------------
 
void board::brd_delay(int ms)
{
DEBUG_PRINT("%s()\n", __FUNCTION__);
core_delay(ms);
}
 
/*
std::vector<struct memory_block>* board::dma_alloc(u32 dmaChannel, u32 blockNumber, u32 blockSize)
{
144,6 → 160,7
 
u32 board::brd_reg_peek_dir( u32 trd, u32 reg )
{
DEBUG_PRINT("%s()\n", __FUNCTION__);
return core_reg_peek_dir( trd, reg );
}
 
151,6 → 168,7
 
u32 board::brd_reg_peek_ind( u32 trd, u32 reg )
{
DEBUG_PRINT("%s()\n", __FUNCTION__);
return core_reg_peek_ind( trd, reg );
}
 
158,6 → 176,7
 
void board::brd_reg_poke_dir( u32 trd, u32 reg, u32 val )
{
DEBUG_PRINT("%s()\n", __FUNCTION__);
return core_reg_poke_dir( trd, reg, val );
}
 
165,6 → 184,7
 
void board::brd_reg_poke_ind( u32 trd, u32 reg, u32 val )
{
DEBUG_PRINT("%s()\n", __FUNCTION__);
return core_reg_poke_ind( trd, reg, val );
}
 
172,6 → 192,7
 
u32 board::brd_bar0_read( u32 offset )
{
DEBUG_PRINT("%s()\n", __FUNCTION__);
return core_bar0_read( offset );
}
 
179,6 → 200,7
 
void board::brd_bar0_write( u32 offset, u32 val )
{
DEBUG_PRINT("%s()\n", __FUNCTION__);
return core_bar0_write( offset, val );
}
 
186,6 → 208,7
 
u32 board::brd_bar1_read( u32 offset )
{
DEBUG_PRINT("%s()\n", __FUNCTION__);
return core_bar1_read( offset );
}
 
193,6 → 216,7
 
void board::brd_bar1_write( u32 offset, u32 val )
{
DEBUG_PRINT("%s()\n", __FUNCTION__);
return core_bar1_write(offset, val);
}
 
200,14 → 224,19
 
u32 board::dma_alloc(int DmaChan, BRDctrl_StreamCBufAlloc* sSCA)
{
DEBUG_PRINT("%s()\n", __FUNCTION__);
return core_alloc(DmaChan, sSCA);
}
 
//-----------------------------------------------------------------------------
 
u32 board::dma_allocate_memory(int DmaChan, void** pBuf, u32 blkSize, u32 blkNum, u32 isSysMem, u32 dir, u32 addr)
u32 board::dma_allocate_memory(int DmaChan, void** pBuf, u32 blkSize,
u32 blkNum, u32 isSysMem, u32 dir,
u32 addr, BRDstrm_Stub **pStub)
{
return core_allocate_memory(DmaChan, pBuf, blkSize, blkNum, isSysMem, dir, addr);
DEBUG_PRINT("%s()\n", __FUNCTION__);
return core_allocate_memory(DmaChan, pBuf, blkSize,
blkNum, isSysMem, dir, addr, pStub);
}
 
//-----------------------------------------------------------------------------
214,6 → 243,7
 
u32 board::dma_free_memory(int DmaChan)
{
DEBUG_PRINT("%s()\n", __FUNCTION__);
return core_free_memory(DmaChan);
}
 
221,6 → 251,7
 
u32 board::dma_start(int DmaChan, int IsCycling)
{
DEBUG_PRINT("%s()\n", __FUNCTION__);
return core_start_dma(DmaChan, IsCycling);
}
 
228,6 → 259,7
 
u32 board::dma_stop(int DmaChan)
{
DEBUG_PRINT("%s()\n", __FUNCTION__);
return core_stop_dma(DmaChan);
}
 
235,6 → 267,7
 
u32 board::dma_state(int DmaChan, u32 msTimeout, int& state, u32& blkNum)
{
DEBUG_PRINT("%s()\n", __FUNCTION__);
return core_state_dma(DmaChan, msTimeout, state, blkNum);
}
 
242,6 → 275,7
 
u32 board::dma_wait_buffer(int DmaChan, u32 msTimeout)
{
DEBUG_PRINT("%s()\n", __FUNCTION__);
return core_wait_buffer(DmaChan, msTimeout);
}
 
249,6 → 283,7
 
u32 board::dma_wait_block(int DmaChan, u32 msTimeout)
{
DEBUG_PRINT("%s()\n", __FUNCTION__);
return core_wait_block(DmaChan, msTimeout);
}
 
256,6 → 291,7
 
u32 board::dma_reset_fifo(int DmaChan)
{
DEBUG_PRINT("%s()\n", __FUNCTION__);
return core_reset_fifo(DmaChan);
}
 
263,6 → 299,7
 
u32 board::dma_set_local_addr(int DmaChan, u32 addr)
{
DEBUG_PRINT("%s()\n", __FUNCTION__);
return core_set_local_addr(DmaChan, addr);
}
 
270,6 → 307,7
 
u32 board::dma_adjust(int DmaChan, u32 mode)
{
DEBUG_PRINT("%s()\n", __FUNCTION__);
return core_adjust(DmaChan, mode);
}
 
277,6 → 315,7
 
u32 board::dma_done(int DmaChan, u32 blockNumber)
{
DEBUG_PRINT("%s()\n", __FUNCTION__);
return core_done(DmaChan, blockNumber);
}
 
/board/brd_info.h
1,11 → 1,40
#ifndef _BRD_INFO_H_
#define _BRD_INFO_H_
 
#ifndef __BRD_INFO_H__
#define __BRD_INFO_H__
//-----------------------------------------------------------------------------
// board configuration data structure
 
#include <string>
struct board_info {
size_t PhysAddress[6];
void* VirtAddress[6];
size_t Size[6];
size_t InterruptLevel;
size_t InterruptVector;
unsigned short vendor_id;
unsigned short device_id;
};
/*
//-----------------------------------------------------------------------------
// memory block structure
struct memory_block {
size_t phys;
void* virt;
size_t size;
};
 
struct board_info_t {
std::string name;
//-----------------------------------------------------------------------------
// memory block structure
struct memory_descriptor {
size_t dma_channel;
size_t total_blocks;
struct memory_block *blocks;
};
 
#endif //__BRD_INFO_H__
//-----------------------------------------------------------------------------
// stub memory structure
struct stub_descriptor {
size_t dma_channel;
struct memory_block stub;
};
*/
#endif
/board/board.h
23,6 → 23,13
#include "ctrlstrm.h"
#endif
 
#ifdef __VERBOSE__
#include <stdio.h>
#define DEBUG_PRINT(fmt, args...) fprintf(stderr, fmt, ## args)
#else
#define DEBUG_PRINT(fmt, args...)
#endif
 
class board {
 
private:
36,9 → 43,12
virtual int core_board_info() = 0;
virtual int core_pld_info() = 0;
virtual int core_resource() = 0;
virtual void core_delay(int ms) = 0;
 
virtual u32 core_alloc(int DmaChan, BRDctrl_StreamCBufAlloc* sSCA) = 0;
virtual u32 core_allocate_memory(int DmaChan, void** pBuf, u32 blkSize, u32 blkNum, u32 isSysMem, u32 dir, u32 addr) = 0;
virtual u32 core_allocate_memory(int DmaChan, void** pBuf, u32 blkSize,
u32 blkNum, u32 isSysMem, u32 dir,
u32 addr, BRDstrm_Stub **pStub ) = 0;
virtual u32 core_free_memory(int DmaChan) = 0;
virtual u32 core_start_dma(int DmaChan, int IsCycling) = 0;
virtual u32 core_stop_dma(int DmaChan) = 0;
69,6 → 79,7
int brd_close();
int brd_load_dsp();
int brd_load_pld();
void brd_delay(int ms);
 
int brd_board_info();
int brd_pld_info();
76,7 → 87,9
 
//! Методы управления каналами DMA BRDSHELL
u32 dma_alloc(int DmaChan, BRDctrl_StreamCBufAlloc* sSCA);
u32 dma_allocate_memory(int DmaChan, void** pBuf, u32 blkSize, u32 blkNum, u32 isSysMem, u32 dir, u32 addr);
u32 dma_allocate_memory(int DmaChan, void** pBuf, u32 blkSize,
u32 blkNum, u32 isSysMem,
u32 dir, u32 addr, BRDstrm_Stub **pStub);
u32 dma_free_memory(int DmaChan);
u32 dma_start(int DmaChan, int IsCycling);
u32 dma_stop(int DmaChan);
100,9 → 113,7
void brd_bar1_write( u32 offset, u32 val );
};
 
//#define RegPeekDir(trd, reg) brd_reg_peek_dir((trd), (reg))
//#define RegPeekInd(trd, reg) brd_reg_peek_ind((trd), (reg));
//#define RegPokeDir(trd, reg, val) brd_reg_poke_dir((trd), (reg), (val));
//#define RegPokeOnd(trd, reg, val) brd_reg_poke_ind((trd), (reg), (val));
//! Тип конструктора объектов
typedef board* (*board_factory)(void);
 
#endif //__BOARD_H__
/board/Makefile
0,0 → 1,29
#
#change this makefile for your target...
#
 
BASENAME = libboard.so
SONAME = $(BASENAME).0
LIBNAME = $(BASENAME).0.0
 
ROOT_DIR := $(shell pwd)
LIBDIR := ../../lib
 
SRC := $(wildcard *.cpp)
SOURCE := $(SRC)
OBJ_FILES := $(SOURCE:.cpp=.o)
 
all: $(LIBNAME)
 
CFLAGS += -I. -I../utils
 
$(LIBNAME): $(OBJ_FILES)
$(LD) -g -shared -rdynamic -Wl,-soname,$(SONAME) \
-o $(LIBNAME) $(notdir $(OBJ_FILES)) -ldl -lrt -lc -lpthread
chmod 666 $(LIBNAME)
ln -sf $(LIBNAME) $(SONAME)
ln -sf $(SONAME) $(BASENAME)
cp -vfa $(BASENAME) $(SONAME) $(LIBNAME) $(LIBDIR)
rm *.o *.d
 
include ../Mk.Rules
/pex/dma_memory.cpp File deleted
/pex/dma_memory.h File deleted
/pex/pex_board.cpp
2,9 → 2,6
#ifndef __PEX_BOARD_H__
#include "pex_board.h"
#endif
#ifndef __DMA_MEMORY__H__
#include "dma_memory.h"
#endif
 
//-----------------------------------------------------------------------------
 
33,7 → 30,7
fd = -1;
bar0 = bar1 = NULL;
memset(&bi, 0, sizeof(bi));
m_dma = new dma_memory();
//m_dma = new dma_memory();
}
 
//-----------------------------------------------------------------------------
40,7 → 37,7
 
pex_board::~pex_board()
{
if(m_dma) delete m_dma;
//if(m_dma) delete m_dma;
core_close();
}
 
161,21 → 158,21
// подготовим к работе ПЛИС ADM
fprintf(stderr,"%s(): Prepare ADM PLD.\n", __FUNCTION__);
core_block_write( 0, 8, 0);
core_pause(100); // pause ~ 100 msec
core_delay(100); // pause ~ 100 msec
for(i = 0; i < 10; i++)
{
core_block_write( 0, 8, 1);
core_pause(100); // pause ~ 100 msec
core_delay(100); // pause ~ 100 msec
core_block_write( 0, 8, 3);
core_pause(100); // pause ~ 100 msec
core_delay(100); // pause ~ 100 msec
core_block_write( 0, 8, 7);
core_pause(100); // pause ~ 100 msec
core_delay(100); // pause ~ 100 msec
temp = core_block_read( 0, 010 ) & 0x01;
if(temp)
break;
}
core_block_write( 0, 8, 0xF );
core_pause(100); // pause ~ 100 msec
core_delay(100); // pause ~ 100 msec
 
return 0;
}
293,9 → 290,9
d5=core_reg_peek_ind( ii, 0x105 );
 
switch( d ) {
case 1: str="TRD_MAIN "; break;
case 2: str="TRD_BASE_DAC "; break;
case 3: str="TRD_PIO_STD "; break;
case 1: str="TRD_MAIN "; break;
case 2: str="TRD_BASE_DAC "; break;
case 3: str="TRD_PIO_STD "; break;
case 0: str=" - "; break;
case 0x47: str="SBSRAM_IN "; break;
case 0x48: str="SBSRAM_OUT "; break;
319,6 → 316,9
case 0x72: str="TRD_TS201 "; break;
case 0x73: str="TRD_STREAM_IN "; break;
case 0x74: str="TRD_STREAM_OUT"; break;
case 0xA0: str="TRD_ADC "; break;
case 0xA1: str="TRD_DAC "; break;
case 0x91: str="TRD_EMAC "; break;
 
 
default: str="UNKNOWN"; break;
351,7 → 351,7
 
//-----------------------------------------------------------------------------
 
void pex_board::core_pause(int ms)
void pex_board::core_delay(int ms)
{
struct timeval tv = {0, 0};
tv.tv_usec = 1000*ms;
394,7 → 394,7
break;
 
if( ii>10000 )
core_pause( 1 );
core_delay( 1 );
if( ii>20000 ) {
return 0xFFFF;
}
439,7 → 439,7
break;
 
if( ii>10000 )
core_pause( 1 );
core_delay( 1 );
if( ii>20000 ) {
return;
}
452,7 → 452,7
 
u32 pex_board::core_bar0_read( u32 offset )
{
return bar0[offset];
return bar0[2*offset];
}
 
//-----------------------------------------------------------------------------
459,7 → 459,7
 
void pex_board::core_bar0_write( u32 offset, u32 val )
{
bar0[offset] = val;
bar0[2*offset] = val;
}
 
//-----------------------------------------------------------------------------
466,7 → 466,7
 
u32 pex_board::core_bar1_read( u32 offset )
{
return bar1[offset];
return bar1[2*offset];
}
 
//-----------------------------------------------------------------------------
582,7 → 582,14
 
//-----------------------------------------------------------------------------
 
u32 pex_board::core_allocate_memory(int DmaChan, void** pBuf, u32 blkSize, u32 blkNum, u32 isSysMem, u32 dir, u32 addr)
u32 pex_board::core_allocate_memory(int DmaChan,
void** pBuf,
u32 blkSize,
u32 blkNum,
u32 isSysMem,
u32 dir,
u32 addr,
BRDstrm_Stub **pStub )
{
m_DescrSize[DmaChan] = sizeof(AMB_MEM_DMA_CHANNEL) + (blkNum - 1) * sizeof(void*);
m_Descr[DmaChan] = (AMB_MEM_DMA_CHANNEL*) new u8[m_DescrSize[DmaChan]];
644,6 → 651,7
}
 
*pBuf = &m_Descr[DmaChan]->pBlock[0];
*pStub = (BRDstrm_Stub*)m_Descr[DmaChan]->pStub;
 
return 0;
}
/pex/factory.cpp
0,0 → 1,14
 
#include <iostream>
#include <string>
#include <istream>
#include <fstream>
#include <iomanip>
 
#include "pex_board.h"
#include "factory.h"
 
BRD_API board* create_board()
{
return new pex_board();
}
/pex/pex_board.h
21,7 → 21,7
 
//-----------------------------------------------------------------------------
 
class dma_memory;
//class dma_memory;
 
//-----------------------------------------------------------------------------
#define MAX_NUMBER_OF_DMACHANNELS 4
36,7 → 36,7
struct board_info bi;
void core_pause(int ms);
 
dma_memory *m_dma;
//dma_memory *m_dma;
 
AMB_MEM_DMA_CHANNEL *m_Descr[MAX_NUMBER_OF_DMACHANNELS];
u32 m_DescrSize[MAX_NUMBER_OF_DMACHANNELS];
54,9 → 54,12
int core_board_info();
int core_pld_info();
int core_resource();
void core_delay(int ms);
 
u32 core_alloc(int DmaChan, BRDctrl_StreamCBufAlloc* sSCA);
u32 core_allocate_memory(int DmaChan, void** pBuf, u32 blkSize, u32 blkNum, u32 isSysMem, u32 dir, u32 addr);
u32 core_allocate_memory(int DmaChan, void** pBuf, u32 blkSize,
u32 blkNum, u32 isSysMem, u32 dir,
u32 addr, BRDstrm_Stub **pStub);
u32 core_free_memory(int DmaChan);
u32 core_start_dma(int DmaChan, int IsCycling);
u32 core_stop_dma(int DmaChan);
/pex/factory.h
0,0 → 1,23
#ifndef FACTORY_H
#define FACTORY_H
 
#include "board.h"
 
#ifdef WINDOWS
#define BRD_API __declspec( dllexport )
#else
#define BRD_API
#endif
 
#ifdef __cplusplus
extern "C" {
#endif
 
BRD_API board* create_board();
 
#ifdef __cplusplus
};
#endif
 
 
#endif // FACTORY_H
/pex/Makefile
0,0 → 1,45
#
#change this makefile for your target...
#
 
BASENAME = libpex_board.so
SONAME = $(BASENAME).0
LIBNAME = $(BASENAME).0.0
 
ROOT_DIR := $(shell pwd)
LIBDIR := ../../lib
 
CC := $(CROSS_COMPILE)g++
LD := $(CROSS_COMPILE)g++
 
INCDIR := . \
../../driver/pexdrv \
../board \
../utils \
../dma
 
INCLUDE := $(addprefix -I, $(INCDIR))
 
CFLAGS := -D__LINUX__ -O2 -Wall $(INCLUDE)
LFLAGS := -ldl -lrt -lpthread -lm
 
SRCFILE := $(wildcard *.cpp)
SRCFILE += $(wildcard ../board/*.cpp)
#SRCFILE += $(wildcard ../dma/*.cpp)
OBJFILE := $(patsubst %.cpp,%.o, $(SRCFILE))
 
all: $(LIBNAME)
 
$(LIBNAME): $(OBJFILE)
$(LD) -shared -rdynamic -Wl,-soname,$(SONAME) \
-o $(LIBNAME) $(notdir $(OBJFILE)) $(LFLAGS)
chmod 666 $(LIBNAME)
ln -sf $(LIBNAME) $(SONAME)
ln -sf $(SONAME) $(BASENAME)
cp -fa $(BASENAME) $(SONAME) $(LIBNAME) $(LIBDIR)
rm *.o *.d
 
include ../Mk.Rules
 
src:
echo $(SRCFILE)

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.