xref: /utopia/UTPA2-700.0.x/modules/vdec_v1/hal/M7821/mvd/tools/fwMVD_bin2hex.pl (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1*53ee8cc1Swenshuai.xi#
2*53ee8cc1Swenshuai.xi# bin2hex.pl by Chami.com
3*53ee8cc1Swenshuai.xi# http://www.chami.com/tips/
4*53ee8cc1Swenshuai.xi#
5*53ee8cc1Swenshuai.xi# Modify by Mark Chiang
6*53ee8cc1Swenshuai.xi
7*53ee8cc1Swenshuai.xi# number of characters per line
8*53ee8cc1Swenshuai.xi$chars_per_line = 16;
9*53ee8cc1Swenshuai.xi
10*53ee8cc1Swenshuai.xi# -------------------------------------
11*53ee8cc1Swenshuai.xi
12*53ee8cc1Swenshuai.xi# language id
13*53ee8cc1Swenshuai.xi#
14*53ee8cc1Swenshuai.xi# 0 = Perl (default)
15*53ee8cc1Swenshuai.xi# 1 = C / C++
16*53ee8cc1Swenshuai.xi# 2 = Pascal / Delphi
17*53ee8cc1Swenshuai.xi#
18*53ee8cc1Swenshuai.xi$lang  = $ARGV[1];
19*53ee8cc1Swenshuai.xi
20*53ee8cc1Swenshuai.xi$rem_begin  = "begin binary data:";
21*53ee8cc1Swenshuai.xi$rem_end    = "end binary data.";
22*53ee8cc1Swenshuai.xi
23*53ee8cc1Swenshuai.xi# initialize for Perl strings
24*53ee8cc1Swenshuai.xi# by default
25*53ee8cc1Swenshuai.xi$_var       = "# $rem_begin\n".
26*53ee8cc1Swenshuai.xi              "\$bin_data = # %d\n";
27*53ee8cc1Swenshuai.xi$_begin     = "\"";
28*53ee8cc1Swenshuai.xi$_end       = "\";\n";
29*53ee8cc1Swenshuai.xi$_break     = "\".\n\"";
30*53ee8cc1Swenshuai.xi$_format    = "\\x%02X";
31*53ee8cc1Swenshuai.xi$_separator = "";
32*53ee8cc1Swenshuai.xi$_comment   = "# $rem_end ".
33*53ee8cc1Swenshuai.xi              "size = %d bytes";
34*53ee8cc1Swenshuai.xi
35*53ee8cc1Swenshuai.xi
36*53ee8cc1Swenshuai.xi# C / C++
37*53ee8cc1Swenshuai.xiif(1 == $lang)
38*53ee8cc1Swenshuai.xi{
39*53ee8cc1Swenshuai.xi  $_var       = "/* $rem_begin */\n".
40*53ee8cc1Swenshuai.xi                #"const char prompt_".$ARGV[0]."[] = ".
41*53ee8cc1Swenshuai.xi                "#ifndef _FW_MVD_BIN_H_\n".
42*53ee8cc1Swenshuai.xi                "#define _FW_MVD_BIN_H_\n".
43*53ee8cc1Swenshuai.xi                "MS_U8 u8MVD_FW_Binary[] = ".
44*53ee8cc1Swenshuai.xi                "/* %d */\n";
45*53ee8cc1Swenshuai.xi  $_begin     = "{\n";
46*53ee8cc1Swenshuai.xi  $_end       = "\n};\n";
47*53ee8cc1Swenshuai.xi  $_break     = "\n";
48*53ee8cc1Swenshuai.xi  $_format    = "0x%02X";
49*53ee8cc1Swenshuai.xi  $_separator = ",";
50*53ee8cc1Swenshuai.xi  $_comment   = "/* $rem_end ".
51*53ee8cc1Swenshuai.xi                "size = %d bytes */\n".
52*53ee8cc1Swenshuai.xi                "#endif\n";
53*53ee8cc1Swenshuai.xi}
54*53ee8cc1Swenshuai.xielsif(2 == $lang)
55*53ee8cc1Swenshuai.xi{
56*53ee8cc1Swenshuai.xi  $_var       = "{ $rem_begin }\n".
57*53ee8cc1Swenshuai.xi                "const bin_data : ".
58*53ee8cc1Swenshuai.xi                "array [1..%d] of ".
59*53ee8cc1Swenshuai.xi                "byte = \n";
60*53ee8cc1Swenshuai.xi  $_begin     = "(";
61*53ee8cc1Swenshuai.xi  $_end       = ");\n";
62*53ee8cc1Swenshuai.xi  $_break     = "\n";
63*53ee8cc1Swenshuai.xi  $_format    = "\$%02X";
64*53ee8cc1Swenshuai.xi  $_separator = ",";
65*53ee8cc1Swenshuai.xi  $_comment   = "{ $rem_end ".
66*53ee8cc1Swenshuai.xi                "size = %d bytes }";
67*53ee8cc1Swenshuai.xi}
68*53ee8cc1Swenshuai.xi
69*53ee8cc1Swenshuai.xiif(open(F, "<".$ARGV[0]))
70*53ee8cc1Swenshuai.xi{
71*53ee8cc1Swenshuai.xi  binmode(F);
72*53ee8cc1Swenshuai.xi
73*53ee8cc1Swenshuai.xi  $s = '';
74*53ee8cc1Swenshuai.xi  $i = 0;
75*53ee8cc1Swenshuai.xi  $count = 0;
76*53ee8cc1Swenshuai.xi  $first = 1;
77*53ee8cc1Swenshuai.xi#  $s .= $_begin;
78*53ee8cc1Swenshuai.xi  while(!eof(F))
79*53ee8cc1Swenshuai.xi  {
80*53ee8cc1Swenshuai.xi    if($i >= $chars_per_line)
81*53ee8cc1Swenshuai.xi    {
82*53ee8cc1Swenshuai.xi      $s .= $_break;
83*53ee8cc1Swenshuai.xi      $i = 0;
84*53ee8cc1Swenshuai.xi    }
85*53ee8cc1Swenshuai.xi    if(!$first)
86*53ee8cc1Swenshuai.xi    {
87*53ee8cc1Swenshuai.xi      $s .= $_separator;
88*53ee8cc1Swenshuai.xi    }
89*53ee8cc1Swenshuai.xi    $s .= sprintf(
90*53ee8cc1Swenshuai.xi            $_format, ord(getc(F)));
91*53ee8cc1Swenshuai.xi    ++$i;
92*53ee8cc1Swenshuai.xi    ++$count;
93*53ee8cc1Swenshuai.xi    $first = 0;
94*53ee8cc1Swenshuai.xi  }
95*53ee8cc1Swenshuai.xi#  $s .= $_end;
96*53ee8cc1Swenshuai.xi#  $s .= sprintf $_comment, $count;
97*53ee8cc1Swenshuai.xi  $s .= "\n\n";
98*53ee8cc1Swenshuai.xi
99*53ee8cc1Swenshuai.xi#  $s = "\n".sprintf($_var, $count).$s;
100*53ee8cc1Swenshuai.xi
101*53ee8cc1Swenshuai.xi  print $s;
102*53ee8cc1Swenshuai.xi
103*53ee8cc1Swenshuai.xi  close( F );
104*53ee8cc1Swenshuai.xi}
105*53ee8cc1Swenshuai.xielse
106*53ee8cc1Swenshuai.xi{
107*53ee8cc1Swenshuai.xi  print
108*53ee8cc1Swenshuai.xi    "bin2hex.pl by Chami.com\n".
109*53ee8cc1Swenshuai.xi    "\n".
110*53ee8cc1Swenshuai.xi    "usage:\n".
111*53ee8cc1Swenshuai.xi    "  perl bin2hex.pl ".
112*53ee8cc1Swenshuai.xi    " \n".
113*53ee8cc1Swenshuai.xi    "\n".
114*53ee8cc1Swenshuai.xi    "   : path to the ".
115*53ee8cc1Swenshuai.xi    "binary file\n".
116*53ee8cc1Swenshuai.xi    "   : 0 = Perl, ".
117*53ee8cc1Swenshuai.xi    "1 = C/C++/Java, ".
118*53ee8cc1Swenshuai.xi    "2 = Pascal/Delphi\n".
119*53ee8cc1Swenshuai.xi    "\n";
120*53ee8cc1Swenshuai.xi}
121*53ee8cc1Swenshuai.xi
122