ExpressMIMO2 drivers and firmware
This page shows how to get started with the ExpressMIMO2 family of cards.
Prerequisites
Before everything else, you should check that Linux has properly identified the card by typing:
lspci
You should see something like:
01:00.0 Signal processing controller: Xilinx Corporation Default PCIe endpoint ID
If not, please check that you have inserted the card correctly in a PIC gen2 slot; that the two orange LEDs on the card are on; and that the green LEDs are "dancing".
Compilation
All necessary utilities (kernel module, updatefw tool) are compiled automatically using the build script, as long as you specify the hardware using the -w EXMIMO
option. The build script should also place the script init_exmimo2.sh
which loads the driver and initializes the firmware into the directory targets/bin
Usage
To initialize the card just run init_exmimo2.sh
from targets/bin. Use dmesg
to check that the card is operational. You should see the message
[LEON card0]: ready
.
To compile Openair kernel modules manually (for information only)
To operate the ExpressMIMO2 cards, you need one hardware driver (linux kernel module).
This driver is located in $OPENAIR_TARGETS/ARCH/EXMIMO/DRIVER/eurecom
. RTAI is no
longer required to build this driver. RTAI is only required for the real-time operation
of the card (see below).
To build the driver just call make
from $OPENAIR_TARGETS/ARCH/EXMIMO/DRIVER/eurecom
.
It will produce a file openair_rf.ko
in the same directory. Insert the module using
sudo insmod openair_rf.ko
. If you do a dmesg
, you should see some kernel logs which
trace the initial dialogue between the LEON3 processor in ExpressMIMO2 and the openair_rf
driver in the host PC.
Firmware upload
Before using the card, the firmare needs to be loaded in the card. The program to do this
is located in $OPENAIR_TARGETS/ARCH/EXMIMO/USERSPACE/OAI_FW_INIT
. To build the tool call
make
from that directory.
In the same directory there is the compiled firmware for ExpressMIMO2 (sdr_expressmimo2
).
If you want to compile the firmware from scratch, look into the openair0
SVN repository,
folder exmimo2/software/sdr
.
To load the firmware into the card, type updatefw -s 0x43fffff0 -b -f sdr_expressmimox
, where x
has to be replaced with the Express MIMO board version.
Again by doing dmesg
you can check that the card is operational. You should see the message
[LEON card0]: ready
.
Potential Gotchas
When compiling the module, you can safely ignore the warnings at the end of the compilation that several rtai symbols are not found. But, if you see warnings for non RTAI functions, that means that indeed something is wrong in your build process.
When inserting the driver you may get several possible errors.
If you get:
insmod: error inserting 'openair_rf_softmodem.ko': -1 Unknown symbol in module
Then check with dmesg which symbol is missing. Most likely, one of the rtai module is not inserted.
If you get:
insmod: error inserting 'openair_rf_softmodem.ko': -1 No such device
That is pretty obvious: the card is not found.
-- @florian.kaltenberger - 25 Jan 2016