85 lines
1.8 KiB
C
85 lines
1.8 KiB
C
|
/* Xilinx firmware convertor program.
|
||
|
*
|
||
|
* Written by Jim Dixon <jim@lambdatel.com>.
|
||
|
*
|
||
|
* Copyright (C) 2001 Jim Dixon / Zapata Telephony.
|
||
|
* Copyright (C) 2001-2008 Digium, Inc.
|
||
|
*
|
||
|
* All rights reserved.
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
/*
|
||
|
* See http://www.asterisk.org for more information about
|
||
|
* the Asterisk project. Please do not directly contact
|
||
|
* any of the maintainers of this project for assistance;
|
||
|
* the project provides a web site, mailing lists and IRC
|
||
|
* channels for your use.
|
||
|
*
|
||
|
* This program is free software, distributed under the terms of
|
||
|
* the GNU General Public License Version 2 as published by the
|
||
|
* Free Software Foundation. See the LICENSE file included with
|
||
|
* this program for more details.
|
||
|
*/
|
||
|
|
||
|
#include <stdio.h>
|
||
|
#include <stdlib.h>
|
||
|
#include <string.h>
|
||
|
|
||
|
#define SWATH 12
|
||
|
|
||
|
int main(int argc, char *argv[])
|
||
|
{
|
||
|
FILE *fp;
|
||
|
int i,j,nbytes;
|
||
|
unsigned char c;
|
||
|
char buf[300];
|
||
|
|
||
|
if (argc < 3)
|
||
|
{
|
||
|
puts("Usage... makefw filename.rbt array_name");
|
||
|
exit(1);
|
||
|
}
|
||
|
|
||
|
fp = fopen(argv[1],"r");
|
||
|
if (!fp)
|
||
|
{
|
||
|
perror("bit file open");
|
||
|
exit(1);
|
||
|
}
|
||
|
nbytes = 0;
|
||
|
printf("static unsigned char %s[] = {\n",argv[2]);
|
||
|
i = 0;
|
||
|
while(fgets(buf,sizeof(buf) - 1,fp))
|
||
|
{
|
||
|
if (!buf[0]) continue;
|
||
|
if (buf[strlen(buf) - 1] < ' ') buf[strlen(buf) - 1] = 0;
|
||
|
if (!buf[0]) continue;
|
||
|
if (buf[strlen(buf) - 1] < ' ') buf[strlen(buf) - 1] = 0;
|
||
|
if (!buf[0]) continue;
|
||
|
if (strlen(buf) < 32) continue;
|
||
|
if ((buf[0] != '0') && (buf[0] != '1')) continue;
|
||
|
c = 0;
|
||
|
for(j = 0; buf[j]; j++)
|
||
|
{
|
||
|
if (buf[j] > '0') c |= 1 << (j & 7);
|
||
|
if ((j & 7) == 7)
|
||
|
{
|
||
|
nbytes++;
|
||
|
if (i) printf(",");
|
||
|
printf("0x%02x",c);
|
||
|
if (i++ == SWATH) {
|
||
|
printf(",\n");
|
||
|
i = 0;
|
||
|
}
|
||
|
c = 0;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
printf("\n};\n\n");
|
||
|
fprintf(stderr,"Loaded %d bytes from file\n",nbytes);
|
||
|
fclose(fp);
|
||
|
exit(0);
|
||
|
}
|
||
|
|