Getting Started with NuttX – LM3S6965-EK (Ubuntu Linux)
This guide is based on NuttX revision 5544 date 20130121, and using an Ubuntu 12.04 (64-bits) development machine. It is not an exhaustive guide, but should be useful for those starting with NuttX on the LM3S6965-EK.
Note that NuttX has a thorough documentation through this website, this wiki, and the README files in the source code. This Guide was strongly based on documentation available at:
- tools README.txt
- Nuttx README.txt
- LM3S6965-EK README.txt
Building NuttX
1. The first step is to obtain the code from the Downloads page. When this guide was written, the code was obtained as follows:
svn checkout svn://svn.code.sf.net/p/nuttx/code/trunk nuttx-code cd nuttx-code/nuttx TOPDIR=`pwd`
2. Configure NuttX for the LM3S6963-EK
We're going to configure NuttX to use the nsh shell.
tools/configure.sh lm3s6965-ek:nsh
3. Install the kconfig-frontends package
# Install kconfig-frontends dependencies (the upcoming configure may catch more dependencies) sudo apt-get install gperf libncurses5-dev git clone https://patacongo@bitbucket.org/nuttx/tools.git tools cd tools/kconfig-frontends/ ./configure --enable-mconf --disable-gconf --disable-qconf make sudo make install
4. Install the buildroot toolchain
# Install buildroot dependencies (the upcoming configure may catch more dependencies) sudo apt-get install libgmp-dev libgmp3-dev libmpfr-dev libmpc-dev
The GMP version from the previous packages might not be enough for gcc-4.6.3, it's better to obtain the latest from http://gmplib.org/. In my case, this was enough:
mkdir --parents $HOME/temp cd $HOME/temp wget ftp://ftp.gnu.org/gnu/gmp/gmp-4.3.2.tar.gz tar xzvf gmp-4.3.2.tar.gz cd gmp-4.3.2/ ./configure make sudo make install # optional cleanup: rm -rf $HOME/temp/gmp-4.3.2*
Then you're ready to install buildroot.
git clone https://patacongo@bitbucket.org/nuttx/buildroot.git buildroot cd buildroot cp configs/cortexm3-eabi-defconfig-4.6.3 .config make menuconfig # and just exit make
5. Configure NuttX to use buildroot
cd $TOPDIR
# Be sure you have: # Build Setup # `--> Build Host Platform (Linux) # System Type # `--> Toolchain Selection (Buildroot (Cygwin or Linux)) # `--> [ ] OABI (vs EABI) # De-select make menuconfig
# Set the environment export TOOLCHAIN_BIN=<path to buildroot binaries> export PATH=$TOOLCHAIN_BIN:$PATH
6. Build
make
After you build, you'll have generated a nuttx.bin file.
Installing NuttX
The installation is based on the openocd tool.
1. Connect your LM3S6965-EK to your development PC.
Connect your board to your computer, using both the USB cable and the Ethernet cable.
2. Start the openocd daemon
Install openocd.
sudo apt-get install openocd
There's a helper script and a configuration file available at nuttx/bords/arm/tiva/lm3s6965-ek/tools. The configuration file ek-lm3s6965.cfg is based on the already existing files provided by openocd:
- /usr/share/openocd/scripts/interface/luminary.cfg
- /usr/share/openocd/scripts/board/ek-lm3s6965.cfg
- /usr/share/openocd/scripts/target/stellaris.cfg
To start the openocd daemon:
cd $TOPDIR boards/arm/tiva/lm3s6965-ek/tools/oocd.sh $PWD
3. Connecting GDB
For this step you need GDB, it's no particularly important which one you use, whether arm-nuttx-elf-gdb or one provided by a CodeSourcery toolchain like arm-none-eabi-gdb.
cd $TOPDIR arm-none-eabi-gdb (gdb) target remote localhost:3333 (gdb) symbol-file nuttx (gdb) monitor reset (gdb) monitor halt (gdb) load nuttx
4. Using nsh
Now you can connect to your board using a tool like termnet and termnetd. This is my configuration for the USB port in /etc/termnetd.conf
3001:on:/dev/ttyUSB0:B115200 CLOCAL IGNBRK CS8 CREAD;
When you're done configuring termnetd, you can restart the termnetd service to load the new configurations:
sudo service termnetd restart
Then:
termnetd localhost 3001
You can then reboot your board and watch it boot until you get your nsh line:
nsh> ls
See Also
- NuttShell (NSH)
- Running Applications from NSH
- Zilogic systems: NuttX, Getting Started (LM3S6965-EK)
- Zilogic systems: Building NuttX (LM3S6965-EK)
- Zilogic systems: Writing NuttX Applications (LM3S6965-EK)