Sony released some audio products with a Cortex-M3 processor core in late 2015. Considering development efficiency, code reusability, feature enhancements and training costs, we decided to use NuttX instead of Linux. In this talk I will describe Sony's modifications to NuttX for our project. This may give insights to Linux developers on the benefits and drawbacks of using a non-Linux OS for their own embedded projects.
NuttX is a POSIX-based open source RTOS. We ported NuttX to ON Semiconductor's LC823450 by ourselves, modified it for fast ELF loading, implemented minimum adb (Android debug bridge) protocols for testing purpose, and implemented DVFS in autonomous mode with a simple CPU idle calculation, and added wake_locks and stack trace which are popular in the Linux/Android worlds. Middleware and Applications were developed in C++11 with LLVM's libc++ which are also popular for large software systems. To debug the software, we implemented NuttX support for OpenOCD so that we can debug multi threaded applications with gdb. In addition, we used NuttX with QEMU (emulating the Cortex-M3) to port a bluetooth stack and in-house GUI toolkit and got them working before we received LC823450 FPGA. This session should help attendees understand the tradeoffs involved in this project, and whether using a non-Linux OS is appropriate and worth the effort.