High Idle Power Consumption on the NRF9160 DK using Blinky on Zephyr (~ 520 uA)

Working with the NRF9160 it is often important to make sure current / power consumption is at its absolute minimum. To understand power floor it makes sense to first take a look at basic Zephyr sample application such as blinky.


# assuming the nrf connect sdk is installed under ~/dev/nrf-1.7.1
cd ~/dev/nrf-1.7.1/zephyr/samples/basic/blinky
# pristine flag making sure no old build files are used
west build -b nrf9160dk_nrf9160_ns --pristine
west flash --erase

Above commands will build and flash the Blinky Example. Measuring current on P22 of the board with a multimeter quickly shows a power draw of about 521 uA which is unusually high.

The source of the issue lies in the Secure Partition Manager module which has a configuration Flag set (CONFIG_SERIAL=y). Even setting CONFIG_SERIAL=n in the local proj.conf file will not disable the flag since it is still used by the spm module.

Manually overriding the .config file ~/nrf-1.7.1/zephyr/samples/basic/blinky/build/spm/zephyr/.config would in this case solve the issue and rebuilding would result in measuring idle consumption of about 3uA. However, there is a more convenient and opinionated way of setting this value by changing the menuconfig for spm using:

# start the menuconfig for spm
west build -b nrf9160dk_nrf9160_ns -t spm_menuconfig

Search for serial with /serial in the menuconfig and find the config flag.
Deselect the Serial config by pressing “space”

Rebuilding will then allow the current consumption to drop to the expected floor of about 3uA.

The prj.conf used in the example:


CONFIG_GPIO=n
CONFIG_LOG=n
CONFIG_CONSOLE=n
CONFIG_UART_CONSOLE=n
CONFIG_RTT_CONSOLE=n
CONFIG_USE_SEGGER_RTT=n
CONFIG_LOG_BACKEND_RTT=n
CONFIG_SERIAL=n
CONFIG_AT_HOST_LIBRARY=n
CONFIG_STDOUT_CONSOLE=n

Another even more persistent way of configuring the spm config flags is to utilize the Project File structure:


child_image/
└── spm
└── prj.conf

And configure the flags in the file ./child_image/spm/prj.conf


# Configuration copied from the nRF Secure Partition Manager (SPM) sample:
CONFIG_IS_SPM=y
CONFIG_FW_INFO=y
CONFIG_GPIO=y
CONFIG_SERIAL=n

Hope this is helpful for figuring out power issues with the nrf9160 DK.

Android 6 Marshmallow over Network File System (NFS) on the Wandboard

This tutorial assumes you have already built and deployed Android 6.0.1 for the Wandboard on an SD-card, according to our preceeding blog post in this series. For quick reference, we are using the Android source 6.0.1 for the Wandboard from the official website. The source code is assumed to be extracted to /opt/android/wand, and our host system is Ubuntu 16.04.

Android system development on an SD-card can be quite cumbersome. Even though there is the possibility of pushing and pulling files via Android Debug Bridge (ADB) between the target device and the host computer, more often than not, you still need to replace the contents of the SD-card manually. In the following, we will show you how you can boot the Linux kernel via TFTP and the Android operating system over NFS.

Continue reading “Android 6 Marshmallow over Network File System (NFS) on the Wandboard”

Updated guide to Android Unit Testing

In this post we are going to get an overview of unit testing in Android with a few practical examples. Unfortunately, testing in Android has some pitfalls, which we will try to uncover in this tutorial. A lot of the confusion stems from the fact that Android testing has undergone major development changes in the recent past, and therefore there are various – and sometimes – conflicting resources online, which may be depreciated in the mean time. Before we delve deeper, let’s create a new Android project. We are using preview version 4 of Android Studio 2.0, which can be downloaded from here.

Start by creating a new project “Say Hello” with a Blank Activity.
01_new_project

Continue reading “Updated guide to Android Unit Testing”