Software » History » Revision 5
Revision 4 (laforge, 01/15/2017 02:01 PM) → Revision 5/6 (laforge, 01/15/2017 02:07 PM)
{{>toc}}
h1. Overview on [[OsmocomBB]] software stack
h2. The big picture
For simplicitly, this description only mentions the receive path of a GSM signal into our software. The
transmit part is left out, as is the bootloading/bootstrappig part, and the various control paths especially
from layer1 into the RF hardware.
First, we receive the RF signal at the antenna, pass it through the [[Rita]] mixer which does direct
down-conversion into analog I/Q baseband. This in turn is sent into the baseband ADC of the [[Iota]] ABB.
The resulting signal is passed to the BSP (baseband serial port) of the [[HardwareCalypso]] DBB.
{{graphviz_link()
digraph G {
rankdir = LR;
subgraph cluster_rf {
label = "RF signal chain";
Antenna -> Mixer [label = "RF Signal"];
Mixer -> ABB [label = "Analog I/Q" ];
}
ABB -> BSP [label = "Digital I/Q" ];
BSP [ label = "Calypso BSP" ];
}
}}
Inside the [[HardwareCalypso]] DBB, the digital baseband samples are passed from the BSP into the DSP core, where they are processed,
demodulated, deinterleaved, decoded, etc. before being passed onto the ARM core using a shared memory interface. On the ARM
core we have the [[OsmocomBB]] layer1 that processes the MAC blocks and sends them via L1CTL to the UART.
{{graphviz_link()
digraph G {
rankdir = LR;
BSP -> DSP;
subgraph cluster_calypso {
label = "Inside the Calypso DBB"
DSP -> ARM [label = "MAC blocks" weight = 0]
ARM -> layer1
layer1 -> L1CTL [ label = "struct msgb" ];
L1CTL -> UART [ label = "sercomm" ];
}
}
}}
On the PC itself, the L1CTL messages are received on the serial port by the [[osmocon]] program, which demultiplexes the different
sercomm streams and passes L1CTL on via a unix domain socket into whatever [[layer23]] program you may be running (e.g. [[mobile]]).
{{graphviz_link()
digraph G {
rankdir = LR;
UART -> SerialPort [ label = "RS232" dir=both ];
subgraph cluster_pc {
label = "On the host PC";
SerialPort -> osmocon [ label = "/dev/ttyUSB*" dir=both ];
layer23 -> osmocon [label = "unix socket" dir=both ];
osmocon -> terminal [label = "stdout" ];
}
osmocon [ shape = doublecircle ];
layer23 [ shape = circle label = "layer23\ne.g. mobile" ];
}
}}
h1. Index of Software related wiki pages
{{child_pages()}}