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 /nuttx. cd tools ./configure.sh pirelli_dpl10/ 2. Download the latest buildroot package into 3. unpack the buildroot tarball. The resulting directory may have versioning information on it like buildroot-x.y.z. If so, rename /buildroot-x.y.z to /buildroot. 4. cd /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