+++ /dev/null
-#!/usr/bin/perl -w
-
-# Copyright (c) 2013 Qualcomm Atheros, Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted (subject to the limitations in the
-# disclaimer below) provided that the following conditions are met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#
-# * Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the
-# distribution.
-#
-# * Neither the name of Qualcomm Atheros nor the names of its
-# contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE
-# GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
-# HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
-# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
-# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
-# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
-# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-###############################################################
-#binary-to-hex perl tool: obtained & modified on 10/05/08
-###############################################################
-use strict;
-
-my ($format, $binfile, $outfile, $arr_form, $ColNum, $show_hex, $filesize);
-$format = $ARGV[0] || usage();
-$binfile = $ARGV[1] || usage();
-$outfile = $ARGV[2] || $binfile.".$format";
-$arr_form = $ARGV[3];
-$ColNum = $ARGV[4] || usage();
-$show_hex = $ARGV[5];
-
-my ($orig, @converted);
-
- $orig = readdata ($binfile);
-
- $orig = hexdump($orig);
- if ($show_hex) {print "Original Binary text:\n\t $orig","\n\n";}
-
- if ($format eq 'a' || $format eq 'asm') {
- @converted = convert_to_asm ($orig);
-
- } elsif ($format eq 'c') {
- @converted = convert_to_c ($orig);
-
- } else {
- print "Unknown format to convert!\n";
- exit (-1);
- }
- if ($show_hex) {print "Converted hex text:\n",join ('', @converted), "\n";}
-
- writedata ($outfile, @converted);
-
-sub convert_to_asm {
- my @data = split(' ', join (' ', @_)); #nop here only one list passed to join
-
- my $i = 0;
- if ($arr_form){
- foreach (@data) {
- if ($i++ < 8) {
- $_=$_."h, 0";
- } else {
- $_=$_."h\nbyte 0";
- $i = 0;
- }
- }
-
- unshift (@data, "byte 0");
- $data[-1] =~s/[,|\nbyte] 0$//g;
- }else{
- foreach (@data){
- if ($i++ < $ColNum-1) {
- #$_.=",";
- }else {
- $_.="\n";
- $i = 0;
- }
- }
- }
- return @data;
-}
-
-sub convert_to_c {
- my @data = split(' ', join (' ', @_)); #nop here only one list passed to join
-
- my $i = 0;
- if ($arr_form){
- foreach (@data) {
- if ($i++ < $ColNum-1) {
- $_.=", 0x";
- } else {
- $_.=",\n\t0x";
- $i = 0;
- }
- }
- unshift (@data, "unsigned char data[$filesize] = {\n\t0x"); #add some pattern at the front of @data
- $data[-1] =~s/0x$//g;
- $data[-1] =~s/[ |\n\t]//g;
- $data[-1] =~s/\,//g;
- push (@data, "\n};");
- }else{
- foreach (@data){
- if ($i++ < $ColNum-1) {
- }else {
- $_.="\n";
- $i = 0;
- }
- }
- }
- return @data;
-}
-
-sub readdata {
- my ($line);
- my ($file) = @_;
- #printf "dbg:file = $file\n";
- open (BF, "$file") || die "Cannot open $file: $!"; #$! contains current value of errno
- binmode (BF);
- $filesize = (stat($file))[7];
- my ($DATA) = ""; #<BF>;
- my (@Data_check) = <BF>;
- foreach $line (@Data_check){
- #printf "dbg:line = $line\n";
- $DATA.=$line;
- }
- #printf "dbg:DATA string = $DATA\n";
- close (BF);
- return ($DATA);
-}
-
-sub writedata {
- my ($file, @FomatData) = @_;
- open (AF, ">$file") || die "Cannot open $file: $!";
- my $i = 0;
- my $b0 = 0;
- my $b1 = 0;
- my $b2 = 0;
- my $b3 = 0;
- foreach (@FomatData) {
- if($ColNum eq '1') {
- if($i == 0) {
- $b0 = $_;
- $i++;
- } else {
- if($i == 1) {
- $b1 = $_;
- $i++;
- } else {
- if($i == 2) {
- $b2 = $_;
- $i++;
- } else {
- print AF "$_";
- print AF "$b2";
- print AF "$b1";
- print AF "$b0";
- $i = 0;
- }}}
- }else{
- print AF "$_";
- }
- }
- close (AF);
-}
-
-sub hexdump
-{
- join ' ', map { sprintf "%02X", $_ } unpack "C*", $_[0];
-}
-
-sub usage {
- print STDERR <<EOF;
-
-Usage: bin2hex format binfile outfile
- format format to convert to,
- asm ==> 'assembly',
- c ==> 'C'
- binfile binary file you want to convert.
- outfile output file to store the result of output.
- arr_form displayed in array-form
- ColNum num of columns of the shown array
-
-EOF
- exit(-1);
-}
-