OSDN Git Service

2013.10.24
[uclinux-h8/uClinux-dist.git] / bin / mkflash2mb
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 boards 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 #       MAC address next.
91 #
92 echo -e "$MAC0\c" >> $FLASH
93 [ "$DUALETHER" = 1 ] && echo -e "$MAC1\c" >> $FLASH
94 SIZE=`wc $FLASH | awk '{ print $3}'`
95 PAD=`expr 65536 - $SIZE`
96 echo "MAC:  flash size=$SIZE padding=$PAD"
97 if [ $CYGWIN -eq 1 ]
98 then
99         zeros $PAD >> $FLASH
100 else
101         dd if=/dev/zero count=1 bs=$PAD >> $FLASH 2> /dev/null
102 fi
103
104 #
105 #       Leave space for the file system.
106 #
107 SIZE=65536
108 PAD=0
109 echo "CFS:  flash size=$SIZE padding=$PAD"
110 if [ $CYGWIN -eq 1 ]
111 then
112         zeros $SIZE >> $FLASH
113 else
114         dd if=/dev/zero count=1 bs=$SIZE >> $FLASH 2> /dev/null
115 fi
116
117 #
118 #       Linux and file-system image.
119 #
120 cat $IMAGE >> $FLASH
121 SIZE=`wc $FLASH | awk '{ print $3}'`
122 PAD=`expr 2097152 - $SIZE`
123 #####PAD=`expr 1048576 - $SIZE`
124 echo "IMG:  flash size=$SIZE padding=$PAD"
125 if [ $CYGWIN -eq 1 ]
126 then
127         zeros $PAD >> $FLASH
128 else
129         dd if=/dev/zero count=1 bs=$PAD >> $FLASH 2> /dev/null
130 fi
131
132 cp $FLASH /tftpboot
133 exit 0