libbladeRF  2.5.0
Nuand bladeRF library
Functions
Firmware and FPGA

Description

These functions provide the ability to load and program devices on the bladeRF board.

Care should be taken with bootloader recovery functions to ensure that devices operated on are indeed a bladeRF, as opposed to another FX3-based device running in bootloader mode.

These functions are thread-safe.

Functions

API_EXPORT int CALL_CONV bladerf_flash_firmware (struct bladerf *dev, const char *firmware)
 
API_EXPORT int CALL_CONV bladerf_load_fpga (struct bladerf *dev, const char *fpga)
 
API_EXPORT int CALL_CONV bladerf_flash_fpga (struct bladerf *dev, const char *fpga_image)
 
API_EXPORT int CALL_CONV bladerf_erase_stored_fpga (struct bladerf *dev)
 
API_EXPORT int CALL_CONV bladerf_device_reset (struct bladerf *dev)
 
API_EXPORT int CALL_CONV bladerf_get_fw_log (struct bladerf *dev, const char *filename)
 
API_EXPORT int CALL_CONV bladerf_jump_to_bootloader (struct bladerf *dev)
 
API_EXPORT int CALL_CONV bladerf_get_bootloader_list (struct bladerf_devinfo **list)
 
API_EXPORT int CALL_CONV bladerf_load_fw_from_bootloader (const char *device_identifier, bladerf_backend backend, uint8_t bus, uint8_t addr, const char *file)
 

Function Documentation

◆ bladerf_device_reset()

API_EXPORT int CALL_CONV bladerf_device_reset ( struct bladerf *  dev)

Reset the device, causing it to reload its firmware from flash

Parameters
devDevice handle
Returns
0 on success, value from Error codes list on failure

◆ bladerf_erase_stored_fpga()

API_EXPORT int CALL_CONV bladerf_erase_stored_fpga ( struct bladerf *  dev)

Erase the FPGA region of SPI flash, effectively disabling FPGA autoloading

Parameters
devDevice handle
Returns
0 on success, value from Error codes list on failure

◆ bladerf_flash_firmware()

API_EXPORT int CALL_CONV bladerf_flash_firmware ( struct bladerf *  dev,
const char *  firmware 
)

Write FX3 firmware to the bladeRF's SPI flash

Note
This will require a power cycle to take effect
Parameters
devDevice handle
[in]firmwareFull path to firmware file
Returns
0 on success, value from Error codes list on failure

◆ bladerf_flash_fpga()

API_EXPORT int CALL_CONV bladerf_flash_fpga ( struct bladerf *  dev,
const char *  fpga_image 
)

Write the provided FPGA image to the bladeRF's SPI flash and enable FPGA loading from SPI flash at power on (also referred to within this project as FPGA "autoloading").

Parameters
devDevice handle
[in]fpga_imageFull path to FPGA file
Returns
0 on success, value from Error codes list on failure

◆ bladerf_get_bootloader_list()

API_EXPORT int CALL_CONV bladerf_get_bootloader_list ( struct bladerf_devinfo **  list)

Get a list of devices that are running the FX3 bootloader.

After obtaining this list, identify the device that you would like to load firmware onto. Save the bus and address values so that you can provide them to bladerf_load_fw_from_bootloader(), and then free this list via bladerf_free_device_list().

Parameters
[out]listUpon finding devices, this will be updated to point to a list of bladerf_devinfo structures that describe the identified devices.
Returns
Number of items populated in list, or an error value from the Error codes list on failure

◆ bladerf_get_fw_log()

API_EXPORT int CALL_CONV bladerf_get_fw_log ( struct bladerf *  dev,
const char *  filename 
)

Read firmware log data and write it to the specified file

Parameters
devDevice to read firmware log from
[in]filenameFilename to write log information to. If set to NULL, log data will be printed to stdout.
Returns
0 upon success, or a value from Error codes list on failure

◆ bladerf_jump_to_bootloader()

API_EXPORT int CALL_CONV bladerf_jump_to_bootloader ( struct bladerf *  dev)

Clear out a firmware signature word in flash and jump to FX3 bootloader.

The device will continue to boot into the FX3 bootloader across power cycles until new firmware is written to the device.

Parameters
devDevice handle
Returns
0 on success, value from Error codes list on failure

◆ bladerf_load_fpga()

API_EXPORT int CALL_CONV bladerf_load_fpga ( struct bladerf *  dev,
const char *  fpga 
)

Load device's FPGA.

Note
This FPGA configuration will be reset at the next power cycle.
Parameters
devDevice handle
[in]fpgaFull path to FPGA bitstream
Returns
0 upon successfully, or a value from Error codes list on failure

◆ bladerf_load_fw_from_bootloader()

API_EXPORT int CALL_CONV bladerf_load_fw_from_bootloader ( const char *  device_identifier,
bladerf_backend  backend,
uint8_t  bus,
uint8_t  addr,
const char *  file 
)

Download firmware to the specified device that is enumarating an FX3 bootloader, and begin executing the firmware from RAM.

Note
This function does not write the firmware to SPI flash. If this is desired, open the newly enumerated device with bladerf_open() and use bladerf_flash_firmware().
Parameters
[in]device_identifierDevice identifier string describing the backend to use via the <backend>:device=<bus>:<addr> syntax. If this is NULL, the backend, bus, and addr arguments will be used instead.
[in]backendBackend to use. This is only used if device_identifier is NULL.
[in]busBus number the device is located on. This is only used if device_identifier is NULL.
[in]addrBus address the device is located on. This is only used if device_identifier is NULL.
[in]fileFilename of the firmware image to boot
Returns
0 on success, value from Error codes list on failure