Building NuttX for ZKit-ARM-1769
The ZKit-ARM-1769 board comes with a pre-compiled NuttX library. This library is sufficient most application development requirements. But advanced users might want to fine tune NuttX, to their project requirements. This article shows how to build NuttX applications from source for the ZKit-ARM-1769.
The GCC ARM toolchain is provided as part of the BSP. The toolchain has to be installed before compiling the NuttX source code.
Create a folder called nuttx-dev for NuttX development.
$ mkdir nuttx-dev
Download the following files from the NuttX SourceForge Download page, to the nuttx-dev folder.
nuttx-6.27.tar.gz - contains NuttX RTOS
apps-6.27.tar.gz - contains sample applications
Extract the tar balls as shown below. nuttx-6.27 and apps-6.27 folder should be inside the same directory, in our case nuttx-dev.
$ tar --gunzip -x -f nuttx-6.27.tar.gz $ tar --gunzip -x -f apps-6.27.tar.gz $ mv nuttx-6.27 nuttx $ mv apps-6.27 apps
After unpacking the apps tarball, you will have two directories side by side like this:
nuttx-dev | +------+------+ | | nuttx/ apps/
This is important because the NuttX build for specific application will expect to find the apps directory in that (default) location.
The folder configs/zkit-arm-1769 corresponds to our target board. Within each board folder, board specific code is located within src. Pre-canned NuttX configurations to run test applications is available under the following sub-folders.
hello - Hello world application
nsh - NuttShell application
NuttX can be built for a specific test application by selecting one of the above pre-canned configurations. A script called configure.sh is available for this purpose, under nuttx/tools. The script has to be invoked with the board name and test application name as argument, as shown below.
# Make sure you are in nuttx-dev/nuttx $ pushd tools $ ./configure.sh zkit-arm-1769/hello $ popd
While invoking make, we will have to tell NuttX to use the CodeSourcery toolchain, by setting CONFIG_ARMV7M_TOOLCHAIN_CODESOURCERYL to y, and disable the Buildroot toolchain, by setting CONFIG_ARMV7M_TOOLCHAIN_BUILDROOT to n.
Invoke make, to build NuttX for the selected target board
application. Here we have configured NuttX for pre-canned hello application.
$ make CONFIG_ARMV7M_TOOLCHAIN_CODESOURCERYL=y CONFIG_ARMV7M_TOOLCHAIN_BUILDROOT=n
Finally, we get nuttx.hex, that can be flashed on to the board.