wiki:FC-7 Adventures

See FC7_Log for blow-by-blow log


Firmware creation/loading

Building Firmware

Check out firmware as they say in the manual:

  $ svn co
  $ svn co

Create a dir "fc7" under "ISE".

Put cactus in top/cactus/tags/ipbus_fw/ipbus_2_0_v1.

Put FC7 in top/fc7/tags/fc7_5.0.1.

NOTE: this is not quite what they say in the docs.

Find a Vivado project file in ISE/fc7/tags/fc7_5.0.1/fw/prj/fpga_fc7_golden.

Have to edit this file to change the top-level path to match mine.

Load into Vivado 2015.2 (64-bit). Try to build. Works!

Generate bit file.

IMPORTANT: Has to be BIN file not BIT file

Convert to BIN file as per user guide:

  • Start impact (from ISE 14.7 works)
  • Choose "Generic parallel prom" with "Auto select PROM" checked
  • Choose BIN file with swap bits

If needed, obtain and install the =imgtool= utility from the SVN link the the FC7 user manual, or grab a local copy:

Then format the SD card (/dev/mmcblk0 on my Ubuntu system).

   $ sudo ./imgtool /dev/mmcblk0 format Firmware
   $ sudo ./imgtool /dev/mmcblk0 add GoldenImage.bin fc7_top.bin

Make sure Switch 'E' (number 5 up from bottom is LEFT)

If you have trouble with the SD card, try this to erase the first block:

 $ sudo dd if=/dev/zero of=/dev/xxxx bs=1024 count=1

Network Access

Trying to figure out the IP address. First, plug into crate with NAT MCH. Blue LED blinks, looks ok.

Try to follow the recipe in the doco to read the IP address:

  $ ipmitool -H -P "" -B 0 -T 0x82 -b 7 -t 0x7a raw 0x30 0x05

Doesn't work. Try another based on AMC13 scripting:

  $ ipmitool -H -U '' -P '' -T 0x82 -b 7 -t 0x7a raw 0x30 0x05
   c0 a8 00 87 00 0a 35 01 ea f3 00

This should be but doesn't respond to ping. Possibly some other IP address is compiled-in?

Try to set it:

  $ ipmitool -H -U '' -P '' -T 0x82 -b 7 -t 0x7a raw 0x30 0x03 0xc0 0xa8 0x80 0x80

Reads back OK but still no ping. Probably need to build our own firmware.

Built own firmware, now it works, using this IP address! (A small mystery because in =user_logic_basic.vhd= we have:

  ip_addr_o        <= x"c0_a8_00_50";
  mac_addr_o       <= x"aa_bb_cc_dd_ee_50";
  rarp_en_o        <= '0';              -- ESH: set to 0
  use_i2c_eeprom_o <= '0';              -- ESH: set to 0

Which is ignored?

Building Software

  $ svn co
  $ cd sw/fc7

Edit MmcPipeInterface.cpp, add:

#include <arpa/inet.h>


  $ source
  $ make
Last modified 4 years ago Last modified on Jan 25, 2019, 11:35:51 AM