• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/cfe/build/chipimages/bcm4707/romtool/
1#include <stdio.h>
2#include <stdlib.h>
3#include <string.h>
4
5#define ROMSIZE (128*1024)
6
7const char *byte2str[] = {
8	"00000000", "00000001", "00000010", "00000011", "00000100", "00000101", "00000110", "00000111",
9	"00001000", "00001001", "00001010", "00001011", "00001100", "00001101", "00001110", "00001111",
10	"00010000", "00010001", "00010010", "00010011", "00010100", "00010101", "00010110", "00010111",
11	"00011000", "00011001", "00011010", "00011011", "00011100", "00011101", "00011110", "00011111",
12	"00100000", "00100001", "00100010", "00100011", "00100100", "00100101", "00100110", "00100111",
13	"00101000", "00101001", "00101010", "00101011", "00101100", "00101101", "00101110", "00101111",
14	"00110000", "00110001", "00110010", "00110011", "00110100", "00110101", "00110110", "00110111",
15	"00111000", "00111001", "00111010", "00111011", "00111100", "00111101", "00111110", "00111111",
16	"01000000", "01000001", "01000010", "01000011", "01000100", "01000101", "01000110", "01000111",
17	"01001000", "01001001", "01001010", "01001011", "01001100", "01001101", "01001110", "01001111",
18	"01010000", "01010001", "01010010", "01010011", "01010100", "01010101", "01010110", "01010111",
19	"01011000", "01011001", "01011010", "01011011", "01011100", "01011101", "01011110", "01011111",
20	"01100000", "01100001", "01100010", "01100011", "01100100", "01100101", "01100110", "01100111",
21	"01101000", "01101001", "01101010", "01101011", "01101100", "01101101", "01101110", "01101111",
22	"01110000", "01110001", "01110010", "01110011", "01110100", "01110101", "01110110", "01110111",
23	"01111000", "01111001", "01111010", "01111011", "01111100", "01111101", "01111110", "01111111",
24	"10000000", "10000001", "10000010", "10000011", "10000100", "10000101", "10000110", "10000111",
25	"10001000", "10001001", "10001010", "10001011", "10001100", "10001101", "10001110", "10001111",
26	"10010000", "10010001", "10010010", "10010011", "10010100", "10010101", "10010110", "10010111",
27	"10011000", "10011001", "10011010", "10011011", "10011100", "10011101", "10011110", "10011111",
28	"10100000", "10100001", "10100010", "10100011", "10100100", "10100101", "10100110", "10100111",
29	"10101000", "10101001", "10101010", "10101011", "10101100", "10101101", "10101110", "10101111",
30	"10110000", "10110001", "10110010", "10110011", "10110100", "10110101", "10110110", "10110111",
31	"10111000", "10111001", "10111010", "10111011", "10111100", "10111101", "10111110", "10111111",
32	"11000000", "11000001", "11000010", "11000011", "11000100", "11000101", "11000110", "11000111",
33	"11001000", "11001001", "11001010", "11001011", "11001100", "11001101", "11001110", "11001111",
34	"11010000", "11010001", "11010010", "11010011", "11010100", "11010101", "11010110", "11010111",
35	"11011000", "11011001", "11011010", "11011011", "11011100", "11011101", "11011110", "11011111",
36	"11100000", "11100001", "11100010", "11100011", "11100100", "11100101", "11100110", "11100111",
37	"11101000", "11101001", "11101010", "11101011", "11101100", "11101101", "11101110", "11101111",
38	"11110000", "11110001", "11110010", "11110011", "11110100", "11110101", "11110110", "11110111",
39	"11111000", "11111001", "11111010", "11111011", "11111100", "11111101", "11111110", "11111111",
40};
41
42void usage(char *prog)
43{
44	printf("%s <bin_file> [<code_file>]\n");
45}
46
47int main(int argc, char *argv[])
48{
49	char *bin_file, *codefile;
50	FILE *in, *out;
51	int len;
52	unsigned char byte;
53	char bytestr[100], line[100], buf[100];
54	unsigned int bytecnt;
55
56	if (argc < 2) {
57		usage(argv[0]);
58		return -1;
59	}
60	len = strlen(argv[1]);
61	bin_file = malloc(len+1);
62	strcpy(bin_file, argv[1]);
63	if (argc > 2) {
64		len = strlen(argv[2]);
65		codefile = malloc(len+1);
66		strcpy(codefile, argv[2]);
67	} else {
68		len += strlen(".codefile");
69		codefile = malloc(len+1);
70		sprintf(codefile, "%s.codefile", bin_file);
71	}
72	in = fopen(bin_file, "rb");
73	if (!in) {
74		printf("Error opening input file %s\n", bin_file);
75		return -1;
76	}
77	out = fopen(codefile, "w+");
78	if (!out) {
79		fclose(in);
80		printf("Error opening output file %s\n", codefile);
81		return -1;
82	}
83	printf("input %s, output %s\n", bin_file, codefile);
84	bytecnt = 0;
85	while (bytecnt < ROMSIZE) {
86		if (fread(&byte, sizeof(unsigned char), 1, in) != 0) {
87			sprintf(bytestr, "%s", byte2str[byte]);
88		} else {
89			sprintf(bytestr, "%s", byte2str[0]);
90		}
91		if (bytecnt % 8 == 0)
92			strcpy(line, bytestr);
93		else {
94			sprintf(buf, "%s%s", bytestr, line);
95			strcpy(line, buf);
96		}
97		bytecnt++;
98		if (bytecnt % 8 == 0) {
99			fprintf(out, "%s\n", line);
100			memset(line, 0, sizeof(line));
101		}
102	}
103
104	fclose(in);
105	fclose(out);
106	return 0;
107}
108