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

Subversion Repositories pcie_ds_dma

[/] [pcie_ds_dma/] [trunk/] [soft/] [linux/] [application/] [wb_test/] [src/] [work/] [main.cpp] - Blame information for rev 2

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 dsmv
 
2
/*
3
#ifndef __PEX_H__
4
    #include "pex.h"
5
#endif
6
*/
7
 
8
#include <cassert>
9
#include <cstdlib>
10
#include <cstring>
11
#include <iostream>
12
#include <iomanip>
13
#include <climits>
14
//#include <conio.h>
15
 
16
//-----------------------------------------------------------------------------
17
 
18
using namespace std;
19
 
20
//-----------------------------------------------------------------------------
21
/*
22
int main(int argc, char *argv[])
23
{
24
 
25
    if(argc == 1) {
26
        std::cerr << "usage: %s <device name>" << argv[0] << endl;
27
        return -1;
28
    }
29
 
30
    std ::cout << "Start testing device " << argv[1] << endl;
31
 
32
    board *brd = new pex_board();
33
 
34
    brd->brd_open(argv[1]);
35
    brd->brd_init();
36
    brd->brd_board_info();
37
    brd->brd_pld_info();
38
 
39
    for(int i=0; i<16; i++)
40
        std ::cout << "BAR0[" << i << "] = 0x" << hex << brd->brd_bar0_read(i) << dec << endl;
41
 
42
    brd->brd_close();
43
 
44
    delete brd;
45
 
46
 
47
    return 0;
48
}
49
*/
50
// FP_PEX8_TEST.cpp : Defines the entry point for the console application.
51
//
52
#include <locale.h>
53
#include <unistd.h>
54
#include <stdlib.h>
55
#include <stdio.h>
56
 
57
#include "cl_wbpex.h"
58
//#include "tf_test.h"
59
//#include "tf_teststrm.h"
60
//#include "tf_teststrmout.h"
61
//#include "useful.h"
62
 
63
CL_WBPEX    g_Board;
64
 
65
U32 isTwoTest=0;
66
 
67
void ShowPldInfo( CL_WBPEX *pBrd );
68
 
69
//
70
//=== Console
71
//
72
//HANDLE        hConsoleOut;
73
 
74
 
75
int BRDC_main(int argc, BRDCHAR* argv[])
76
{
77
    // анализ командной строки
78
    setlocale( LC_ALL, "Russian" );
79
 
80
    //TF_Test  *pTest=NULL;
81
    //TF_Test  *pTest2=NULL;
82
 
83
    BRDCHAR* fname = argv[1];
84
    BRDCHAR* fname2=NULL;
85
    if( argc<2 )
86
    {
87
        fname=(BRDCHAR*)_BRDC("");
88
    }
89
    if( argc==3 )
90
    {
91
        fname2=argv[2];
92
    }
93
 
94
 
95
    //printf( "Файл инициализации: %s\n", fname );
96
  //  try
97
    {
98
        CL_WBPEX *pBrd = &g_Board;
99
 
100
        int ret=pBrd->init();
101
 
102
        if( 0==ret )
103
        {
104
            BRDC_fprintf( stderr, _BRDC("Модуль AMBPEX открыт успешно\n") );
105
 
106
 
107
            /*
108
            for( trd=0; trd<8; trd++ )
109
                pBrd->RegPokeInd( trd, 0, 1 );
110
 
111
            for( trd=0; trd<8; trd++ )
112
                for( int ii=1; ii<32; ii++ )
113
                    pBrd->RegPokeInd( trd, ii, 0 );
114
 
115
            for( trd=0; trd<8; trd++ )
116
                pBrd->RegPokeInd( trd, 0, 0 );
117
            */
118
 
119
        } else
120
        {
121
            BRDC_fprintf( stderr, _BRDC("Ошибка при открытии модуля AMBPEX: ret=0x%.8X\n"), ret );
122
            //getch();
123
            exit(-1);
124
        }
125
 
126
        printf( "\nShowPldInfo\n" );
127
        ShowPldInfo( pBrd );
128
    }
129
}
130
 
131
#if 0
132
        if( fname[0]=='o' )
133
            pTest = new TF_TestStrmOut( fname, &g_AMBPEX );
134
        else
