MS-side GPRS » History » Version 7
fixeria, 12/26/2022 04:09 PM
update the project diagram (v3)
1 | 1 | fixeria | h1. MS-side GPRS implementation |
---|---|---|---|
2 | |||
3 | h2. Project description |
||
4 | |||
5 | 5 | pespin | An open source GPRS implementation for OsmocomBB. Can demonstrate GRPS attach, PDP |
6 | context establishment and the exchange of uplink and downlink user IP data with a GPRS network. |
||
7 | 1 | fixeria | |
8 | h2. Project architecture |
||
9 | |||
10 | Here we have the overall project architecture and the state of implementation. |
||
11 | |||
12 | I created a draft layer diagram using https://draw.io, see the attachments. |
||
13 | The "ardc_darc_gprs_arch.drawio" can be uploaded and edited there. |
||
14 | 2 | fixeria | Suggestions/corrections are welcome (FIXME section below). |
15 | 1 | fixeria | |
16 | 7 | fixeria | !ardc_darc_gprs_arch.v3.png! |
17 | 2 | fixeria | |
18 | 6 | Hoernchen | h2. Lower layer details |
19 | |||
20 | * the setup consists of a few threads |
||
21 | ** a lower rx-thread that keeps the time by handling SCH bursts and ensures ts alignment |
||
22 | ** the upper rx thread that also is the select "main loop" that demods the bursts and handles the communication with upper layers |
||
23 | ** ctrl if thread that asynchronously handles ctrl commands which can't be submitted from libusb threads in the bladerf case |
||
24 | ** a tx thread that modulates and submits the bursts |
||
25 | ** in case of uhd a few more threads, 9 in total. |
||
26 | * current target is a raspi 4 running at max cpu freq without any power save, with isolated core 1+2 (0+3 work as usual), other threads are distributed across non isolated cores. |
||
27 | ** arbitrary choice, rpi4 usb is known good, cpu is sufficient |
||
28 | ** yes, this can run as is on any system with 4 cores _without_ configuring anything, it will just not work reliably. |
||
29 | * latency excluding usb is > 1 ts, since the sdr buffer is 1ts < size <2 ts so the average case is 1-2ts latency including demodulation until data hypothetically reaches the l1 socket to upper layer apps, decoding is basically free. |
||
30 | ** usb3 packet size is 1024 -> min blade usb transfer is 1020 samples |
||
31 | 2 | fixeria | ** uhd transfer size has to aligned to 8 and 24 bytes but *not* a multiple of 1024.. so it can be tuned, but not to gsm burst sizes. |