OSDN Git Service

2013.10.24
[uclinux-h8/uClinux-dist.git] / bin / mkflash
1 #!/bin/bash
2 ##############################################################################
3
4 #
5 #       mkflash -- construct an entire NETtel flash image.
6 #
7 #       (C) Copyright 1999-2000, Greg Ungerer (gerg@moreton.com.au)
8 #
9
10 ##############################################################################
11
12 #
13 #       The starting MAC address... 00-D0-CF-XX-XX-XX
14 #       This strings is in octal below, ugh...
15 #       If setting up 2 ethernet devices then set MAC1 as well.
16 #
17 MAC0="\000\320\317\000\001\040"
18 MAC1="\000\320\317\000\001\041"
19
20 #
21 #       Define the files to use.
22 #
23 FLASH=images/flash.bin
24 BOOT=boot/boot.bin
25 IMAGE=images/imagez.bin
26
27 ##############################################################################
28
29 usage()
30 {
31         echo "usage: mkflash"
32         exit 1
33 }
34
35 ##############################################################################
36
37 #
38 #       Check for any args...
39 #
40 if [ $# -gt 0 ]
41 then
42         usage
43 fi
44
45 #
46 #       Check where to see if we're in a cygwin /w32 environment
47 #       if so, use the 'zeros' program, instead of /dev/zero 
48 #
49 if [ `set | grep -i mach|grep -i -c cygwin` -ge 1 ]
50 then
51         CYGWIN=1
52 else
53         CYGWIN=0
54 fi
55
56 #
57 #       All images get 2 MAC addresses at first.
58 #
59 DUALETHER=1
60
61 #
62 #       Boot loader first.
63 #
64 cat $BOOT > $FLASH
65 SIZE=`wc $FLASH | awk '{ print $3}'`
66 PAD=`expr 16384 - $SIZE`
67 echo "BOOT: flash size=$SIZE padding=$PAD"
68 if [ $CYGWIN -eq 1 ]
69 then
70         zeros $PAD >> $FLASH
71 else
72         dd if=/dev/zero count=1 bs=$PAD >> $FLASH 2> /dev/null
73 fi
74
75 #
76 #       Command line args next.
77 #
78 echo -e "CONSOLE=/dev/null\000\c" >> $FLASH
79 SIZE=`wc $FLASH | awk '{ print $3}'`
80 PAD=`expr 24576 - $SIZE`
81 echo "ARGS: flash size=$SIZE padding=$PAD"
82 if [ $CYGWIN -eq 1 ]
83 then
84         zeros $PAD >> $FLASH
85 else
86         dd if=/dev/zero count=1 bs=$PAD >> $FLASH 2> /dev/null
87 fi
88
89
90 #
91 #       MAC address next.
92 #
93 echo -e "$MAC0\c" >> $FLASH
94 [ "$DUALETHER" = 1 ] && echo -e "$MAC1\c" >> $FLASH
95 SIZE=`wc $FLASH | awk '{ print $3}'`
96 PAD=`expr 65536 - $SIZE`
97 echo "MAC:  flash size=$SIZE padding=$PAD"
98 if [ $CYGWIN -eq 1 ]
99 then
100         zeros $PAD >> $FLASH
101 else
102         dd if=/dev/zero count=1 bs=$PAD >> $FLASH 2> /dev/null
103 fi
104
105
106 #
107 #       Linux and file-system image.
108 #
109 cat $IMAGE >> $FLASH
110 SIZE=`wc $FLASH | awk '{ print $3}'`
111 PAD=`expr 1048576 - $SIZE`
112 echo "IMG:  flash size=$SIZE padding=$PAD"
113 if [ $CYGWIN -eq 1 ]
114 then
115         zeros $PAD >> $FLASH
116 else
117         dd if=/dev/zero count=1 bs=$PAD >> $FLASH 2> /dev/null
118 fi
119
120
121 cp $FLASH /tftpboot
122 exit 0