135
            pTest = new TF_TestStrm( fname, &g_AMBPEX );
136
 
137
        Sleep( 10 );
138
 
139
        if( fname2 )
140
        {
141
            isTwoTest=1;
142
            if( fname2[0]=='o' )
143
                pTest2 = new TF_TestStrmOut( fname2, &g_AMBPEX );
144
            else
145
                pTest2 = new TF_TestStrm( fname2, &g_AMBPEX );
146
        }
147
 
148
        pTest->Prepare();
149
        if( pTest2 )
150
            pTest2->Prepare();
151
 
152
        Sleep( 10 );
153
        pTest->Start();
154
        Sleep( 10 );
155
        if( pTest2 )
156
            pTest2->Start();
157
 
158
        //int key;
159
        int isFirstCallStep=1;
160
        for( ; ; )
161
        {
162
            if( kbhit() )
163
            {
164
                int key=getch();
165
                if( key==0x1B )
166
                {
167
 
168
 
169
                    pTest->Stop();
170
                    if( pTest2 )
171
                        pTest2->Stop();
172
                    BRDC_fprintf( stderr, _BRDC("\n\nОтмена\n") );
173
                }
174
 
175
                if( key=='i' )
176
                {
177
                    pBrd->RegPokeInd( 4, TRDIND_DELAY_CTRL, 0x12 );
178
                    pBrd->RegPokeInd( 4, TRDIND_DELAY_CTRL, 0x10 );
179
                    g_DelayCnt--; BRDC_fprintf( stderr, "\n\ng_DelayCnt = %d ", g_DelayCnt );
180
                }
181
 
182
                if( key=='o' )
183
                {
184
                    pBrd->RegPokeInd( 4, TRDIND_DELAY_CTRL, 0x13 );
185
                    pBrd->RegPokeInd( 4, TRDIND_DELAY_CTRL, 0x11 );
186
                    g_DelayCnt++; BRDC_fprintf( stderr, "\n\ng_DelayCnt = %d ", g_DelayCnt );
187
                }
188
 
189
            }
190
            ret=pTest->isComplete();
191
            if( ret )
192
            {
193
                if( pTest2 )
194
                {
195
                    ret=pTest2->isComplete();
196
                    if( ret )
197
                        break;
198
                } else
199
                {
200
                    break;
201
                }
202
 
203
            }
204
 
205
 
206
 
207
 
208
            //SetConsoleCursorPosition(hConsoleOut, rCursorPosition);
209
            if( isFirstCallStep || isTwoTest )
210
            {
211
 
212
              BRDC_fprintf( stderr, _BRDC("%10s %10s %10s %10s %10s %10s %10s %10s\n"), _BRDC(""), _BRDC("BLOCK_WR"), _BRDC("BLOCK_RD"), _BRDC("BLOCK_OK"), _BRDC("BLOCK_ERR"), _BRDC("SPD_CURR"), _BRDC("SPD_AVR"), _BRDC("STATUS"));
213
              BRDC_fprintf( stderr, _BRDC("\n"));
214
            }
215
 
216
            if (isFirstCallStep)
217
            {
218
                //CONSOLE_SCREEN_BUFFER_INFO csbInfo;
219
                //hConsoleOut = GetStdHandle( STD_OUTPUT_HANDLE );
220
                //GetConsoleScreenBufferInfo(hConsoleOut, &csbInfo);
221
                //rCursorPosition=csbInfo.dwCursorPosition;
222
                isFirstCallStep=false;
223
 
224
            }
225
 
226
            pTest->Step();
227
            if( isTwoTest )
228
                BRDC_fprintf( stderr, "\n" );
229
            if( pTest2 )
230
                pTest2->Step();
231
            if( isTwoTest )
232
                BRDC_fprintf( stderr, "\n\n" );
233
 
234
            Sleep( 400 );
235
 
236
            fflush( stdout );
237
        }
238
        pTest->GetResult();
239
        if( pTest2 )
240
            pTest2->GetResult();
241
 
242
 
243
        delete pTest; pTest=NULL;
244
        delete pTest2; pTest2=NULL;
245
 
246
    }
247
    catch( BRDCHAR* str )
248
    {
249
        BRDC_fprintf( stderr, _BRDC("Err: %s \n"), str );
250
    }
251
    catch( ... )
