Most Powerful Open Source ERP

How To Flash the Firmware of the FPGA of ORS PCB

The process to flash the firmware of ORS PCB
  • Last Update:2024-02-20
  • Version:001
  • Language:en

Agenda

  • Requirements
  • Hardware Setup
  • Software Setup
  • Flash the FPGA

Requirements

  • Hardware
    • 1 x PCB to test (from ORS Radio Board PCB V4.4)
    • 1 x lab power supply (that you can control in current) 
    • 1 x computer running on Ubuntu 20.04 with miniPCIe slot available + customised mini PCIe ribbon
    • 1 x custom power injector
    • 1 x RJ45 cable
  • Software:
    • openocd: to flash the FPGA

Hardware Setup

First of all, make sure there is no short circuit in the PCB. Follow the beginning of rapidspace-How.To.Test.Your.ORS.Radio.Board.PCB procedure to make sure the voltages are OK.

 

 

Software setup

Follow https://handbook.rapid.space/provider/rapidspace-HowTo.ORS.Assembly.Process.Generate.Image#patched_openocd to install openocd.

Get the FPGA bitstream from RapidSpace team.

Download bscan_spi_xc7a35t.bit file and make sure you name it bscan_spi_xc7a35t.bit.

Prepare a configuration file "pcie_radio.cfg" with the following content (make sure to replace BITSTREAM_NAME with the bitstream you received from RapidSpace):

interface ftdi
ftdi_vid_pid 0x0403 0x6014
ftdi_channel 0
ftdi_layout_init 0x00e8 0x60eb
reset_config none

source [find cpld/xilinx-xc7.cfg]
source [find cpld/jtagspi.cfg]
adapter_khz 10000

proc fpga_program {} {
    global _CHIPNAME
    xc7_program $_CHIPNAME.tap
}

init
jtagspi_init 0 bscan_spi_xc7a35t.bit
jtagspi_program BITSTREAM_NAME 0x0
fpga_program
shutdown

 

Flash the FPGA

root@orsLAB:~# ./openocd/src/openocd -s ./openocd/tcl -f pcie_radio.cfg
Open On-Chip Debugger 0.11.0-dirty (2022-08-08-14:11)
Licensed under GNU GPL v2
For bug reports, read
    http://openocd.org/doc/doxygen/bugs.html
