Software » History » Version 5
laforge, 01/15/2017 02:07 PM
1 | 5 | laforge | {{>toc}} |
---|---|---|---|
2 | |||
3 | h1. Overview on [[OsmocomBB]] software stack |
||
4 | |||
5 | h2. The big picture |
||
6 | |||
7 | |||
8 | For simplicitly, this description only mentions the receive path of a GSM signal into our software. The |
||
9 | transmit part is left out, as is the bootloading/bootstrappig part, and the various control paths especially |
||
10 | from layer1 into the RF hardware. |
||
11 | |||
12 | First, we receive the RF signal at the antenna, pass it through the [[Rita]] mixer which does direct |
||
13 | down-conversion into analog I/Q baseband. This in turn is sent into the baseband ADC of the [[Iota]] ABB. |
||
14 | The resulting signal is passed to the BSP (baseband serial port) of the [[HardwareCalypso]] DBB. |
||
15 | |||
16 | {{graphviz_link() |
||
17 | digraph G { |
||
18 | rankdir = LR; |
||
19 | subgraph cluster_rf { |
||
20 | label = "RF signal chain"; |
||
21 | Antenna -> Mixer [label = "RF Signal"]; |
||
22 | Mixer -> ABB [label = "Analog I/Q" ]; |
||
23 | } |
||
24 | ABB -> BSP [label = "Digital I/Q" ]; |
||
25 | BSP [ label = "Calypso BSP" ]; |
||
26 | } |
||
27 | }} |
||
28 | |||
29 | Inside the [[HardwareCalypso]] DBB, the digital baseband samples are passed from the BSP into the DSP core, where they are processed, |
||
30 | demodulated, deinterleaved, decoded, etc. before being passed onto the ARM core using a shared memory interface. On the ARM |
||
31 | core we have the [[OsmocomBB]] layer1 that processes the MAC blocks and sends them via L1CTL to the UART. |
||
32 | |||
33 | {{graphviz_link() |
||
34 | digraph G { |
||
35 | rankdir = LR; |
||
36 | BSP -> DSP; |
||
37 | subgraph cluster_calypso { |
||
38 | label = "Inside the Calypso DBB" |
||
39 | DSP -> ARM [label = "MAC blocks" weight = 0] |
||
40 | ARM -> layer1 |
||
41 | layer1 -> L1CTL [ label = "struct msgb" ]; |
||
42 | L1CTL -> UART [ label = "sercomm" ]; |
||
43 | } |
||
44 | } |
||
45 | }} |
||
46 | |||
47 | On the PC itself, the L1CTL messages are received on the serial port by the [[osmocon]] program, which demultiplexes the different |
||
48 | sercomm streams and passes L1CTL on via a unix domain socket into whatever [[layer23]] program you may be running (e.g. [[mobile]]). |
||
49 | |||
50 | {{graphviz_link() |
||
51 | digraph G { |
||
52 | rankdir = LR; |
||
53 | UART -> SerialPort [ label = "RS232" dir=both ]; |
||
54 | subgraph cluster_pc { |
||
55 | label = "On the host PC"; |
||
56 | SerialPort -> osmocon [ label = "/dev/ttyUSB*" dir=both ]; |
||
57 | layer23 -> osmocon [label = "unix socket" dir=both ]; |
||
58 | osmocon -> terminal [label = "stdout" ]; |
||
59 | } |
||
60 | osmocon [ shape = doublecircle ]; |
||
61 | layer23 [ shape = circle label = "layer23\ne.g. mobile" ]; |
||
62 | } |
||
63 | }} |
||
64 | |||
65 | h1. Index of Software related wiki pages |
||
66 | 4 | laforge | {{child_pages()}} |