The MinnowBoard Chronicles Episode 46: Using the DediProg SF100

I’ve been working from home for quite some time now, and don’t have access to all the equipment I normally would have at the office. And I’ve wanted to flash the MinnowBoard (and some other boards). So, rather than wait for the coronavirus shelter-in-place to lift, I went out and bought a DediProg SF100 of my own. Here’s my out-of-the-box experience.

Sometimes you’re just unlucky enough to brick a board. And sometimes the traditional ways of updating the flash on a board, like with a software utility, just don’t work. And sometimes you just want to understand what is under the hood in terms of how bootloaders are stored in flash. That’s where a portable hardware-based SPI programmer like the DediProg SF100 comes in. It’s not cheap, but it has a good reputation, looks to be of good quality and is known to work well.

I purchased my SF100 directly from the DediProg website www.dediprog.com. It’s listed now for USD $230, and is the least expensive benchtop programmer they have. Out of the box, you get the SF100 programmer, a USB cable to connect the programmer to your host PC, a little universal adapter PCB, some adapter cables, and a CD with the user guide and software:

DediProg box contents

On the CD, you get the following files:

DediProg CD drive contentsBeing the lazy sort, I just fired up the SF6.0.5.21.msi installer, that installed the DediProg Engineering application. I then plugged in the SF100, and launched the application. Here’s what I saw:

DediProg launch screen

I’m guessing that the USB driver was not installed. Looking back at the CD, it has a file called “DediProg USB Driver Installation” which is probably what I needed.

I followed the directions in the document, but somehow I could not see the DediProg under Other Devices in the Device Manager. I ended up having to reboot my PC, and then it worked:

DediProg Device Manager

Then it was a simple matter of following the directions in the document to load the driver. I wish this was taken care of without me fussing with it. But, after, this is software written for engineers, so I guess I can tolerate having to think a little.

One thing to note is that the screenshots within the USB driver installation document differ from what my Windows 10 machine displayed. But, again, I do get a little bit of satisfaction knowing that I can figure this kind of stuff out.

Another thing that almost tripped me up was that, after the driver was seemed to be successfully installed (I did get the “Windows has successfully updated your driver software” message), the SF100 still did not show up in the Device Manager window. I had to unplug it and plug it back in again before it showed up, this time under the Universal Serial Bus controllers device:

DediProg device manager driver in Universal Serial Bus controllers

Success! Now when I launch the programming application, it looks much better:

DediProg USB driver working waiting for chip

Now it was time to hook up to the MinnowBoard. Fortunately, there are some very good directions here: https://software.intel.com/en-us/download/flashing-minnowboard-max-with-dediprog-sf-100-in-windows. But, these are for the MinnowBoard Max, the predecessor to the MinnowBoard Turbot that I have; my board has the Winbond Electronics W25Q64BVSSIG, as opposed to N25Q064A11 as listed in the Intel tutorial. So, you have to make the appropriate selection:

DediProg chip detect and select

Then you’re ready to go:

DediProg ready to go

Before programming the MinnowBoard SPI flash, I wanted to see what the current contents therein are. That’s easy enough to do with the DediProg Engineering application: just click on the Edit button at the top, and then click Read. It took maybe 20 seconds to read the entire contents.

There’s mostly hex FF in each byte until x’400000’ (decimal 4,194,304, or 4MB):

DediProg FV starts at x 400000

If you scroll further down into the Flash contents, pretty much at the bottom, you can see the pointer (highlighted) to the Debug Build directory file:

c:\minnowboard2closesource\Build\Vlv2TbltDevicePkg\DEBUG_VS2015x86\IA32\IA32FamilyCpuPkg\SecCore\SecCore\DEBUG\SecCore.pdb

 

DediProg SecCore pdb

which is used to do source-level debug with SourcePoint and other JTAG debuggers.

That was interesting, but it became time to flash the image. The steps I followed were:

  1. Click on the Batch button.
  2. Select “Download a whole file to chip (Without Blank Check)…” option.
  3. Check the checkbox “Reload file each time”.

DediProg Batch operation

Then hit OK.

Then I clicked on the Find button to pull in my firmware image:

DediProg File image

I made sure to leave it as “Raw Binary” and not to check the “Truncate file to fit in the target area” box.

After clicking OK, you see the following:

DediProg load image file before flashing

Then click on the Batch button to start the erase and programming step:

DediProg programming complete

Eureka! The programming was successful.

That was really a lot of fun.

And now, to change the subject: as you may know, the MinnowBoard family has been End-of-Life’d. It was a sad day when I went to the website minnowboard.org and found that it was no longer active. A lot of the old source files have been moved to GitHub, but it’s no longer the same. You can still get a MinnowBoard Turbot from Mouser, Arrow and others, but when they run out of inventory, you’re out of luck. And I haven’t been able to find a supply for the JTAG Debugger Lure that Tin Can Tools used to sell. And that’s a shame.

So, this may be the last episode of the MinnowBoard Chronicles for a while. I’ll still use my MinnowBoard for trying out stuff, but I’m now on the hunt for a new open-source x86 platform I can do JTAG debugging on. Stay tuned!

Alan Sguigna