User Guide Manual v1-3
User Guide Manual v1-3
If you find any mistake, error or typo, please create an issue at https://github.com/WaRP7/WaRP7-
User-Guide/issues. Pull requests are also very welcome. You can help us to develop this document
sending pull requests for fixes or adding new sections.
You can find help on how to create a pull request use GitHub Help
In case of doubt about the content of this document, please also create an issue at
https://github.com/WaRP7/WaRP7-User-Guide/issues.
1.2. License
This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0
Unported License.
This document is intended as an introduction to the WaRP7 CPU Board and IO Board hardware and
focuses primarily on its initial setup and basic usage.
• WaRP7 IO Board
1
• Quick Start Guide
Figure 1. The display for the kit can be purchased separately (details coming soon). Check for
availability at www.element14.com/warp7
2
Figure 3. The connectors for the CPU board
3. Connect battery
3
Figure 5. How the battery should be placed after attached
4. Connect LCD
4
Figure 7. How to fold the flat cables and how to connect the second flat
5. Connect USB
5
2. Hardware Overview
The WaRP7 is the next generation Wearable’s Reference Platform based on the NXP iMX7 Solo
applications processor. The kit consists of 2 boards:
• A CPU board featuring the ARM Cortex-A7 based iMX7 processor, memory, power management
and a combo WiFi/BLE module.
2.1. Features/Specifications
Temperature Range
• The CPU & IO boards operate in the commercial temperature range, 0°C ~ 85°C
Table 2. IO Board
Features IO Board
6
The following block diagrams show the connection present on each board and how the devices are
connected.
7
Figure 11. IO Board
Length 38 mm
Width 23 mm
8
Figure 12. Board Dimensions
2.2.2. CPU
Main Processor: NXP MCIMX7S3DVK08SA - i.MX7S with 12mm x 12mm MAPBGA, 0.4mm.
The i.MX7S applications processor has an ARM Cortex-A7 core and an ARM Cortex-M4. The device is
targeted for IoT, Wearable and general embedded markets.
9
2.2.3. Memory eMCP – LPDDR3 and eMMC
The CPU Board features a Multi-Chip Package Memory 08EMCP04-EL3AV100-C30U from Kingston
which combines 8GB eMMC and 512MB Low Power DDR3 synchronous dynamic RAM. This comes
in 221-ball FBGA package.
The WaRP7 CPU board provides output video from MIPI-DSI and accepts input through MIPI-CSI.
MIPI-DSI
The CPU board includes a MIPI-DSI connector for outputting the video from the i.MX7S MIPI-DSI
PHY via the MIPI-DSI interface.
10
Figure 15. MIPI-DSI connector
11
Figure 16. Touch Screen Interface
MIPI-CSI
The CPU board includes a MIPI-CSI camera connector for connecting a CSI camera module.
2.2.5. Connectivity
The WaRP7 board provides a number of connectivity including Wi-Fi, Bluetooth, Bluetooth (BLE),
and USB-OTG. There is provision for NFC as a passive tag primarily for Bluetooth pairing.
12
Wi-Fi/Bluetooth
The Murata Type 1DX module is an ultra-small module that includes 2.4GHz WLAN IEEE
802.11b/g/n and Bluetooth Version 4.1 plus EDR functionality. Based on Broadcom BCM4343W, the
module provides high-efficiency RF front end circuits.
USB-OTG
The CPU board provides an USB micro-AB connector to support USB-OTG function powered by the
by USB OTG1 module on i.MX7S.
NFC
The board provides support for NFC using the NXP NT3H1101W0FHK. In addition to the passive
13
NFC Forum compliant contactless interface, the IC features an I2C contact interface, which can
communicate with i.MX7 if NTAG I2C is powered from an external power supply. An additional
externally powered SRAM mapped into the memory allows a fast data transfer between the RF and
I2C interfaces and vice versa, without the write cycle limitations of the EEPROM memory.
Power Management IC
The NXP PF3000 power management integrated circuit (PMIC) features a configurable architecture
that supports numerous outputs with various current ratings as well as programmable voltage and
sequencing. This enables the PF3000 to power the core processor, external memory and peripherals
to provide a single-chip system power solution.
14
Power Tree Design
The usage of PF3000 output is as shown in [PF3000 Output Power Up Sequence and Usage] below.
SWBST - 600 mA
VREFDDR 3 10 mA DRAM_VREF
The following i.MX7S power rails must use the internal LDO outputs.
VDD_1P2_CAP USB_VDD_H_1P2
15
Battery Charger
The NXP BC3770 is a fully programmable switching charger with dual-path output for single-cell Li-
Ion and Li-Polymer battery. The dual-path output allows mobile applications with a fully discharged
battery to boot up the system.
• High efficiency and switch-mode operation reduces heat dissipation and allows higher current
capability for a given package size.
• Single input with a 20V withstanding input and charges the battery with an input current up to
2A.
• Charging parameters and operating modes are fully programmable over an I2C Interface that
operates up to 400 kHz.
2.3. IO Board
2.3.1. Board Dimensions
Length 38 mm
Width 38 mm
16
Figure 22. Board Dimensions
2.3.2. Audio
The IO board includes the NXP SGTL5000 – an ultra-low power audio codec with MIC In and Line
Out capability.
17
2.3.3. Sensors
The WaRP7 board includes three sensors: altimeter, accelerometer and gyroscope. These three
sensor chips share the I2C bus on i.MX7S. The sensors interrupts are wired to the processor as OR
circuit. The software determines which device asserted the interrupt.
Altimeter
The board features NXP’s MPL3115A2 precision altimeter. The MPL3115A2 is a compact
piezoresistive absolute pressure sensor with an I2C interface. MPL3115 has a wide operating range
of 20kPa to 110 kPa, a range that covers all surface elevations on Earth. The fully internally
compensated MEMS in conjunction with an embedded high resolution 24-bit equivalent ADC
provide accurate pressure [Pascals] / altitude [meters] and temperature [degrees Celsius] data.
The board also features FXOS8700CQ 6-axis sensor combines industry-leading 14-bit accelerometer
and 16-bit magnetometer sensors in a small 3 x 3 x 1.2 mm QFN plastic package.
18
Figure 26. FXOS8700CQ – Accelerometer/Magnetometer Block Diagram
Gyroscope
The IO board also features the NXP’s 3-axis digital gyroscope - FXAS21002.
19
Figure 28. FXAS21002 Gyroscope Block Diagram
• I2C
• SPI
• PWM
20
• UART
• GPIO
3. Software Overview
The software implementation is a moving target. The table below shows the current status of the
software implementation for each hardware feature.
Touchscreen NO <2>
Legend
1. No firmware needed.
Note:
Command shown with prefix $ are to be run on host machine (like ubuntu, etc.).
Command shown with prefix ~# are to be run on board after linux up.
4. U-Boot
21
4.1. Obtaining an U-Boot image
Required software on the host PC:
• imx_usb_loader: https://github.com/boundarydevices/imx_usb_loader
• dfu-util: http://dfu-util.sourceforge.net/releases/ (if you are in a Debian distribution then you can
get it via libdfu-dev package)
• libusb: http://libusb.org/ (if you are in a Debian distribution then you can get it via libusb-dev
and libusb-1.0-0-dev)
$ cd u-boot-fslc/
$ git checkout -b <name_local_branch> origin/2016.07+fslc
$ make mrproper
$ make warp7_config
$ make
1. Remove the CPU board from the base board then put switch 2 in the upper position
3. Connect a USB to serial adapter between the host PC and WaRP7 (USB port on the base board)
4. Connect a USB cable between the OTG WaRP7 port and the host PC (USB port on the CPU board)
Then U-Boot should start and its messages will appear in the console program.
22
=> env default -f -a
=> saveenv
The following message should be seen on the U-Boot prompt after a successful upgrade:
Put WaRP7 board into normal boot mode (put the switch 2 in the lower position)
Power up the board and the new updated U-Boot should boot from eMMC
Boot partition
It can be the case that the raw partition of your WaRP7 is unlocked. Burning an image that doesn’t
contain U-Boot into the eMMC while on this state erases the original U-Boot. To avoid this, the user
can run the command below from the U-Boot prompt:
This command makes the raw partition read-only and prevents u-boot from being changed.
If you delete U-Boot by mistake and your board does not boot, please load U-boot from your host
machine usign imx_usb_loader. Run the command above once you get to the U-boot prompt to
prevent U-boot from being deleted again. You can follow the steps in the Load U-Boot via USB
section to learn how to boot U-Boot from your host machine.
Inversely if your partition is locked and would like to update U-Boot as described on this chapter,
you can unlock the raw partition using the command:
23
5. Linux Kernel
5.1. Obtaining a Linux Kernel image
Create 2 partitions, a 100MB FAT32 partition and define the remaing space as an ext4 partition.
Note: If you don’t have a rootfs on your WaRP7 partition, you can obtain one by following the steps
on Chapter 6 The Yocto Project
24
sudo umount /dev/sd<X>
Ubuntu
$ sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib \
build-essential chrpath socat libsdl1.2-dev xterm
NOTE
If you use a different distribution, see http://www.yoctoproject.org/docs/current/yocto-project-
qs/yocto-project-qs.html
$ mkdir ~/bin
$ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
$ PATH=${PATH}:~/bin
$ mkdir fsl-community-bsp
$ cd fsl-community-bsp
$ repo init -u https://github.com/Freescale/fsl-community-bsp-platform -b krogoth
$ repo sync
You can also download a prebuilt image from http://freescale.github.io/#download and test it on
your board.
The download can take some time (such as 15 minutes) and depends on your Internet connection
(please, make sure your proxy does allow your to download from external sources).
6.1.3. Building
25
$ source setup-environment build
NOTE
Please read the EULA and only press y if you accept it.
user@b19406-2:/code/yocto/master/build2$ tree
$ tree
.
└── conf
├── bblayers.conf
├── local.conf
├── local.conf.sample
└── templateconf.cfg
Change file conf/local.conf to configure the build system to target the WaRP7 machine as the
following example:
DL_DIR ?= "${BSPDIR}/downloads/"
ACCEPT_FSL_EULA = "1"
NOTE
The WaRP7 machine name is imx7s-warp
After configuring the Yocto Project to use WaRP7 machine, you can build any desired image, such
as:
26
$ bitbake fsl-image-machine-test
The first build can take several hours (depending on your machine). When it completes the result
can be found on tmp/deploy/image/imx7s-warp as show in the following example:
27
$ ls -l tmp/deploy/images/imx7s-warp/
total 263084
-rw-r--r-- 1 user user 67108864 Ago 8 11:58 core-image-base-imx7s-warp-
20160808141615.rootfs.ext4
-rw-r--r-- 1 user user 9568 Ago 8 11:58 core-image-base-imx7s-warp-
20160808141615.rootfs.manifest
-rw-r--r-- 1 user user 83886080 Ago 8 11:58 core-image-base-imx7s-warp-
20160808141615.rootfs.sdcard
-rw-r--r-- 1 user user 67108864 Ago 8 12:55 core-image-base-imx7s-warp-
20160808155513.rootfs.ext4
-rw-r--r-- 1 user user 9568 Ago 8 12:55 core-image-base-imx7s-warp-
20160808155513.rootfs.manifest
-rw-r--r-- 1 user user 83886080 Ago 8 12:55 core-image-base-imx7s-warp-
20160808155513.rootfs.sdcard
lrwxrwxrwx 1 user user 53 Ago 8 12:55 core-image-base-imx7s-warp.ext4 -> core-
image-base-imx7s-warp-20160808155513.rootfs.ext4
lrwxrwxrwx 1 user user 57 Ago 8 12:55 core-image-base-imx7s-warp.manifest ->
core-image-base-imx7s-warp-20160808155513.rootfs.manifest
lrwxrwxrwx 1 user user 58 Ago 8 12:55 core-image-base-imx7s-warp.sdcard.gz ->
core-image-base-imx7s-warp-20160808155513.rootfs.sdcard.gz
-rw-rw-r-- 2 user user 804917 Ago 8 10:28 modules--4.1-1.0.x+git0+b8fb01d418-r0-
imx7s-warp-20160808132254.tgz
lrwxrwxrwx 1 user user 67 Ago 8 10:28 modules-imx7s-warp.tgz -> modules--4.1-
1.0.x+git0+b8fb01d418-r0-imx7s-warp-20160808132254.tgz
-rw-r--r-- 2 user user 294 Ago 8 12:55 README_-
_DO_NOT_DELETE_FILES_IN_THIS_DIRECTORY.txt
lrwxrwxrwx 1 user user 47 Ago 8 10:31 u-boot.imx -> u-boot-sd-
v2016.07+gitAUTOINC+ae973bc45d-r0.imx
lrwxrwxrwx 1 user user 47 Ago 8 10:31 u-boot-imx7s-warp.imx -> u-boot-sd-
v2016.07+gitAUTOINC+ae973bc45d-r0.imx
lrwxrwxrwx 1 user user 47 Ago 8 10:31 u-boot-imx7s-warp.imx-sd -> u-boot-sd-
v2016.07+gitAUTOINC+ae973bc45d-r0.imx
lrwxrwxrwx 1 user user 47 Ago 8 10:31 u-boot.imx-sd -> u-boot-sd-
v2016.07+gitAUTOINC+ae973bc45d-r0.imx
-rwxr-xr-x 2 user user 347136 Ago 8 10:31 u-boot-sd-v2016.07+gitAUTOINC+ae973bc45d-
r0.imx
lrwxrwxrwx 1 user user 66 Ago 8 10:28 zImage -> zImage--4.1-
1.0.x+git0+b8fb01d418-r0-imx7s-warp-20160808132254.bin
-rw-r--r-- 2 user user 6514048 Ago 8 10:28 zImage--4.1-1.0.x+git0+b8fb01d418-r0-
imx7s-warp-20160808132254.bin
-rw-r--r-- 2 user user 33845 Ago 8 10:28 zImage--4.1-1.0.x+git0+b8fb01d418-r0-
imx7s-warp-20160808132254.dtb
lrwxrwxrwx 1 user user 66 Ago 8 10:28 zImage-imx7s-warp.bin -> zImage--4.1-
1.0.x+git0+b8fb01d418-r0-imx7s-warp-20160808132254.bin
lrwxrwxrwx 1 user user 66 Ago 8 10:28 zImage-imx7s-warp.dtb -> zImage--4.1-
1.0.x+git0+b8fb01d418-r0-imx7s-warp-20160808132254.dtb
28
6.2. Steps to update the image
board steps (u-boot)
host steps
$ gunzip core-image-base-imx7s-warp-20160808155513.rootfs.sdcard.gz
$ sudo dd if=core-image-base-imx7s-warp-20160808155513.rootfs.sdcard of=/dev/sdX
It may take few minutes. As soon as the dd command is finished, you can reboot the board.
7. FreeRTOS
FreeRTOS is a real time operating system that can be used to run applications on the WaRP7 Cortex-
M4 core. This operating system allows us to create applications that leverage multi-core
functionality and that could potentially help us create power efficient and better performing
applications when compared to its single core counterparts.
Extract the toolchain to any location you like and follow the steps below. The variable
'ARMGCC_DIR' is required:
Clone the WaRP7 FreeRTOS source code from the WaRP7 GitHub repository. You can use the
following command to do so:
29
implemented for WaRP7 are located here.
In order to build each application, move into the <demo_name>/armgcc/ directory and use the
build_all.sh script to compile the demo.
$ sh ./build_all.sh
After running the script, a "release" and "debug" folders are created. The <demo_name>.bin file can be
found under the "debug" and "release" folder.
In order to run this demo, place the <demo_name>.bin file (from the debug or release folder) into the
FAT partition of your WaRP7. To open said partition on the host machine, run the following
command from the U-Boot prompt:
$ ums 0 mmc 0
This commands gets all the partitions on WaRP7 mounted on your host machine. Copy the
<demo_name>.bin file directly into the partition that should already include your zImage and .dtb file.
NOTE
To reach the U-Boot prompt, press any key on your terminal console before the U-Boot
countdown reaches zero.
TIP
In Windows, each serial connection has an assigned COM# port which name would be needed
for the serial console program. WaRP7 opens two consequently numbered COM ports, the lower
numbered for the Cortex-A7 and the higher numbered for the Cortex-M4 core.
The first step to run the demos is to power up the WaRP7 and stop the booting process. To do so,
press any key on the /dev/ttyUSB0 console before the U-Boot count reaches zero. Once the U-Boot
prompt shows up in the console, type the following commands:
The phrase "Hello World!" appears on the second serial console /dev/ttyUSB1
30
7.3. Other demos
The WaRP7 FreeRTOS source code comes with two other demos for different types of memories. To
run the other demos, follow the same steps for building, loading the <demo_name>.bin and powering
up the WaRP7. Substitute the commands on U-Boot with the following commands:
The following demo stores the message "Hello World!" on the DDR memory using the Cortex-A7
core and reads it back usign the Cortex-M4 core.
The phrase "Hello World!" appears on the second serial console /dev/ttyUSB1
The following demo stores the message "Hello World!" on the OCRAM memory using the Cortex-A7
core and reads it back usign the Cortex-M4 core.
The phrase "Hello World!" appears on the second serial console /dev/ttyUSB1
8. Use Cases
This chapter demonstrates the enablement and use of the WaRP7 peripherals. Reference code for
most of the WaRP7 peripherals can be found on the WaRP7 GitHub page under the unit test
repository.
8.1. Wi-Fi
WaRP7 supports the Murata 1DX Wi-Fi/BT module. On way to use this module is to enable it with
the enablement firmware provided by Murata.
The Yocto Project WaRP7 image produces a kernel configured for this firmware and a rootfs which
includes the firmware artifacts. A pre-built image resulting from the Yocto Project build can be
found here. This image is an option but not a requirement for the use of this firmware. If you like to
build your own image your can follow the steps on The Yocto Project chapter.
31
After updating your WaRP7 with a Murata’s firmware enabled image, you can run the Wi-Fi unit
test or the following commands to enable the WaRP7’s Wi-Fi:
$ modprobe bcmdhd
$ ifconfig wlan0 up
$ wpa_passphrase <Network Name> <Password> > /etc/wpa_supplicant.conf
$ wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf -D nl80211 &
$ udhcpc -i wlan0
After this steps you should be able to do a ping test to check your connection.
32