Do the yellow LED's on the Blackfin board not turn on within a few seconds of reseting the processor? If so, then the firmware has somehow been lost. Normally this happens if the firmware upload was incomplete.
Here are the steps for loading a new flash image into the Blackfin via the processor's UART Boot Mode with the Matchport, using Linux or Windows if the firmware is corrupted. Note that there are different instructions posted at the bottom of this message for recovering via a direct 3.3V UART connection at 115kbps rather than a wireless connection via the Matchport. But for Matchport users, here are the steps to follow:
0. Make sure the robot is powered on, and stays powered on. If you have already installed the Blackfin bfin-elf-gcc toolchain, you will already have the command bfin-elf-ldr on your system. Otherwise, download and install ldr-utils on your linux system from
http://www.surveyor.com/blackfin/ldr-utils.zip There is also a working version of ldr.exe for Windows that can be used for this procedure -
http://www.surveyor.com/blackfin/ldr-for-windows.zip 1. Download a special 115kbps version of SRV-1 firmware from here -
http://www.surveyor.com/blackfin/srv1.ldr.recovery 2. Connect to the Matchport configuration menu via telnet or terminal connection to port 9999. In the section labeled "Channel 1 -> Serial", change the baud rate to 115200
Change Setup:
0 Server
1 Channel 1
2 Channel 2
3 E-mail
4 WLAN
5 Expert
6 Security
7 Defaults
8 Exit without save
9 Save and exit Your choice ? 1
Channel 1 Serial (1) -
for Baudrate, enter 115200
for flow control, enter 0 (this disables hardware flow control)
skip the rest of the options
Save and Exit (9)
3. On the robot, remove the jumper on pins 7-8 in block J1 of the processor card
4. Now, back in a terminal window, make sure you have installed ldr, and
move to the folder with the downloaded srv1.ldr.recovery and the current srv1.ldr you want to install.
5. From this folder, issue the command
[localhost SRV]# ldr -l -v srv1.ldr.recovery 169.254.0.10:10001
or
[localhost SRV]# bfin-elf-ldr -l -v srv1.ldr.recovery 169.254.0.10:10001
if you already have the Blackfin compiler toolchain installed
6. Momentarily place the removed jumper on pins 1-2 in block J1 on the processor card. If the ldr operation was successful, you should see the yellow LED's flash when the loading has completed.
You should see something like this -
> Loading LDR srv1.ldr..recovery ... auto detected LDR as 'BF537'
> OK!
> Connecting to remote target '169.254.0.10' on port '10001' ... OK!
> Trying to send autobaud ... OK!
> Trying to read autobaud ... OK!
> Checking autobaud ... OK!
> Autobaud result: 50bps 0.19mhz (header:0xBF DLL:0x18 DLH:0x00 fin:0x00)
> Sending blocks of DXE 1 ... [10:6208 bytes] [10:7400 bytes] [10:19448> bytes] [3/OK!
> You may want to run minicom or kermit now
> Quick tip: run 'ldr <ldr> <tty> && minicom'
You're not finished - the firmware is running in memory, but still needs to be uploaded and stored in flash memory.
7. Return the jumper to pins 7-8 in block J1
8. Now connect via nc (netchat) to the robot - nc 169.254.0.10 10001. From Windows, use Tera Term. Type 'V' followed by ENTER, and you should get a version string for the firmware.
9. Now you need to transfer the current srv1.ldr using the XMODEM protocol into the flash buffer and then write it to flash. From Linux, use nc 169.254.0.10 10001, type 'X' followed by ENTER. From Windows, use Tera Term for the XMODEM transfer.
From your terminal program, you should start to see a sequence of 'CCC' characters.
If on Windows in Tera Term, ALF-F T X S to get to the send file menu.
If on Linux, exit nc, and run the following
lsz -Xkbv --tcp-client 169.254.0.10:10001 srv1.ldr
Then restart nc
Once the transfer is complete, from Tera Term or nc, type 'zZ' followed by ENTER. If you were successful, you will see
"##zZ boot image write count: 131072"
10. Now change the settings on the Matchport back to 2500k, hw flow -
Telnet or connect via terminal again to port 9999. and
Change Setup:
0 Server
1 Channel 1
2 Channel 2
3 E-mail
4 WLAN
5 Expert
6 Security
7 Defaults
8 Exit without save
9 Save and exit Your choice ? 1
Channel 1 Serial (1) -
for Baudrate, enter -1
for divisor, enter 2
for flow control, enter 2
further down, for FlushMode, enter 80
for Pack Cntrl, enter C0
for InterCh Time, enter 3
skip the rest of the options
Save and exit (9)
At this point, you should be able to reboot the robot, and everything should be running correctly.
===================================
In case you are wondering why srv1.ldr has to be transfered twice - srv1.ldr is a wrapper for srv1.bin, which is the actual binary image of the firmware. srv.1dr adds some startup code that moves srv.bin from low memory to its proper location at 0xff80xxxx and then jumps to the right address to start execution. If you were testing code using gdb and a JTAG cable, you would actually tell gdb to load srv1.bin, not srv1.ldr. Because the Blackfin boot loader unwraps srv1.bin from srv1.ldr, there's no longer a copy of srv1.ldr around to write to flash, so we have to transfer it a 2nd time.
========================================
Note that if you are doing this recovery with a direct 3.3V UART connection at 115kbps, use these instructions instead -
1. Download a special 115kbps version of SRV-1 firmware from here -
http://www.surveyor.com/blackfin/srv1.ldr.recovery 2. Download and run
http://www.dolomitics.com/downloads/ldrviewer.html Load the recovery file
3. Remove jumper on 7/8, then power up Blackfin
4. Run UART Boot, uncheck 'Evaluate CTS'
click 'Test Port'
short pins 1/2
Click Autobaud
click Send DXE
wait until you see 'done' and you see the yellow LED's cycle
5. Put jumper back onto 7/8, close ldrViewer
6. Open up a terminal program with baud rate set to 115200, type V to see the version string displayed, then type X, wait for CCCC, then do XModem transfer of correct ldr file.
Wait until done, then type zZ to save firmware to boot flash sectors
7. Reset or power cycle Blackfin
I have a command terminal open but do not understand what to enter for [localhost SRV]#