1 | # we store all generated files here. |
---|
2 | TMPDIR=tmp_sdcard_dir.$$ |
---|
3 | |
---|
4 | FATIMG=$TMPDIR/bbxm_boot_fat.img |
---|
5 | SIZE=65536 |
---|
6 | OFFSET=2048 |
---|
7 | FATSIZE=`expr $SIZE - $OFFSET` |
---|
8 | UENV=uEnv.txt |
---|
9 | |
---|
10 | rm -rf $TMPDIR |
---|
11 | mkdir -p $TMPDIR |
---|
12 | |
---|
13 | if [ $# -ne 2 ] |
---|
14 | then echo "Usage: $0 <RTEMS prefix> <RTEMS executable>" |
---|
15 | exit 1 |
---|
16 | fi |
---|
17 | |
---|
18 | PREFIX=$1 |
---|
19 | |
---|
20 | if [ ! -d "$PREFIX" ] |
---|
21 | then echo "This script needs the RTEMS tools bindir as the first argument." |
---|
22 | exit 1 |
---|
23 | fi |
---|
24 | |
---|
25 | executable=$2 |
---|
26 | |
---|
27 | case "$2" in |
---|
28 | *beagleboard*) |
---|
29 | ubootcfg=omap3_beagle |
---|
30 | imgtype=bb |
---|
31 | ;; |
---|
32 | *beaglebone*) |
---|
33 | ubootcfg=am335x_evm |
---|
34 | imgtype=bone |
---|
35 | ;; |
---|
36 | *) |
---|
37 | echo "Can't guess which uboot to use - please specify full path to executable." |
---|
38 | exit 1 |
---|
39 | ;; |
---|
40 | esac |
---|
41 | |
---|
42 | app=rtems-app.img |
---|
43 | |
---|
44 | if [ ! -f "$executable" ] |
---|
45 | then echo "Expecting RTEMS executable as arg; $executable not found." |
---|
46 | exit 1 |
---|
47 | fi |
---|
48 | |
---|
49 | set -e |
---|
50 | |
---|
51 | IMG=${imgtype}_`basename $2`-sdcard.img |
---|
52 | |
---|
53 | # Make an empty image |
---|
54 | dd if=/dev/zero of=$IMG bs=512 seek=`expr $SIZE - 1` count=1 |
---|
55 | dd if=/dev/zero of=$FATIMG bs=512 seek=`expr $FATSIZE - 1` count=1 |
---|
56 | |
---|
57 | # Make an ms-dos FS on it |
---|
58 | $PREFIX/bin/newfs_msdos -r 1 -m 0xf8 -c 4 -F16 -h 64 -u 32 -S 512 -s $FATSIZE -o 0 ./$FATIMG |
---|
59 | |
---|
60 | # Prepare the executable. |
---|
61 | base=`basename $executable` |
---|
62 | $PREFIX/bin/arm-rtems4.12-objcopy $executable -O binary $TMPDIR/$base.bin |
---|
63 | gzip -9 $TMPDIR/$base.bin |
---|
64 | $PREFIX/bin/mkimage -A arm -O rtems -T kernel -a 0x80000000 -e 0x80000000 -n RTEMS -d $TMPDIR/$base.bin.gz $TMPDIR/$app |
---|
65 | echo "setenv bootdelay 5 |
---|
66 | uenvcmd=run boot |
---|
67 | boot=fatload mmc 0 0x80800000 $app ; bootm 0x80800000" >$TMPDIR/$UENV |
---|
68 | |
---|
69 | # Copy the uboot and app image onto the FAT image |
---|
70 | $PREFIX/bin/mcopy -bsp -i $FATIMG $PREFIX/uboot/$ubootcfg/MLO ::MLO |
---|
71 | $PREFIX/bin/mcopy -bsp -i $FATIMG $PREFIX/uboot/$ubootcfg/u-boot.img ::u-boot.img |
---|
72 | $PREFIX/bin/mcopy -bsp -i $FATIMG $TMPDIR/$app ::$app |
---|
73 | $PREFIX/bin/mcopy -bsp -i $FATIMG $TMPDIR/$UENV ::$UENV |
---|
74 | |
---|
75 | # Just a single FAT partition (type C) that uses all of the image |
---|
76 | $PREFIX/bin/partition -m $IMG $OFFSET c:${FATSIZE}\* |
---|
77 | |
---|
78 | # Put the FAT image into the SD image |
---|
79 | dd if=$FATIMG of=$IMG seek=$OFFSET |
---|
80 | |
---|
81 | # cleanup |
---|
82 | rm -rf $TMPDIR |
---|
83 | |
---|
84 | echo "Result is in $IMG." |
---|