Project

General

Profile

Compile-without-sercomm » History » Version 10

« Previous - Version 10/12 (diff) - Next » - Current version
acassis, 02/19/2016 10:49 PM


NuttX compilation was done using CodeSourcery arm-2010.09-51-arm-none-eabi.bin, other toolchain could fail.

NuttX can be configured differently depending on what we want.
The possible configs are: * compal_e88/nsh_highram : for the gta02 using the osmocon for the romloader * compal_e99/nsh_highram : for the c155 using osmocon + loader.compalram.bin as a loader * compal_e99/nsh_compalram : for the c155 using osmocon to load it

nsh is the nuttx shell(nuttx can also run standalone apps without a shell).

standalone nuttx
if you want a standalone nuttx(without linking to osmocombb for the drivers) do the following: {{{
make clean
make distclean
}}}

Remove sercomm directories: {{{
$ rm -rf drivers/sercomm
$ rm -rf include/nuttx/sercomm
}}}

Remove sercomm reference at drivers/Makefile: {{{
-include sercomm/Make.defs
}}}

Then configure nuttx: {{{
$ cd nuttx/tools
$ ./configure.sh compal_e99/nsh_highram
}}}

Then apply manually the following pseudo-diff in nuttx/.config : {{{
-CONFIG_SERCOMM_CONSOLE=y
+CONFIG_SERCOMM_CONSOLE=n
-CONFIG_DISABLE_ENVIRON=y
+CONFIG_DISABLE_ENVIRON=n
+CONFIG_STDIO_LINE_BUFFER=y
}}}
And then remove the following lines from nuttx/Make.defs: {{{
OSMODIR = $(TOPDIR)/../../osmocom-bb
EXTRA_LIBS = $(OSMODIR)/src/target/firmware/comm/libcomm.a \
$(OSMODIR)/src/shared/libosmocore/build-target/src/.libs/libosmocore.a \
$(OSMODIR)/src/target/firmware/calypso/libcalypso.a \
$(OSMODIR)/src/target/firmware/comm/libcomm.a # ^^^ Stupid hack! Why do I have to put it twice???
}}}

Compile NuttX: {{{
$ cd nuttx
$ make
}}}

Load nuttx.bin into Motorola C155, because nuttx.bin is bigger than 64k, you should load chainload.compalram.bin together, use this command: {{{
./osmocom-bb/src/host/osmocon/osmocon -p /dev/ttyUSB0 -m c155 /osmocom-bb/src/target/firmware/board/compal_e99/chainload.compalram.bin -c nuttx.bin
}}}

After loading you will receive this message: {{{
Checksum on phone side matches, let's branch to your code
Branching to 0x00820000
Received branch ack, your code is running now!
}}}

Then press Ctrl+C and use a serial terminal of your preference, i.e:

Picocom: {{{
picocom -b 115200 /dev/ttyUSB0
}}}

Minicom: {{{
$ minicom -s
}}}

{{{

---[configuration]------                                     
| Filenames and paths      |                                     
| File transfer protocols  |                                     
| Serial port setup        | <<-- Choose this option                                     
| Modem and dialing        |                                     
| Screen and keyboard      |
| Save setup as dfl        |
| Save setup as..          |
| Exit                     |
| Exit from Minicom        |
------------------------
}}}

Then:

{{{
--------------------------------------------------------------------- | A - Serial Device : /dev/ttyUSB0 | | B - Lockfile Location : /var/lock | | C - Callin Program : | | D - Callout Program : | | E - Bps/Par/Bits : 115200 8N1 | | F - Hardware Flow Control : No | | G - Software Flow Control : No | | | | Change which setting? |
---------------------------------------------------------------------
}}}