
Minicom is broken. It cannot be used for s-record download, except by inserting unacceptable delays.
If you have to use something over the serial cable, consider C-Kermit. I compiled for my Linux and it works great. Because it is scriptable (althought in a strange way), I can even automate things. My C-Kermit for example connects to my BDI2000 (over TCP/IP, not serial, it can do both), erases the flash and loads the new bootloader automatically:
#!/usr/bin/kermit +
.bdihost = bdi .prompt = bdi> .image = /bdi/armboot .image_start = 0x000000
define failquit { input 1 xxxxxxxxxxxxxxx close echo echo %1 exit 1 }
set input echo off set exit on-disconnect on ; Automatic exit on connection loss. set telopt start-tls refuse ; Do not use START_TLS option set telopt authentication refuse ; Do not use AUTH option set telopt encrypt refuse refuse ; Do not use ENCRYPT option
echo "Connecting to \m(bdihost) ..."
set host \m(bdihost) 23 /telnet ; Force Telnet protocol negotiations if fail exit 1
input 1 \m(prompt) if fail failquit {No prompt from bdi}
define erase_flash { xecho "Erasing block %1 ..." lineout "erase %1" minput 4 {Erasing flash passed} # if fail failquit {No answer to 'erase' command.} if ( = \v(minput) 2 ) failquit {Could not erase block %1.} echo " done!" }
erase_flash 0x000000
xecho "Burning image \m(image) ..." lineout "prog \m(image_start) \m(image)" minput 30 {Programming flash passed} # if fail 1 failquit {No answer to 'prog' command.} if ( = \v(minput) 2 ) failquit {Could not burn image \m(image).} lineout "reset" echo " done!"
close quit
I'm using similar scripts to update my kernel and my jffs2. Basically I just change the .image, .image_start and the erase_flash lines.
VERY different from S-Records ..., I know :-)