Annotation of /trunk/linterm_tools/fw_builder/bundle-tools/extract_head.pl
Parent Directory | Revision Log
Revision 658 -
(hide annotations)
(download)
Mon Jan 14 16:57:24 2008 UTC (16 years, 4 months ago) by niro
File MIME type: text/plain
File size: 2511 byte(s)
Mon Jan 14 16:57:24 2008 UTC (16 years, 4 months ago) by niro
File MIME type: text/plain
File size: 2511 byte(s)
initial import
1 | niro | 658 | #!/usr/bin/perl |
2 | # | ||
3 | # This script extracts the header bytes of an original format, needed by fwpack | ||
4 | # Copyright (C) 2005 Wilmer van der Gaast <wilmer@gaast.net> | ||
5 | # | ||
6 | # This program is free software; you can redistribute it and/or | ||
7 | # modify it under the terms of the second version of the GNU | ||
8 | # General Public License as published by the Free Software | ||
9 | # Foundation. | ||
10 | # | ||
11 | # This program is distributed in the hope that it will be useful, | ||
12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | # GNU General Public License for more details. | ||
15 | # | ||
16 | # You should have received a copy of the GNU General Public License | ||
17 | # along with this program; if not, write to the Free Software | ||
18 | # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
19 | # | ||
20 | |||
21 | @imgs = <*.WYE *.CPQ *.wye *.cpq>; | ||
22 | if( scalar( @ARGV ) >= 1 ) | ||
23 | { | ||
24 | $fn = $ARGV[0]; | ||
25 | } | ||
26 | elsif( scalar( @imgs ) == 0 ) | ||
27 | { | ||
28 | print( 'Hmm, can\'t find any possible firmware bundle file. Please pass one as an' . "\n" . | ||
29 | 'argument or copy it to this directory.' . "\n" ); | ||
30 | exit( 1 ); | ||
31 | } | ||
32 | elsif( scalar( @imgs ) > 1 ) | ||
33 | { | ||
34 | print( 'Found the following firmware bundles:' . "\n" . | ||
35 | join( ' ', @imgs ) . "\n" . | ||
36 | 'Which one should be used to copy the headers?' . "\n" ); | ||
37 | chomp( $fn = <STDIN> ); | ||
38 | } | ||
39 | else | ||
40 | { | ||
41 | $fn = $imgs[0]; | ||
42 | } | ||
43 | |||
44 | open( IMG, '<', $fn ) or die( 'Can\'t open input file ' . $fn ); | ||
45 | $n = sysread( IMG, $head, 0x59 ); | ||
46 | close( IMG ); | ||
47 | |||
48 | if( substr( $head, 3, 4 ) ne 'BndL' ) | ||
49 | { | ||
50 | print( STDERR 'Hmm, that doesn\'t look like a bundle file!' . "\n" ); | ||
51 | } | ||
52 | |||
53 | if( ord( substr( $head, 0xf, 1 ) ) == 0 ) | ||
54 | { | ||
55 | print( STDERR 'Hmm, that looks like an add-on bundle file!' . "\n" ); | ||
56 | } | ||
57 | |||
58 | ## Let's just set these to something bogus, fwpack is supposed to fill them in. | ||
59 | substr( $head, 0x13, 4 ) = pack( 'cccc', 0xaa, 0xaa, 0xaa, 0xaa ); | ||
60 | substr( $head, 0x37, 8 ) = pack( 'cccccccc', 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa ); | ||
61 | @head = split( '', $head ); | ||
62 | |||
63 | open( FWHEAD, '>', 'fwhead.h' ) or die( 'Can\'t open output file fwhead.h' ); | ||
64 | print( FWHEAD '/* Auto-generated from ' . $fn . ' */' . "\n" ); | ||
65 | print( FWHEAD 'u_int8_t fhead[0x59] = { ' ); | ||
66 | for $i ( 0 .. ( scalar( @head ) - 1 ) ) | ||
67 | { | ||
68 | printf( FWHEAD '0x%02x', ord $head[$i] ); | ||
69 | if( $i < ( scalar( @head ) - 1 ) ) | ||
70 | { | ||
71 | print( FWHEAD ',' ); | ||
72 | } | ||
73 | if( ( $i % 16 ) == 15 ) | ||
74 | { | ||
75 | $n = 0; | ||
76 | print( FWHEAD "\n" . ( ' ' x 25 ) ); | ||
77 | } | ||
78 | else | ||
79 | { | ||
80 | print( FWHEAD ' ' ); | ||
81 | } | ||
82 | } | ||
83 | print( FWHEAD '};' . "\n" ); | ||
84 | close( FWHEAD ); | ||
85 | |||
86 | print( 'fwhead.h successfully created' . "\n" ); |
Properties
Name | Value |
---|---|
svn:executable | * |