]> git.kernelconcepts.de Git - karo-tx-redboot.git/blob - packages/hal/arm/pid/v2_0/misc/dl.c
TX51 pre-release
[karo-tx-redboot.git] / packages / hal / arm / pid / v2_0 / misc / dl.c
1 //==========================================================================
2 //
3 //        dl.c
4 //
5 //        ARM PID7 eval board FLASH program tool
6 //
7 //==========================================================================
8 //####ECOSGPLCOPYRIGHTBEGIN####
9 // -------------------------------------------
10 // This file is part of eCos, the Embedded Configurable Operating System.
11 // Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
12 //
13 // eCos is free software; you can redistribute it and/or modify it under
14 // the terms of the GNU General Public License as published by the Free
15 // Software Foundation; either version 2 or (at your option) any later version.
16 //
17 // eCos is distributed in the hope that it will be useful, but WITHOUT ANY
18 // WARRANTY; without even the implied warranty of MERCHANTABILITY or
19 // FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
20 // for more details.
21 //
22 // You should have received a copy of the GNU General Public License along
23 // with eCos; if not, write to the Free Software Foundation, Inc.,
24 // 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
25 //
26 // As a special exception, if other files instantiate templates or use macros
27 // or inline functions from this file, or you compile this file and link it
28 // with other works to produce a work based on this file, this file does not
29 // by itself cause the resulting work to be covered by the GNU General Public
30 // License. However the source code for this file must still be made available
31 // in accordance with section (3) of the GNU General Public License.
32 //
33 // This exception does not invalidate any other reasons why a work based on
34 // this file might be covered by the GNU General Public License.
35 //
36 // Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
37 // at http://sources.redhat.com/ecos/ecos-license/
38 // -------------------------------------------
39 //####ECOSGPLCOPYRIGHTEND####
40 //==========================================================================
41 //#####DESCRIPTIONBEGIN####
42 //
43 // Author(s):     gthomas
44 // Contributors:  gthomas
45 // Date:          1998-11-18
46 // Description:   Tool used for simple handshake downloads.
47 //####DESCRIPTIONEND####
48
49 #include <stdio.h>
50
51 #define SYNC_COUNT 63
52
53 int
54 main(int argc, char *argv[])
55 {
56     int c, count, j;
57     char cout, cin;
58     FILE *in, *log;
59     if ((in = fopen(argv[1], "r")) == (FILE *)NULL) {
60         fprintf(stderr, "Can't open '%s'\n", argv[1]);
61         exit(1);
62     }
63     if ((log = fopen("/tmp/dl.log", "w")) == (FILE *)NULL) {
64         fprintf(stderr, "Can't open log file\n");
65         exit(1);
66     }
67     fprintf(stderr, "Downloading '%s'\n", argv[1]);
68     count = 0; j = 0;
69     write(1, ">", 1);  // Magic start
70     while ((c = fgetc(in)) != EOF) {
71         cout = c;
72         write(1, &cout, 1);
73         if (++j == SYNC_COUNT) {
74             read(0, &cin, 1);
75             if (cin != cout) {
76                 fprintf(stderr, "Sync problem - in: %x, out: %x, byte: %x\n", cin, cout, count);
77                 fprintf(log, "Sync problem - in: %x, out: %x, byte: %x\n", cin, cout, count);
78                 fflush(log);
79                 break;
80             }
81             j = 0;
82         }
83         count++;
84         if ((count % 256) == 255) fprintf(stderr, "%08X\n", count);
85     }
86     sleep(2);
87     write(1, ":", 1);
88     fclose(log);
89     exit(0);
90 }