summaryrefslogtreecommitdiff
path: root/nuttx/configs/pirelli_dpl10/README.txt
blob: 3b89005edd73fc95f9ee0dc465bfb5daae8d4973 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
pirelli_dpl10
=============

  This directory contains the board support for Pirelli "Discus" DP-L10
  phones.

  This port is a variant of the compal_e88 configuration with the small
  change of enabling the IrDA serial console:

    - CONFIG_SERIAL_IRDA_CONSOLE=y

  This port is based on patches contributed by Denis Carikli for both the
  compal e99 and e88. At the time of initial check-in, the following phones
  were tested:

    - Pirelli DPL-10 nsh_highram loaded via romload in osmocon

  The patches were made by Alan Carvalho de Assis and Denis Carikli using
  the Stefan Richter's patches that can be found here:

    http://cgit.osmocom.org/cgit/nuttx-bb/log/?h=lputt%2Ftesting

Osmocom-BB Dependencies and Sercomm
===================================

  The build environment assumes that you have the osmocom-bb project
  directory at same level as the nuttx project:

    |- nuttx
    |- apps
    `- osmocom-bb

  If you attempt to build this configuration without osmocom-bb, and that
  you added support for sercomm in your configuration(CONFIG_SERCOMM_CONSOLE=y)
  you will get compilation errors in drivers/sercomm due to header files that
  are needed from the osmocom-bb directory.

  By default, NuttX will not use sercomm (HDLC protocol) to communicate with
  the host system. Sercomm is the transport used by osmocom-bb that runs on top
  of serial.  See http://bb.osmocom.org/trac/wiki/nuttx-bb/run for detailed
  the usage of nuttx with sercomm.

Loading NuttX
=============

  The osmocom-bb wiki describes how to load NuttX.  See
  http://bb.osmocom.org/trac/wiki/nuttx-bb for detailed information.
  The way that nuttx is loaded depends on the configuration (highram/compalram)
  and phone:

  - compalram is for the ramloader(for phone having a bootloader on flash)
  - highram is for phones having the romloader(if the phone has a bootrom)
    or for loading in the ram trough a special loader(loaded first on ram
    by talking to the ramloader) when having a ramloader(which can only
    load 64k).

  The Pirelli phone is epecially easy to use because you just use the
  supplied USB cable.  The phone already has an integrated Silabs CP210x
  USB-UART, which is supported by Linux.  No need for a T191 cable.

  Most of the phones seem to use USB vid:pid 0489:e003, which is mainline
  since Linux 2.6.36. You can do the following for Kernels < 2.6.36:

    # modprobe -v cp210x
    # echo "0489 e003" > /sys/bus/usb-serial/drivers/cp210x/new_id

  Here's how I load NuttX into the phone:

  - Take out the battery
  - Plug in the USB adapter into the phone then the computer
  - Start osmocon like: osmocon -p /dev/ttyUSB0 -m romload nuttx.bin
  - Put the battery back in

  This works most of the time.  Sometimes I have to take out and put in
  the battery a few times or re-start the whole set of steps but it's
  generally quite reliable.

Memory Map
=========

  Calypso has 256KB of internal SRAM (0x800000-0x83ffff, although some of
  this is, I believe, actually ROM).  Only this internal SRAM is used by
  these configurations.  The internal SRAM is broken up into two logical
  banks.

    LRAM (rw) : ORIGIN = 0x00800000, LENGTH = 0x00020000
    HRAM (rw) : ORIGIN = 0x00820000, LENGTH = 0x00020000
    IRAM (rw) : ORIGIN = 0x00830000, LENGTH = 0x00010000

  Code can be loaded by the CalypsoBootloader only into HRAM beginning at
  address 0x00820000 and, hence, is restricted to 128KB (including then
  non-loaded sections:  uninitialized data and for the NuttX heap).

JTAG and Alternative Serial Console
===================================

JTAG
  All JTAG lines, as well as the second uart (UART_MODEM), go to the
  unpopulated connector next to the display connector.  NOTE:  You have
  to disassemble the phone to get to this connector.


  --- ---------------------------
  PIN SIGNAL
  --- ---------------------------
    1 Vcc
    2 RX_MODEM
    3 TESTRSTz (Iota)
    4 TDI
    5 TMS
    6 TCK
    7 TX_MODEM
    8 TDO
    9 N/C
   10 GND
   11 N/C
   12 N/C
  --- ---------------------------

JTAG Apapter:

  ------- ----------- --------------- --------------------------------------
  JTAG    20-PIN      DESCRIPTION     NOTES
  SIGNAL  CONNECTOR
  ------- ----------- --------------- --------------------------------------
   Vcc    1, 2        Vcc
   nTRST  3           Reset           Connect this pin to the (active
                                      low) reset input of the target MCU.
                                      Some JTAG adapters driver nTRST (high
                                      and low). Others can can configure
                                      nTRST as open collector (only drive
                                      low).
   GND    4, 6, 8,    Ground
          10, 12, 14,
          16, 20
   TDI    5           JTAG Test Data  Use 10K-100K Ohm pull-up resistor to
                      Input           VCC
   TMS    7           JTAG Test Mode  Use 10K-100K Ohm pull-up resistor to
                      Select          VCC
   TCK    9           Clock into the  Use 10K-100K Ohm pull-down resistor to
                      core            GND
   RTCK   11          Return clock    Some JTAG adapters have adaptive clocking
                                      using an RTCK signal.
   DBGSEL 11          Debug Select    Some devices have special pins that
                                      enable the JTAG interface. For example,
                                      on the NXP LPC2129 the signal RTCK must
                                      be driven low during RESET to enable the
                                      JTAG interface.
   TDO    13          JTAG Test Data  Use 10K-100K Ohm pull-up resistor to VCC
                      Output
   DBGRQ  17          N/C
   DGBACK 19          N/C
   ISP    ??          ISP             Most NXP MCU's have an ISP pin which
                                      (when pulled low) can be used to cause
                                      the MCU to enter a bootloader on reset.
                                      Use 10K-100K Ohm pull up resistor.
  ------- ----------- --------------- --------------------------------------

NuttX OABI "buildroot" Toolchain
================================

  A GNU GCC-based toolchain is assumed.  The files */setenv.sh should
  be modified to point to the correct path to the ARM GCC toolchain (if
  different from the default in your PATH variable).

  If you have no ARMtoolchain, one can be downloaded from the NuttX
  SourceForge download site (https://sourceforge.net/projects/nuttx/files/buildroot/).
  This GNU toolchain builds and executes in the Linux or Cygwin environment.

  1. You must have already configured Nuttx in <some-dir>/nuttx.

     cd tools
     ./configure.sh pirelli_dpl10/<sub-dir>

  2. Download the latest buildroot package into <some-dir>

  3. unpack the buildroot tarball.  The resulting directory may
     have versioning information on it like buildroot-x.y.z.  If so,
     rename <some-dir>/buildroot-x.y.z to <some-dir>/buildroot.

  4. cd <some-dir>/buildroot

  5. cp configs/arm7tdmi-defconfig-4.3.3 .config

  6. make oldconfig

  7. make

  8. Edit setenv.h, if necessary, so that the PATH variable includes
     the path to the newly built binaries.

  See the file configs/README.txt in the buildroot source tree.  That has more
  details PLUS some special instructions that you will need to follow if you are
  building a Cortex-M3 toolchain for Cygwin under Windows.

Generic OABI Toolchain
======================

  The NuttX OABI toolchain is selected with:

    CONFIG_ARM_TOOLCHAIN_BUILDROOT=y
    CONFIG_ARM_OABI_TOOLCHAIN=y

  In most cases, OsmocomBB is built with a different OABI toolchain with a
  prefix of arm-elf-.  To use that toolchain, change the configuration as
  follows:

    CONFIG_ARM_TOOLCHAIN_GNU_OABI=y