DEPRECATED! use 'adapter driver' not 'interface'
Info : auto-selecting first available session transport "jtag". To override use 'transport select <transport>'.
DEPRECATED! use 'adapter speed' not 'adapter_khz'
Info : ftdi: if you experience problems at higher adapter clocks, try the command "ftdi_tdo_sample_edge falling"
Info : clock speed 10000 kHz
Info : JTAG tap: xc7.tap tap/device found: 0x0362d093 (mfg: 0x049 (Xilinx), part: 0x362d, ver: 0x0)
Info : JTAG tap: xc7.tap tap/device found: 0x0362d093 (mfg: 0x049 (Xilinx), part: 0x362d, ver: 0x0)
Info : Found flash device 'cyp s25fl256l' (ID 0x00196001)
Warn : device needs paging or 4-byte addresses - not implemented
Info : Found flash device 'cyp s25fl256l' (ID 0x00196001)
Warn : device needs paging or 4-byte addresses - not implemented
Info : Found flash device 'cyp s25fl256l' (ID 0x00196001)
Warn : device needs paging or 4-byte addresses - not implemented
Info : Found flash device 'cyp s25fl256l' (ID 0x00196001)
Warn : device needs paging or 4-byte addresses - not implemented
Info : sector 0 took 245 ms
Info : sector 1 took 244 ms
Info : sector 2 took 247 ms
Info : sector 3 took 246 ms
Info : sector 4 took 243 ms
Info : sector 5 took 257 ms
Info : sector 6 took 245 ms
Info : sector 7 took 255 ms
Info : sector 8 took 243 ms
Info : sector 9 took 248 ms
Info : sector 10 took 261 ms
Info : sector 11 took 257 ms
Info : sector 12 took 254 ms
Info : sector 13 took 251 ms
Info : sector 14 took 257 ms
Info : sector 15 took 243 ms
Info : sector 16 took 255 ms
Info : sector 17 took 257 ms
Info : sector 18 took 248 ms
Info : sector 19 took 246 ms
Info : sector 20 took 253 ms
Info : sector 21 took 248 ms
Info : sector 22 took 249 ms
Info : sector 23 took 239 ms
Info : sector 24 took 266 ms
Info : sector 25 took 269 ms
Info : sector 26 took 266 ms
Info : sector 27 took 264 ms
Info : sector 28 took 271 ms
Info : sector 29 took 273 ms
Info : sector 30 took 277 ms
Info : sector 31 took 267 ms
Info : sector 32 took 250 ms
Info : sector 33 took 253 ms
Info : sector 34 took 249 ms
Info : sector 35 took 240 ms
Info : sector 36 took 254 ms
Info : sector 37 took 252 ms
Info : sector 38 took 259 ms
Info : sector 39 took 244 ms
Info : sector 40 took 251 ms
Info : sector 41 took 257 ms
Info : sector 42 took 251 ms
Info : sector 43 took 250 ms
Info : sector 44 took 246 ms
Info : sector 45 took 250 ms
Info : sector 46 took 252 ms
Info : sector 47 took 250 ms
Info : sector 48 took 251 ms
Info : sector 49 took 251 ms
Info : sector 50 took 255 ms
Info : sector 51 took 249 ms
Info : sector 52 took 254 ms
Info : sector 53 took 254 ms
Info : sector 54 took 246 ms
Info : sector 55 took 251 ms
Info : sector 56 took 272 ms
Info : sector 57 took 290 ms
Info : sector 58 took 265 ms
Info : sector 59 took 275 ms
Info : sector 60 took 271 ms
Info : sector 61 took 264 ms
Info : sector 62 took 268 ms
Info : sector 63 took 273 ms
Info : sector 64 took 253 ms
Info : sector 65 took 252 ms
Info : sector 66 took 241 ms
Info : sector 67 took 244 ms
Info : sector 68 took 262 ms
Info : sector 69 took 254 ms
Info : sector 70 took 258 ms
Info : sector 71 took 250 ms
Info : sector 72 took 256 ms
Info : sector 73 took 267 ms
Info : sector 74 took 263 ms
Info : sector 75 took 253 ms
Info : sector 76 took 260 ms
Info : sector 77 took 249 ms
Info : sector 78 took 246 ms
Info : sector 79 took 242 ms
Info : sector 80 took 244 ms
Info : sector 81 took 251 ms
Info : sector 82 took 245 ms
Info : sector 83 took 249 ms
Info : sector 84 took 258 ms
Info : sector 85 took 258 ms
Info : sector 86 took 257 ms
Info : sector 87 took 255 ms
Info : sector 88 took 264 ms
Info : sector 89 took 266 ms
Info : sector 90 took 268 ms
Info : sector 91 took 266 ms
Info : sector 92 took 266 ms
Info : sector 93 took 269 ms
Info : sector 94 took 259 ms
Info : sector 95 took 272 ms
Info : sector 96 took 252 ms
Info : sector 97 took 252 ms
Info : sector 98 took 250 ms
Info : sector 99 took 250 ms
Info : sector 100 took 251 ms
Info : sector 101 took 252 ms
Info : sector 102 took 254 ms
Info : sector 103 took 250 ms
Info : sector 104 took 249 ms
Info : sector 105 took 259 ms
Info : sector 106 took 248 ms
Info : sector 107 took 252 ms
Info : sector 108 took 248 ms
Info : sector 109 took 245 ms
Info : sector 110 took 244 ms
Info : sector 111 took 252 ms
Info : sector 112 took 249 ms
Info : sector 113 took 250 ms
Info : sector 114 took 242 ms
Info : sector 115 took 248 ms
Info : sector 116 took 254 ms
Info : sector 117 took 255 ms
Info : sector 118 took 244 ms
Info : sector 119 took 249 ms
Info : sector 120 took 270 ms
Info : sector 121 took 275 ms
Info : sector 122 took 270 ms
Info : sector 123 took 269 ms
Info : sector 124 took 297 ms
Info : sector 125 took 277 ms
Info : sector 126 took 279 ms
Info : sector 127 took 287 ms
Info : Found flash device 'cyp s25fl256l' (ID 0x00196001)
Warn : device needs paging or 4-byte addresses - not implemented
shutdown command invoked
Message

 

The flashing process takes around 1 minute.