mirror of
https://github.com/troglobit/libuev.git
synced 2026-10-19 10:49:31 +00:00
79 lines
2.6 KiB
Bash
Executable File
79 lines
2.6 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# This script is intended to be run as '~+flashboot.cu <args> from inside cu(1)
|
|
#
|
|
# Contact the debug port with 'cu -s 115200 -l /dev/ttyS0' or equivalent
|
|
# You will of course need the cu(1) program (may be part of uucp).
|
|
# You will need chat (from ppp), lsx (lrzsz) and gkermit too.
|
|
# Devdump (for sn.txt) is in arm9/utils/devdump
|
|
#
|
|
# The file boot.bin must be in the current directory.
|
|
# Copy the 'Files' directory from the AUTester to support bootstrap mode.
|
|
# Create the file sn.txt as 7 numbers to have the serialnumber block programmed.
|
|
#
|
|
|
|
TT=/opt/toolchain/utils/flash-scripts/files
|
|
|
|
say() { echo "$@" 1>&2; }
|
|
die() { say "$@"; exit 1; }
|
|
|
|
say "Checking for bootstrap mode ..."
|
|
if chat -t 3 -e CCC '\c' ;then
|
|
[ -f loader.bin ] && P="" || P="$TT/"
|
|
[ -f ${P}loader.bin ] \
|
|
|| die "Board is in bootstrap mode but no boot files here!"
|
|
|
|
# Prepare for uboot
|
|
lsx ${P}loader.bin
|
|
|
|
[ -f u-boot.bin ] && P="" || P="$TT/"
|
|
[ -f ${P}u-boot.bin ] \
|
|
|| die "Board is in bootstrap mode but no boot files here!"
|
|
|
|
# Send uboot.
|
|
chat -t 5 -e CCC '\c' || die "Loader did not load"
|
|
lsx ${P}u-boot.bin
|
|
chat -e 'autoboot: ' '\rversion' || die "U-boot did not load"
|
|
fi
|
|
[ "$1" = "boot" ] && exit 0
|
|
|
|
chat -t 10 -e '' 'blah' 'boot>' 'loadb' || die "Not in u-boot mode"
|
|
gkermit --x -s boot.bin
|
|
|
|
# Remove write protection for boot area in the flash chip
|
|
chat -t 10 -e 'boot>' "protect off 10000000 10003fff" \
|
|
'boot>' "erase 10000000 10003fff" \
|
|
'Erasing' '\c' ECHO OFF \
|
|
'Erased' '\c' ECHO ON ' 2 sectors' '\c' \
|
|
|| die "Could not erase flash sectors"
|
|
|
|
# Copy boot.bin from SDRAM to flash. 0x21000000 ==> 0x10000000, 0x3D00 bytes
|
|
chat -t 10 -e 'boot>' "cp.b 21000000 10000000 3D00" \
|
|
' done' '\c' \
|
|
|| die "Could not write to flash"
|
|
|
|
snSize=1c
|
|
if [ -f sn.txt ] ;then
|
|
# The sn.txt file is five decimal integers in 1 or more lines
|
|
dumpdev -if sn.txt -iformat D4 -of sn.bin -bs 28
|
|
if [ -f eth.txt ] ;then
|
|
# The eth.txt file is six hex bytes in 1 or more lines
|
|
dumpdev -if eth.txt -iformat H1 -bs 6 >> sn.bin
|
|
snSize=22
|
|
fi
|
|
fi
|
|
if [ -f sn.bin ] ;then
|
|
# Program the serial number block too (34/0x1C bytes)
|
|
chat -t 10 -e 'boot>' 'loadb' || die "Missing u-boot prompt ?!"
|
|
gkermit --x -s sn.bin
|
|
chat -t 10 -e 'boot>' "cp.b 21000000 10003D00 $snSize" \
|
|
' done' '\c' \
|
|
|| die "Could not write to flash"
|
|
fi
|
|
|
|
# Reprotect the boot sectors in flash
|
|
chat -t 10 -e 'boot>' "protect on 10000000 10003fff" \
|
|
'Protected 2 sectors' 'blah' \
|
|
|| die "Could not reprotect flash"
|
|
#
|