252
    {
253
        BRDC_fprintf( stderr, _BRDC("Неизвестная ошибка выполнения программы\n") );
254
    }
255
 
256
 
257
    BRDC_fprintf( stderr, "\n Press any key\n" );
258
    //getch();
259
 
260
//}
261
    return 0;
262
#endif
263
 
264
 
265
 
266
void ShowPldInfo( CL_WBPEX *pBrd )
267
{
268
 
269
 
270
    {
271
        U32 d, d1, d2, d3, d4, d5, ii;
272
        U32 block_id, block_id_mod;
273
        U32 block_ver_major, block_ver_minor;
274
        const char *str;
275
 
276
        BRDC_fprintf( stderr, _BRDC("Прошивка ПЛИС WB\r\n")  );
277
 
278
 
279
/*
280
        d=pBrd->RegPeekInd( 0, 0x108 );
281
        if( d==0x4953 ) {
282
            BRDC_fprintf( stderr, _BRDC("  SIG= 0x%.4X - Ok     \n"), d );
283
        } else {
284
            BRDC_fprintf( stderr, _BRDC("  SIG= 0x%.4X - Ошибка, ожидается 0x4953        \n"), d );
285
            throw( 1 );
286
        }
287
 
288
        d=pBrd->RegPeekInd( 0, 0x109 );  BRDC_fprintf( stderr, "   Версия интерфейса ADM:  %d.%d\n", d>>8, d&0xFF );
289
        d=pBrd->RegPeekInd( 0, 0x110 ); d1=pBrd->RegPeekInd( 0, 0x111 );
290
        BRDC_fprintf( stderr, "   Базовый модуль: 0x%.4X  v%d.%d\n", d, d1>>8, d1&0xFF );
291
 
292
        d=pBrd->RegPeekInd( 0, 0x112 ); d1=pBrd->RegPeekInd( 0, 0x113 );
293
        BRDC_fprintf( stderr, "   Субмодуль:      0x%.4X  v%d.%d\n", d, d1>>8, d1&0xFF );
294
 
295
        d=pBrd->RegPeekInd( 0, 0x10B );  BRDC_fprintf( stderr, "   Модификация прошивки ПЛИС:  %d \n", d );
296
        d=pBrd->RegPeekInd( 0, 0x10A );  BRDC_fprintf( stderr, "   Версия прошивки ПЛИС:       %d.%d\n", d>>8, d&0xFF );
297
        d=pBrd->RegPeekInd( 0, 0x114 );  BRDC_fprintf( stderr, "   Номер сборки прошивки ПЛИС: 0x%.4X\n", d );
298
*/
299
 
300
        BRDC_fprintf( stderr, "\nИнформация о блоках управления:\n\n" );
301
        for( ii=0; ii<2; ii++ ) {
302
 
303
            d= pBrd->wb_block_read( ii, 0 );
304
                block_id = d & 0xFFF; block_id_mod=(d>>12) & 0xF;
305
 
306
           d1=pBrd->wb_block_read( ii, 1 );
307
                block_ver_major=(d1>>8) & 0xFF;
308
                block_ver_minor=d1&0xFF;
309
            /*
310
            d2=pBrd->RegPeekInd( ii, 0x102 );
311
            d3=pBrd->RegPeekInd( ii, 0x103 );
312
            d4=pBrd->RegPeekInd( ii, 0x104 );
313
            d5=pBrd->RegPeekInd( ii, 0x105 );
314
            */
315
 
316
            switch( d ) {
317
                case 0x1A: str="TEST_CHECK    "; break;
318
                case 0x1B: str="TEST_GENERATE "; break;
319
 
320
 
321
            default: str="UNKNOW        "; break;
322
            }
323
            BRDC_fprintf( stderr, " %d  0x%.4X %s ", ii, block_id, str );
324
            if( block_id>0 ) {
325
                BRDC_fprintf( stderr, " MOD: %-2d VER: %d.%d ", block_id_mod, block_ver_major, block_ver_minor );
326
            } else {
327
                BRDC_fprintf( stderr, "\n" );
328
            }
329
 
330
        }
331
 
332
 
333
        BRDC_fprintf( stderr, "\r\n" );
334
 
335
    }
336
}
337
 

powered by: WebSVN 2.1.0

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