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

Subversion Repositories openfire2

[/] [openfire2/] [trunk/] [utils/] [bin2prom.c] - Blame information for rev 2

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

Line No. Rev Author Line
1 2 toni32
#include <stdio.h>
2
#include <stdlib.h>
3
 
4
#define PROM_SYNC_PATTERN       "8F9FAFBF"
5
 
6
long filesize(FILE *stream)
7
{
8
   long curpos, length;
9
 
10
   curpos = ftell(stream);
11
   fseek(stream, 0L, SEEK_END);
12
   length = ftell(stream);
13
   fseek(stream, curpos, SEEK_SET);
14
   return length;
15
}
16
 
17
void main(int argn, char **argc)
18
{
19
  int len, k;
20
  FILE *f1, *f2;
21
  char c;
22
 
23
  if(argn < 4 || argn > 5)
24
  {
25
    printf("usage: bin2prom bin-file prom-file file-num [sync pattern]\n");
26
    exit(1);
27
  }
28
  f1 = fopen(argc[1], "rb");            // open bin file
29
  if(f1 == NULL)
30
  {
31
    printf("error: can't open BIN file %s\n", argc[1]);
32
    exit(1);
33
  }
34
  len = filesize(f1);                           // get file size
35
  f2 = fopen(argc[2], "w");             // create prom file (ascii)
36
  // headers (for info)
37
  fprintf(f2, "# SYNC PATTERN: 0x%s\n", argn == 5 ? argc[4] : PROM_SYNC_PATTERN);
38
  fprintf(f2, "# FILE NUMBER : 0x%02X\n", atoi(argc[3]) );
39
  fprintf(f2, "# FILE SIZE   : 0x%06X\n", len & 0xFFFFFF);
40
 
41
  fprintf(f2, "%s",   argn == 5 ? argc[4] : PROM_SYNC_PATTERN); // 4 bytes       write header
42
  fprintf(f2, "%02X", atoi(argc[3]));   // 1 bytes
43
  fprintf(f2, "%06X", len & 0xFFFFFF);  // 3 bytes
44
 
45
  k = 8;                                                                // current header is 8 bytes length
46
  while(len-- > 0)
47
  {
48
    fread(&c, sizeof(char), 1, f1);             // read current byte
49
         fprintf(f2, "%02X", ((unsigned) c) & 0xff);
50
    if(++k == 16) { fprintf(f2, "\n"); k = 0; }
51
  }
52
  for(; k < 16; k++) fprintf(f2, "00");
53
 
54
  fprintf(f2, "\n");
55
  fclose(f2);
56
  fclose(f1);
57
}

powered by: WebSVN 2.1.0

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