Sunday, March 25, 2018

Programming the iCEblink40-HX1K from a Windows VM

Running Linux on your desktop brings with it some challenges. I found I'd installed a number of Lattice packages that might have been able to program the iCEblink, but I don't think I ever got any of them to work. I found a set of Digilent utilities (dadutil, djtagcfg) that will identify the board on the bus but I didn't see a way to program this board.

I found a project called iceBurn on GitHub that claims to be able to do it. This looks promising but I didn't feel like experimenting last night.

Eventually I remembered (or figured out again) how to do it from my VMware Player virtual machine running Windows 7. Here's the majick incantation for that:
  1. Configure the VM so it has a USB controller. This will allow the VM to claim a USB device on the host.
  2. Boot the Windows virtual machine.
  3. Install iCEcube2 2014.08. Later versions lack the programmer needed to program the iCEblink40. Be sure to install the programmer, which may be an installation option. 
  4. Plug the iCEblink40 into the host using a USB-A to MiniUSB-B cable.
  5. Activate VMware Player's "Virtual Machine" menu and navigate through "Removable Devices" to the "Digilent Adept USB Device" menu. Click on "Connect (Disconnect from host)".

Don't forget to flick the tip of your wand at the proper moment. Le-ve-OH-sa!

With this set-up I can run the synthesis, place & route, and generate bitmap files under Linux, then switch over to the Windows VM and program the board.

2 comments:

  1. Thanks for this, I also found this method to be the only possible way of programming the board (not sure why you can no longer program over the MiniUSB without buying the expensive programmer hardware). I wondered if you found a method to program .bin bitstreams onto the board, rather than .hex (my P&R tools from icestorm only produce .bin). Cheers

    ReplyDelete
    Replies
    1. Sorry, I never tried. Once I found a way to program the board that satisfied my needs I stopped looking for other solutions.

      Delete