FreeCalypso > hg > freecalypso-citrine
annotate L1/stand/README @ 22:fc33e796507a
L1/dyn_dwl_cfile: new code compiles
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 10 Jun 2016 09:13:00 +0000 |
parents | 75a11d740a02 |
children |
rev | line source |
---|---|
0
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 In their internal development environment, TI had a way to build L1 standalone, |
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 i.e., omitting the G23 protocol stack and other large and complex pieces of the |
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 full firmware. Such an ability is essential for sane development, and the |
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 abundant references to OP_L1_STANDALONE throughout the codebase confirm that TI |
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 had it indeed. |
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 |
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 However, we (FreeCalypso) don't have a way to build an OP_L1_STANDALONE image |
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 exactly the way TI did it - we don't have all of the necessary source - the |
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 glue pieces specific to this configuration are missing. Nor do we necessarily |
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 need to imitate what TI did in this department: it appears that TI's standalone |
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 L1 build omitted GPF (with the exception of OS and OSX) and everything that |
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 lives in Riviera land, but for us the situation is different: we already have |
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 a successful build with Riviera and GPF, but no L1, thus we simply need to add |
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 L1 to what we have. Our idea of standalone L1 simply means building without |
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 the G23 stack, which we have yet to begin integrating. |
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 |
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 In the standard firmware build, there is a component called L1 PEI. It is part |
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 of the G23 stack, and has header and library dependencies of the latter - thus |
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
19 it is *not* part of the L1 code proper. However, it performs some essential |
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
20 initialization steps, and runs the L1A task. We don't know how TI handled |
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21 these functions in their standalone L1 build - we don't have that part of their |
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22 source, not even in the otherwise complete LoCosto version, not even if we were |
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23 targeting LoCosto hardware. |
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
24 |
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25 Our solution: we are going to lift l1_pei out of LoCosto's g23m-gsm, and hack |
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26 up a special version of it that won't have the standard complement of G23 |
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
27 header and library dependencies. It is virtually certain that TI did something |
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
28 different, but our hack-solution should work for our needs. |
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
29 |
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
30 Because our standalone L1 build is a specially stripped-down version of the |
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
31 regular fw build, and not at all like TI's standalone L1, we do NOT define |
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
32 OP_L1_STANDALONE. Instead we have a different preprocessor symbol: |
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
33 CONFIG_L1_STANDALONE. |
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
34 |
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35 The standard version of l1_pei calls vsi_c_open() to get queue handles of |
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
36 several G23 stack entities; it connects by name to "PL", "MMI", and if GPRS is |
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
37 enabled, also to "GRR", "LLC" and "SND". If we leave these connect-by-name |
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
38 calls unchanged in our L1 standalone version, our pei_init() will always return |
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
39 PEI_ERROR and never successfully initialize, which would not be very useful. |
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
40 If we removed these vsi_c_open() calls and the associated OSX queue setup, the |
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
41 first osx_send_prim() addressed to the queue in question will crash, so that |
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
42 approach wouldn't be useful either. |
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
43 |
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
44 What we would like to do is redirect all outbound messages emitted by our |
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
45 standalone L1 to the debug serial interface, using GPF's TST entity, just as if |
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
46 an L1 REDIRECT or DUPLICATE command was given to a complete GSM fw image. |
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
47 However, simply connecting our queues to TST won't work, as TST is not designed |
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
48 to receive "internal" protocol stack primitives directly. When the routing |
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
49 facility is used to DUPLICATE or REDIRECT a prim to an external entity, the |
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
50 code in gpf/frame/route.c sends a special "wrapper" prim to TST, and we need to |
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
51 replicate this wrapping in order to achieve the same effect. |
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
52 |
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
53 Our solution: we are going to construct a special forwarder entity called L1IF, |
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
54 and the connect-by-name calls in l1_pei which normally point to PL, MMI etc |
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
55 will point to L1IF instead. L1IF will run in the passive body variant, and its |
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
56 pei_primitive() function will replicate the routing facility's logic for |
75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
57 forwarding PS primitives to TST. Whew! |