Transcript
EVK-W16 Evaluation kit for ELIN-W160 and ODIN-W160 modules User Guide
Abstract This document describes how to set up the EVK-W16 evaluation kit to evaluate u-blox ELIN-W160 and ODIN-W160 multiradio modules. It also provides an overview of the ELIN-W160 module, the build environment, how to download the firmware for ELIN-W160 and brief information on how to modify and add new functionality to Yocto build environment.
www.u-blox.com UBX-15017061 - R02
EVK-W16 - User Guide
Document Information Title
EVK-W16
Subtitle
Evaluation kit for ELIN-W160 and ODIN-W160 modules
Document type
User Guide
Document number
UBX-15017061
Revision, date
R02
Document status
Advance Information
1-Mar-2016
Document status information Objective Specification
Document contains target values. Revised and supplementary data will be published later.
Advance Information
Document contains data based on early testing. Revised and supplementary data will be published later.
Early Production Information
Document contains data from product verification. Revised and supplementary data may be published later.
Production Information
Document contains the final product specification.
This document applies to the following products: Product name
Type number
Firmware version
PCN / IN
ELIN-W160
ELIN-W160-00B-00
2.0.0.0
N/A
u-blox reserves all rights to this document and the information contained herein. Products, names, logos and designs described herein may in whole or in part be subject to intellectual property rights. Reproduction, use, modification or disclosure to third parties of this document or any part thereof without the express permission of u-blox is strictly prohibited. The information contained herein is provided “as is” and u-blox assumes no liability for the use of the information. No warranty, either express or implied, is given, including but not limited, with respect to the accuracy, correctness, reliability and fitness for a particular purpose of the information. This document may be revised by u-blox at any time. For most recent documents, please visit www.u-blox.com. Copyright © 2016, u-blox AG. u-blox® is a registered trademark of u-blox Holding AG in the EU and other countries.
UBX-15017061 - R02
Advance Information
Contents Page 2 of 38
EVK-W16 - User Guide
Contents Contents.............................................................................................................................. 3 1
Introduction .................................................................................................................. 5 1.1
Overview .............................................................................................................................................. 5
1.2
Development board .............................................................................................................................. 5
1.2.1
2
3
System requirements ......................................................................................................................... 7
Getting started ............................................................................................................. 8 2.1
Jumper configuration............................................................................................................................ 8
2.2 2.3
GPIO LED overview ............................................................................................................................... 9 UART Terminal.................................................................................................................................... 10
2.4
Ethernet over USB............................................................................................................................... 11
2.5 2.6
Working with Wi-Fi............................................................................................................................. 11 Bluetooth ........................................................................................................................................... 13
2.7
Ethernet ............................................................................................................................................. 15
2.8
Benchmark ......................................................................................................................................... 16
Yocto environment setup .......................................................................................... 17 3.1 Install environment ............................................................................................................................. 17 3.1.1 Build default distribution ................................................................................................................. 20 3.2
4
Factory restore ........................................................................................................... 23 4.1
5
USB Device firmware upgrade ............................................................................................................ 23
Build and install package ........................................................................................... 25 5.1 5.2
6
Download firmware to target ............................................................................................................. 22
Package server .................................................................................................................................... 25 Sample Python package ...................................................................................................................... 26
Overview of Yocto meta layers ................................................................................. 28 6.1 6.2
Developer layer ................................................................................................................................... 28 Application layer ................................................................................................................................. 28
6.3
u-blox layers ....................................................................................................................................... 28
6.3.1 6.3.2
meta-ublox Layer ............................................................................................................................ 29 meta-ublox-extras Layer .................................................................................................................. 30
6.3.3
Yocto, OpenEmbedded, and TI layers .............................................................................................. 31
6.4 Working with the meta layers ............................................................................................................. 31 6.4.1 Creating a new meta layer .............................................................................................................. 31 6.4.2
Overriding or modifying a meta layer or an image ........................................................................... 33
Appendix .......................................................................................................................... 35 A Glossary ...................................................................................................................... 35 B
Policies and configuration ......................................................................................... 36
UBX-15017061 - R02
Advance Information
Contents Page 3 of 38
EVK-W16 - User Guide
Related documents and links .......................................................................................... 37 Revision history ................................................................................................................ 37 Contact .............................................................................................................................. 38
UBX-15017061 - R02
Advance Information
Contents Page 4 of 38
EVK-W16 - User Guide
1 Introduction This document describes how to set up the u-blox EVK-W16 evaluation kit to perform some basic operations with Wi-Fi, Bluetooth and the terminal. The EVK-W16 also serves as reference platform for the ODIN-W160 module and this guide also demonstrates the capabilities of the ODIN-W160 multiradio module. The setup process takes around 10 minutes. This guide also provides information on how to build and customize the firmware. You can build and customize the firmware in 1-2 hours, depending on the build system and speed of the internet connection.
1.1 Overview The ELIN-W160 is a system-on-module that uses an AM3352, 512 MB NAND, 256 MB RAM with a dual-band 802.11a/b/g/n Wi-Fi and Bluetooth 4.0 radio for OEMs. The ELIN-W160 module has the following three main connectors: Primary host connector Secondary host connector A U.FL. connector for connecting to an external antenna Two LEDs indicate the power and the activity of the CPU as shown in Figure 1.
Figure 1: ELIN-W16 Connector LED overview
1.2 Development board The ELIN-W160 requires a carrier board to provide power and connectors for the user interfaces, as needed for operation. The EVK-W16 evaluation kit and its main parts are shown in Figure 2. The development board provides convenient connectors for the ELIN-W160 for all default interfaces, as shown in Figure 3.
Socket for ELIN-W160 Dual 100 Mbit Ethernet PHY and RJ45 connectors USB 2.0 OTG o Host, Micro-AB o Device, Type-A Console UART (UART0) via o FTDI chip o Full modem connector UART1 with CTS/RTS signals
UBX-15017061 - R02
Advance Information
Introduction Page 5 of 38
EVK-W16 - User Guide
o DSUB9 Signal pin headers o Access to almost all CPU signals JTAG for ELIN-W160 CPU Three GPIO buttons Four user customizable LEDs Antenna connector Power switch
Figure 2: Overview of EVK-W16 evaluation kit
UBX-15017061 - R02
Advance Information
Introduction Page 6 of 38
EVK-W16 - User Guide
Figure 3: Overview of EVK-W16 connectors
1.2.1 System requirements The minimum system requirements are provided below:
EVK-W16 evaluation kit o ELIN-W160 module o EVB-W16 evaluation board o 9-12 V power adapter 1A o USB A - B mini cable o USB A - B micro cable o Antenna o u.fl. to RPSMA antenna cable PC with Linux or Windows o Minimum recommended configuration: 2 core, 60 GB disk space and 4 GB RAM o Linux build host is recommended for building the firmware. The build times can be long if done through a virtual Linux system.
UBX-15017061 - R02
Advance Information
Introduction Page 7 of 38
EVK-W16 - User Guide
2 Getting started The setup process described in this section allows you to quickly get up and running with your development board using Ethernet over USB and a console through FTDI chip UART: Ensure that the development board is not connected to a power source.
2.1 Jumper configuration 1. Set the jumper on JP4 between pin 1 and 5. This selects 5V0 regulated as the power source for ELIN-W1. 2. Set the jumper on JP6 between pin 1 and 2. This disables the UART0 DSUB transceiver, which could cause interference with the FTDI chip. 3. Set three jumpers between pins on JP7 and JP8 between pairs of pins: JP7.19 - JP8.20, JP7.15 - JP8.16, and JP7.9 - JP8.10. This enables the UART1 transceiver on the DSUB J24 and connects RXD and TXD to the DSUB connector. 4. Set the jumper on JP12 between pin 1 and 2. This sets 3.3 V to the Ethernet PHYs.
Figure 4: EVK-W16 jumper configuration
5. Connect a regulated power supply to the J16.
UBX-15017061 - R02
Advance Information
Getting started Page 8 of 38
EVK-W16 - User Guide
2.2 GPIO LED overview 6. Turn on the power supply and turn on the power switch (SW8). The LED LD17 lights up to indicate power to the board while the LED LD20 lights up to indicate power to the ELIN-W160 module. 7. Connect a USB cable to the FTDI chip. The LED LD18 will indicate USB Voltage.
Figure 5: EVK-W16 GPIO LED overview
8. Press PWR TGL (SW11) to start the OEM Module. Your OS should detect the FTDI chip and provide 4 UARTs. Connect to the console. The FTDI chip has four channels and the console is on the third. a. 115200 8N1 b. No hardware handshake // On HOST PC $ minicom -b 115200 -D /dev/ttyUSB2
9. You can see that the module boots first the u-boot and then boots the kernel into user space. 10. You can now login as root and no password is required by default.
UBX-15017061 - R02
Advance Information
Getting started Page 9 of 38
EVK-W16 - User Guide
U-Boot SPL 2013.10 (Jun 10 2015 - 12:02:59) U-Boot 2013.10 (Jun 10 2015 - 12:02:59) I2C:
ready
DRAM:
256 MiB
NAND: MMC:
512 MiB OMAP SD/MMC: 0, OMAP SD/MMC: 1
Net:
cpsw:3 is connected to cpsw.
Reconnecting to cpsw
cpsw Hit any key to stop autoboot:
1 ^H^H^H 0·
Booting from nand ... NAND read: device 0 offset 0x200000, size 0x500000 5242880 bytes read: OK NAND read: device 0 offset 0x1c0000, size 0x40000 262144 bytes read: OK Kernel image @ 0x80008000 [ 0x000000 - 0x4104a8 ] ## Flattened Device Tree blob at 80f80000 Booting using the fdt blob at 0x80f80000 Using Device Tree in place at 80f80000, end 80f8b3fd Starting kernel ... [
0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Linux version 3.19.8 (msen@de-bln-lt-msen) (gcc version 4.9.2 (GCC) ) #1 Tue Oct 20 12:14:28 CEST 2015 ... ... Starting rpcbind daemon...done. Starting UART HCI interface: hciattach Starting Bluetooth daemon: bluetoothd starting Busybox UDHCP Server: udhcpd... done. Starting syslogd/klogd: done * Starting Avahi mDNS/DNS-SD Daemon: avahi-daemon ...done. Starting Hiawatha Web Server: hiawatha. Poky (Yocto Project Reference Distro) 1.8.1 elin-w160-evk /dev/ttyO0 elin-w160-evk login:
2.3 UART Terminal The UART0 serves as a terminal at 115200 8N1 and is accessible through the FTDI chip (port C) on J26 or RS232 on J22. If you use the FTDI chip, ensure that the JP6 jumper is in place. Remove J22 if you use RS232.
UBX-15017061 - R02
Advance Information
Getting started Page 10 of 38
EVK-W16 - User Guide
2.4 Ethernet over USB Connect the EVK-W16 to the PC using a USB cable (Type-A to Micro-AB) inserted into USB0 port. On Linux, you should be able to find the USB device on your PC using the following commands: // On HOST PC $ ifconfig usb0 usb0 Link encap:Ethernet
HWaddr 02:25:f5:19:00:89
inet addr:192.168.7.8
Bcast:192.168.7.255
Mask:255.255.255.0
inet6 addr: fe80::25:f5ff:fe19:89/64 Scope:Link UP BROADCAST RUNNING MULTICAST
MTU:1500
Metric:1
RX packets:37 errors:0 dropped:0 overruns:0 frame:0 TX packets:111 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:6019 (5.8 KiB)
TX bytes:428814 (418.7 KiB)
The ELIN-W160 has a DHCP server, which provides an IP address for your PC. If required, you can request a new IP address from the ELIN-W160 using the following command: $ dhclient -i usb0
You should now be able to ping your target $ ping 192.168.7.1
If you use Windows, you must change the USB gadget driver to RNDIS and install the RNDIS driver on Windows for Ethernet-Over-USB to work properly. Currently, there is no driver in Windows OS for USB NCM. For USB RNDIS, use the linux.inf driver. 1. 2. 3. 4.
Open the Device Manager in Windows to install the driver. Under Other devices, select the RNDIS device, right click and choose Update Driver Software. In the Update Driver Software window, select Browse my computer for driver software. On the next screen, where it prompts you to browse for driver software on your computer, select Let me pick from a list of device drivers option and click Next. 5. In the next screen, click Have Disk button and select the driver you have already downloaded (linux.inf). 6. Accept any warnings and the device should be installed.
2.5 Working with Wi-Fi Connecting to a Wi-Fi is easy using wpa_cli. This also allows you to save your configuration after setting up the network. You can also modify /etc/wpa_supplicant.conf directly if you are familiar with wpa_supplicant. Refer to http://w1.fi/wpa_supplicant/ for more information regarding wpa_supplicant. The wpa_supplicant must be started before using wpa_cli. Steps
Instructions
Ensure that your Wi-Fi interface is up.
# ifconfig wlan0 up
Start wpa_supplicant command line interface.
# wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf Successfully initialized wpa_supplicant # wpa_cli wpa_cli v2.0 Copyright (c) 2004-2012, Jouni Malinen
and contributors This software may be distributed under the terms of the BSD license. See README for more details.
UBX-15017061 - R02
Advance Information
Getting started Page 11 of 38
EVK-W16 - User Guide
Steps
Instructions Selected interface 'wlan0' Interactive mode
Verify whether the wlan0 interface is up.
> status wpa_state=DISCONNECTED address=de:ad:be:ef:00:00
Perform a scan to see the available networks.
> scan OK <3>CTRL-EVENT-SCAN-RESULTS <3>WPS-AP-AVAILABLE > scan_results bssid / frequency / signal level / flags / ssid
Associate with the network and save the configuration.
00:11:22:33:44:55 11:22:33:44:55:66
2437 -77 [WPA-PSK-CCMP][WPA2-PSK-CCMP][WPS][ESS]TEST-AP 2447 -41 [WPS][ESS] TEST-AP2
22:33:44:55:66:77
2427 -36 [WPA2-EAP-CCMP-preauth][ESS] TEST-AP3
> add_network 0 > set_network 0 ssid "TEST-AP" OK > set_network 0 psk "1234567" OK > enable_network 0 OK <3>CTRL-EVENT-SCAN-RESULTS <3>WPS-AP-AVAILABLE <3>Trying to associate with 00:11:22:33:44:55 (SSID='TEST-AP' freq=2437 MHz) <3>Associated with 00:11:22:33:44:55 <3>WPA: Key negotiation completed with 00:11:22:33:44:55 [PTK=CCMP GTK=CCMP] <3>CTRL-EVENT-CONNECTED - Connection to 00:11:22:33:44:55 completed [id=0 id_str=] > save_config OK > quit #
Check whether your wpa_configuration is updated.
# cat /etc/wpa_supplicant.conf ctrl_interface=/var/run/wpa_supplicant ctrl_interface_group=0 update_config=1 network={ ssid="TEST-AP" psk="1234567" }
Once associated with the access point, you can get an IP address. You can obtain the IP address either by using the network configurations preset in the ELINW16 or by using udhcpc DHCP client.
# ifup wlan0 udhcpc (v1.21.1) started Sending discover... Sending select for 192.168.0.89... Lease of 192.168.0.89 obtained, lease time 43200 /etc/udhcpc.d/50default: Adding DNS 192.168.0.1 #
UBX-15017061 - R02
Advance Information
Getting started Page 12 of 38
EVK-W16 - User Guide
Steps
Instructions or # udhcpc -i wlan0 udhcpc (v1.21.1) started Sending discover... Sending discover... Sending discover... Sending select for 192.168.0.89... Lease of 192.168.0.89 obtained, lease time 43200 /etc/udhcpc.d/50default: Adding DNS 192.168.0.1 #
You can now ping the router to verify the connection.
# ping 192.168.0.1 PING 192.168.0.1 (192.168.0.1): 56 data bytes 64 bytes from 192.168.0.1: seq=0 ttl=64 time=3.253 ms 64 bytes from 192.168.0.1: seq=1 ttl=64 time=2.856 ms 64 bytes from 192.168.0.1: seq=2 ttl=64 time=3.716 ms
Table 1: Steps to connect to Wi-Fi
2.6 Bluetooth Bluetooth is handled through Bluez, a user space protocol/layer stack for Bluetooth. Use the steps mentioned in Table 2 to scan and connect to different devices. Steps
Instructions
Verify whether the Bluetooth interface is started. The Bluetooth interface is started automatically during boot.
# hcitool dev Devices:
You can scan for Bluetooth devices.
# hcitool scan
hci0
78:C5:E5:30:83:45
Scanning ... 1C:BA:8C:7F:58:B3
Choose a device and obtain additional information regarding the device.
Bluetooth Device
00:12:F3:1A:CA:89 00:12:F3:23:43:60
n/a PB COM21
00:12:F3:1A:CA:F7 00:12:F3:17:C4:DE
PB COM36 OBS421 echo device
# hcitool info 00:12:F3:17:C4:DE Requesting information ... BD Address: 00:12:F3:17:C4:DE Device Name: OBS421 echo device LMP Version: 4.0 (0x6) LMP Subversion: 0x1b55 Manufacturer: Texas Instruments Inc. (13) Features page 0: 0xff 0xfe 0x2d 0xfe 0xdb 0xff 0x7b 0x87 <3-slot packets> <5-slot packets> <3-slot EDR ACL> <5-slot EDR ACL>
UBX-15017061 - R02
Advance Information
Getting started Page 13 of 38
EVK-W16 - User Guide
Steps
Instructions <3-slot EDR eSCO> Features page 1: 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00
Use the sdptool to find out the services supported by the device.
# sdptool records Service Name: SPP
00:12:F3:17:C4:DE
Service RecHandle: 0x10001 Service Class ID List: "Serial Port" (0x1101) Protocol Descriptor List: "L2CAP" (0x0100) "RFCOMM" (0x0003) Channel: 1 Profile Descriptor List: "Serial Port" (0x1101) Version: 0x0102 If you have a serial port adapter such as the OBS421, you can connect the device and make it a serial port on the ELIN-W1. Press CTRL-A + x to leave minicom.
# rfcomm connect 0 00:12:F3:17:C4:DE 1 & Connected /dev/rfcomm0 to 00:12:F3:17:C4:DE on channel 1 Press CTRL-C for hangup
Use "rfcomm release 0" to disconnect.
# minicom -b 115200 -D /dev/rfcomm0
To accept incoming SPP connections, you need to do the following on the ELIN-W1:
# hciconfig hci0 piscan
• Turn on both page and inquiry scan (optional).
# sdptool add SP
•
Add a Serial port service.
Serial Port service registered # rfcomm listen /dev/rfcomm0 1 &
•
Start the RFCOMM listener.
Waiting for connection on channel 1
Press CTRL-A + x to leave minicom. Use "rfcomm release 0" to disconnect the rfcomm listener.
Connection from 00:12:F3:17:C4:DE to /dev/rfcomm0 Press CTRL-C for hangup # minicom -b 115200 -D /dev/rfcomm0
Table 2: Steps to connect to Bluetooth
UBX-15017061 - R02
Advance Information
Getting started Page 14 of 38
EVK-W16 - User Guide
2.7 Ethernet Ethernet on the ELIN-W160 is set to obtain an IP address through DHCP automatically. To see the interfaces, use ifconfig: # ifconfig -a eth0 Link encap:Ethernet
HWaddr 20:CD:39:FC:1F:42
UP BROADCAST MULTICAST
MTU:1500
Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) Interrupt:56 eth1
Link encap:Ethernet
HWaddr 20:CD:39:FC:1F:44
BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B)
TX bytes:0 (0.0 B)
To bring up the interfaces, use ifup. This command uses the configuration in /etc/network/interfaces to configure your Ethernet interface: # ifup eth0 udhcpc (v1.21.1) started Sending discover... Sending discover...
UBX-15017061 - R02
Advance Information
Getting started Page 15 of 38
EVK-W16 - User Guide
2.8 Benchmark Use iperf to test the throughput of the network connection. Install iperf on your PC if not installed previously and start iperf as a server. // On HOST PC $ sudo apt-get install iperf $ iperf -s -u
The iperf is pre-installed on the ELIN-W160 module. Start testing using UDP and 100 MBit throughput test. Replace the IP address with the address you obtained during DHCP configuration. // On Target root@elin-w160-evk:~# iperf -c 192.168.1.1 -u -i 1 -b 100M -----------------------------------------------------------Client connecting to 192.168.1.1, UDP port 5001 Sending 1470 byte datagrams UDP buffer size:
160 KByte (default)
-----------------------------------------------------------[
3] local 192.168.1.146 port 40375 connected with 192.168.1.1 port 5001
[ ID] Interval [ 3] 0.0- 1.0 sec
Transfer 11.5 MBytes
Bandwidth 96.5 Mbits/sec
[
3]
1.0- 2.0 sec
11.4 MBytes
95.7 Mbits/sec
[
3]
2.0- 3.0 sec
11.4 MBytes
95.5 Mbits/sec
[
3]
3.0- 4.0 sec
11.4 MBytes
96.0 Mbits/sec
[
3]
4.0- 5.0 sec
11.4 MBytes
95.6 Mbits/sec
[ [
3] 3]
5.0- 6.0 sec 6.0- 7.0 sec
11.4 MBytes 11.4 MBytes
95.5 Mbits/sec 96.0 Mbits/sec
[
3]
7.0- 8.0 sec
11.4 MBytes
95.6 Mbits/sec
[
3]
8.0- 9.0 sec
11.4 MBytes
95.6 Mbits/sec
[
3]
9.0-10.0 sec
11.4 MBytes
95.8 Mbits/sec
[ [
3] 0.0-10.0 sec 114 MBytes 3] Sent 81436 datagrams
95.7 Mbits/sec
[
3] Server Report:
[
3]
0.0-10.0 sec
[
3]
0.0-10.0 sec
UBX-15017061 - R02
114 MBytes
95.7 Mbits/sec
0.306 ms
0/81435 (0%)
1 datagrams received out-of-order
Advance Information
Getting started Page 16 of 38
EVK-W16 - User Guide
3 Yocto environment setup This section provides information on how to set up the yocto build environment and make the default factory image download to the target. For more information, refer to Yocto Quick Start Guide [4], which provides detailed information about the Yocto build system.
3.1 Install environment Ensure that you have a PC with Linux installed. This guide assumes that you have installed Debian 7.4 and your user has sudo privileges (if not, issue "sudo usermod -a -G sudo 'username'"). You should not be logged in as root. First, install the required packages for the build process: $ sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath libsdl1.2-dev xterm lzop
Clone u-blox tools repository: $ git clone https://github.com/u-blox/elin-tools Cloning into 'elin-tools'... remote: Counting objects: 37, done. remote: Total 37 (delta 0), reused 0 (delta 0), pack-reused 37 Unpacking objects: 100% (37/37), done.
UBX-15017061 - R02
Advance Information
Yocto environment setup Page 17 of 38
EVK-W16 - User Guide
For the next step, you should be a github user who has added an ssh key to your account. Refer to the help section on GitHub [6] for more information on account settings and ssh key setup. Run the following setup script that will download the required repositories and provide you with initial configuration files required by Yocto. This will download the poky, openembedded, ti and u-blox meta layers (roughly 150 MiB). On successful download, you should have a poky folder populated with the required meta layers. $ cd elin-tools/scripts $ ./ublox-poky-setup.sh Setting up poky Cloning into 'poky'... remote: Counting objects: 304080, done. remote: Compressing objects: 100% (74926/74926), done. remote: Total 304080 (delta 224033), reused 303244 (delta 223329) Receiving objects: 100% (304080/304080), 117.71 MiB | 8.86 MiB/s, done. Resolving deltas: 100% (224033/224033), done. HEAD is now at b74ea96 build-appliance-image: Update to fido head revision Setting up meta-openembedded Cloning into 'meta-openembedded'... remote: Counting objects: 54719, done. remote: Compressing objects: 100% (20271/20271), done. remote: Total 54719 (delta 32712), reused 53451 (delta 31788) Receiving objects: 100% (54719/54719), 22.84 MiB | 1.78 MiB/s, done. Resolving deltas: 100% (32712/32712), done. HEAD is now at df2f700 geoclue: add PACKAGECONFIG for geoip Setting up meta-ublox Cloning into 'meta-ublox'... remote: Counting objects: 148, done. remote: Total 148 (delta 0), reused 0 (delta 0), pack-reused 148 Receiving objects: 100% (148/148), 26.81 KiB, done. Resolving deltas: 100% (44/44), done. HEAD is now at 47dbe3a elin-eeprom-reader: fix S and QA Issue warnings Setting up meta-ublox-extras Cloning into 'meta-ublox-extras'... remote: Counting objects: 260, done. remote: Total 260 (delta 0), reused 0 (delta 0), pack-reused 260 Receiving objects: 100% (260/260), 40.71 KiB, done. Resolving deltas: 100% (100/100), done. HEAD is now at 52e11eb elin-w1-webdocumentation: update operated temperature and include type approvals for Japan
UBX-15017061 - R02
Advance Information
Yocto environment setup Page 18 of 38
EVK-W16 - User Guide Source the ublox environment script to initiate the Yocto build environment: $ cd poky/ $ source ublox-init-build-env ### Shell environment set up for builds. ### You can now run 'bitbake ' Common targets are: core-image-minimal core-image-ublox-dev meta-toolchain
Now, Yocto would have generated a build folder, relocated your shell to the build folder and populated it with a few files. / └── conf ├── bblayers.conf ├── local.conf └── templateconf.cfg
The following two files are used to configure your local build settings:
bblayers.conf is used to locate the build recipes used by bitbake during build time
local.conf is used to define local settings, target architecture, machine configuration, and many other settings. In the bblayers.conf file, you can see the paths for the different meta-layers, which bitbake requires to build the u-blox distribution. Here, add your own meta-layer if you would like to add any layers of your own. # LAYER_CONF_VERSION is increased each time build/conf/bblayers.conf # changes incompatibly LCONF_VERSION = "6" BBPATH = "${TOPDIR}" BBFILES ?= "" BBLAYERS ?= " \ /home/ublox/projects/yocto/poky/meta \ /home/ublox/projects/yocto/poky/meta-yocto \ /home/ublox/projects/yocto/poky/meta-ublox \ /home/ublox/projects/yocto/poky/meta-ublox-extras \ /home/ublox/projects/yocto/poky/meta-openembedded/meta-networking \ /home/ublox/projects/yocto/poky/meta-openembedded/meta-oe \ /home/ublox/projects/yocto/poky/meta-openembedded/meta-webserver \ " BBLAYERS_NON_REMOVABLE ?= " \ /home/ublox/projects/yocto/poky/meta \ /home/ublox/projects/yocto/poky/meta-yocto \ "
UBX-15017061 - R02
Advance Information
Yocto environment setup Page 19 of 38
EVK-W16 - User Guide The local.conf file contains local settings, such as the machine on which distro can be built. The DL_DIR variable should match the location where you want to save all your downloaded tarballs and git archives from the build process. As this information enables you to save bandwidth and time, it is better to go through the different settings and modify them, if required. The default settings are used in this document. ... ... # Where to place downloads # # During a first build the system will download many different source code tarballs # from various upstream projects. This can take a while, particularly if your network # connection is slow. These are all stored in DL_DIR. When wiping and rebuilding you # can preserve this directory to speed up this part of subsequent builds. This directory # is safe to share between multiple builds on the same machine too. # # The default is a downloads directory under TOPDIR which is the build directory. # DL_DIR := "/home/martin/projects/yocto/downloads" ... ... # Make use of SMP: # #
PARALLEL_MAKE specifies how many concurrent compiler threads are spawned per bitbake process
#
BB_NUMBER_THREADS specifies how many concurrent bitbake tasks that spawns
PARALLEL_MAKE
= "-j 3"
BB_NUMBER_THREADS = "3" ... ...
3.1.1 Build default distribution You can now start the build and refer to the Yocto Quick Start Guide agreement [4] for additional information. The build takes approximately 1 to 4 hours depending on the specifications of the compiling machine and the speed of your internet connection.
UBX-15017061 - R02
Advance Information
Yocto environment setup Page 20 of 38
EVK-W16 - User Guide
/elin-tools/scripts/poky/build$ bitbake core-image-ublox-dev Parsing recipes: 100% |#########################################| Time: 00:23:17 Parsing of 1666 .bb files complete (0 cached, 1666 parsed). 2158 targets, 96 skipped, 0 masked, 0 errors. NOTE: Resolving any missing task queue dependencies Build Configuration: BB_VERSION = "1.26.0" BUILD_SYS
= "x86_64-linux"
NATIVELSBSTRING
= "Debian-7.4"
TARGET_SYS
= "arm-poky-linux-gnueabi"
MACHINE
= "elin-w160-evk"
DISTRO DISTRO_VERSION
= "poky" = "1.8.1"
TUNE_FEATURES
= "arm armv7a vfp thumb neon callconvention-hard cortexa8"
TARGET_FPU
= "vfp-neon"
meta meta-yocto meta-ublox
= "fido:b74ea963cefffad9fbd91d4eb9b240f6a8c86cd0" = "fido:47dbe3a66a06bd321966107197c6682a1a4337a2"
meta-ublox-extras = "fido:52e11ebf56bfc4a3100284ea97d94d9aef296563" meta-python meta-networking meta-oe meta-webserver ...
= "fido:df2f700d66bace65f5d802225232d01cf511fe81"
... NOTE: Tasks Summary: Attempted 3150 tasks of which 13 didn't need to be rerun and all succeeded. Summary: There were 8 WARNING messages shown.
UBX-15017061 - R02
Advance Information
Yocto environment setup Page 21 of 38
EVK-W16 - User Guide
3.2 Download firmware to target The images generated during build are located in the build directory under tmp/deploy/images/ELIN-W16-evk/ $ ls tmp/deploy/images/ELIN-W16-evk/ core-image-ublox-dev-elin-w160-evk-20160208090855.rootfs.manifest core-image-ublox-dev-elin-w160-evk-20160208090855.rootfs.tar.bz2 core-image-ublox-dev-elin-w160-evk-20160208090855.rootfs.ubi core-image-ublox-dev-elin-w160-evk-20160208090855.rootfs.ubifs core-image-ublox-dev-elin-w160-evk.manifest core-image-ublox-dev-elin-w160-evk.tar.bz2 core-image-ublox-dev-elin-w160-evk.ubi core-image-ublox-dev-elin-w160-evk.ubifs MLO MLO-elin-w160-evk MLO-elin-w160-evk-v2013.10+gitAUTOINC+8db1ee3025-r0 modules--3.19+git0+93a3344328-r0-elin-w160-evk-20160208090855.tgz modules-elin-w160-evk.tgz README_-_DO_NOT_DELETE_FILES_IN_THIS_DIRECTORY.txt ubinize.cfg u-boot-elin-w160-evk.img u-boot-elin-w160-evk-v2013.10+gitAUTOINC+8db1ee3025-r0.img u-boot.img u-boot-spl.bin u-boot-spl-elin-w160-evk.bin u-boot-spl-elin-w160-evk-v2013.10+gitAUTOINC+8db1ee3025-r0.bin zImage zImage--3.19+git0+93a3344328-r0-am335x-elin-w160-evk-20160208090855.dtb zImage--3.19+git0+93a3344328-r0-elin-w160-evk-20160208090855.bin zImage-am335x-elin-w160-evk.dtb zImage-elin-w160-evk.bin
The above-mentioned images provide information regarding the data generated from the boot loader, kernel, device tree, and root file system. Note the time stamp suffix on the images; each build is saved with a time stamp and symlinks in the directory and always points to the latest image. The following files must either be flashed into the SD card or downloaded through USB to the NAND on the ELIN-W16: Symlink name
Symlink to latest build for
zImage
Kernel
zImage-am335x-elin-w160-evk.dtb
Device Tree
core-image-ublox-dev-elin-w160-evk.ubi
RootFS in UBI format
MLO
U-Boot (loads U-Boot to RAM from NAND)
u-boot.img
U-Boot boot loader
u-boot-spl.bin
U-Boot (load U-Boot to RAM from UART)
Table 3: List of files to be stored on ELIN NAND or SD-card
UBX-15017061 - R02
Advance Information
Yocto environment setup Page 22 of 38
EVK-W16 - User Guide
4 Factory restore If a unit is not booting properly, the device can be restored to factory settings using the procedure mentioned in section 4.1. To update the bootloader, contact u-blox support.
4.1 USB Device firmware upgrade The USB DFU standard allows downloading of the firmware through a standardized protocol over USB. To reflash the ELIN-W160 with new firmware, you can upgrade the whole system by reflashing the NAND. Reboot target and break the boot sequence when you see U-Boot. Retrieve the firmware bundle for the ELIN-W160 and unpack in the firmware folder: git clone [email protected]:u-blox/elin-w16-releases.git In the release repository, you have scripts for automating the firmware download to target. / └── elin-w16-releases/ ├── elin-w160-evk-v2.0.0.0.tar.bz2 ├── README └── utils └──elin-w16-flashload.sh
The script elin-w16-flashload.sh depends on dfu-util to be installed on the host. $ sudo apt-get install dfu-util
The scripts are matched to the firmware from u-blox EVK though it can be easily changed to match other images. Power off the module and connect the board with a USB micro into the USB0 interface on your PC and the FTDI chip to your PC. $ tar -xjvf elin-w160-evk-v2.0.0.0.tar.bz2 elin-w160-evk-v2.0.0.0/ elin-w160-evk-v2.0.0.0/u-boot-spl.bin elin-w160-evk-v2.0.0.0/core-image-ublox-dev-elin-w160-evk.manifest elin-w160-evk-v2.0.0.0/zImage-am335x-elin-w160-evk.dtb elin-w160-evk-v2.0.0.0/u-boot.img elin-w160-evk-v2.0.0.0/zImage elin-w160-evk-v2.0.0.0/core-image-ublox-dev-elin-w160-evk.ubi elin-w160-evk-v2.0.0.0/MLO elin-w160-evk-v2.0.0.0/modules-elin-w160-evk.tgz
$ cd utils
When you see the U-Boot loading, abort the boot sequence. In U-Boot prompt, clear the NAND flash to prepare for firmware upgrade. This erases the UBI erase counters and is recommended only during development or when a unit is bricked.
UBX-15017061 - R02
Advance Information
Factory restore Page 23 of 38
EVK-W16 - User Guide
U-Boot# nand erase.chip NAND erase.chip: device 0 whole chip Erasing at 0x1ffe0000 -- 100% complete. OK
To set the ELIN-W160 in DFU mode: U-Boot# dfu nand 0 using id 'nand0,0' using id 'nand0,1' using id 'nand0,2' using id 'nand0,3' using id 'nand0,4' using id 'nand0,5' using id 'nand0,6' using id 'nand0,7' using id 'nand0,8' using id 'nand0,9' using id 'nand0,10' GADGET DRIVER: usb_dnl_dfu musb-hdrc: peripheral reset irq lost!
Then on the PC, run the elin-w16-flashload.sh script: $ sudo ./elin-w16-flashload.sh all ../elin-w160-evk-v2.0.0.0 dfu-util 0.7 Copyright 2005-2008 Weston Schmidt, Harald Welte and OpenMoko Inc. Copyright 2010-2012 Tormod Volden and Stefan Schmidt This program is Free Software and has ABSOLUTELY NO WARRANTY Please report bugs to [email protected] ... ... Copying data from PC to DFU device Starting download: [##################################################] finished! state(2) = dfuIDLE, status(0) = No error condition is present Done! Resetting USB to switch back to runtime mode
On completion of the firmware download, the ELIN-W160 will reboot into your newly flashed system.
UBX-15017061 - R02
Advance Information
Factory restore Page 24 of 38
EVK-W16 - User Guide
5 Build and install package The Yocto provides a package manager, which allows for upgrade of existing programs and user space applications. While building the target images, Yocto also generates the packages that can be downloaded to the target through the package manager. The default package manager on the ELIN-W160 is OPKG package manager. You can easily setup a local package server using Apache through a few configuration steps or you can setup a NFS folder.
5.1 Package server On your development machine, install Apache2 and create repo: $ sudo apt-get install apache2
Add the following section to your apache2 configuration script in /etc/apache2/sites-available/default
Replace the path /home/username/projects/ublox-tools/yocto/poky/tmp/deploy/ipk
To match with your yocto directory Alias /ipk /home/username/projects/ublox-tools/yocto/poky/tmp/deploy/ipk Options +Indexes
On some systems, you might have to add permissions to the directory for it to be accessible. The following code grants access to the folder. See the Apache2 documentation for more information. Alias /ipk /home/username/projects/ublox-tools/yocto/poky/tmp/deploy/ipk Order Allow,Deny Allow from all Require all granted Options +Indexes
To restart apache: # service apache2 restart
Or # sudo /etc/init.d/apache2 restart
In the bitbake folder, update the package index: $ bitbake package-index
You now have a package server that contains the latest build packages from your Yocto build directory. To set up the target to sync with the server, OPKG must be configured with the server location and ipk channels. Add your PC:s USB ip address to the OPKG base feeds. # echo 'src/gz ublox http://192.168.1.1/ipk/armv7a-vfp-neon' > /etc/opkg/ublox-base.conf UBX-15017061 - R02
Advance Information
Build and install package Page 25 of 38
EVK-W16 - User Guide You can now update and recompile packages on your host machine and easily download them to your target. Update the opkg feed on the target to sync the package streams: # opkg update
5.2 Sample Python package To test the setup of the package, python is downloaded and built via build tool bitbake. In the build directory, start the build of the python-core package (the terminal must have sourced the ublox-init-build-env script!). $ bitbake python-core Loading cache: |############################################################################| ETA:
100% 00:00:00
Loaded 2159 entries from dependency cache. NOTE: Resolving any missing task queue dependencies Build Configuration: BB_VERSION
= "1.26.0"
BUILD_SYS
= "x86_64-linux"
NATIVELSBSTRING
= "Debian-7.4"
TARGET_SYS MACHINE
= "arm-poky-linux-gnueabi" = "elin-w160-evk"
DISTRO
= "poky"
DISTRO_VERSION
= "1.8.1"
TUNE_FEATURES
= "arm armv7a vfp thumb neon callconvention-hard cortexa8"
TARGET_FPU
= "vfp-neon"
meta meta-yocto
= "fido:b74ea963cefffad9fbd91d4eb9b240f6a8c86cd0"
meta-ublox
= "fido:47dbe3a66a06bd321966107197c6682a1a4337a2"
meta-ublox-extras = "fido:52e11ebf56bfc4a3100284ea97d94d9aef296563" meta-python meta-networking meta-oe meta-webserver
= "fido:df2f700d66bace65f5d802225232d01cf511fe81"
NOTE: Preparing runqueue NOTE: Executing SetScene Tasks NOTE: Executing RunQueue Tasks 0: python-2.7.3-r0.3 do_compile (pid 10561) ...
UBX-15017061 - R02
Advance Information
Build and install package Page 26 of 38
EVK-W16 - User Guide On completion, you can install python on your target. First update your package feed to get the newly compiled python package. root@ELIN-W16-evk:~# opkg update Downloading http://192.168.1.1/ipk/armv7a-vfp-neon/Packages.gz. Inflating http://192.168.1.1/ipk/armv7a-vfp-neon/Packages.gz. Updated list of available packages in /var/lib/opkg/ublox. root@ELIN-W16-evk:~# opkg install python-core Installing python-core (2.7.3-r0.3) to root... Downloading http://192.168.1.1/ipk/armv7a-vfp-neon/python-core_2.7.3-r0.3_arm. Installing python-re (2.7.3-r0.3) to root... Downloading http://192.168.1.1/ipk/armv7a-vfp-neon/python-re_2.7.3-r0.3_armv7. Installing python-core (2.7.3-r0.3) to root... Breaking cicular dependency on python-core for python-re. Installing libpython2.7-1.0 (2.7.3-r0.3) to root... Downloading http://192.168.1.1/ipk/armv7a-vfp-neon/libpython2.7-1.0_2.7.3-r0.. Installing python-lang (2.7.3-r0.3) to root... Downloading http://192.168.1.1/ipk/armv7a-vfp-neon/python-lang_2.7.3-r0.3_arm. Installing python-core (2.7.3-r0.3) to root... Breaking cicular dependency on python-core for python-re. Breaking cicular dependency on python-core for libpython2.7-1.0. Breaking cicular dependency on python-core for python-lang. Installing python-readline (2.7.3-r0.3) to root... Downloading http://192.168.1.1/ipk/armv7a-vfp-neon/python-readline_2.7.3-r0.3. Installing libncursesw5 (5.9-r15.1) to root... Downloading http://192.168.1.1/ipk/armv7a-vfp-neon/libncursesw5_5.9-r15.1_arm. Configuring python-re. Configuring libpython2.7-1.0. /sbin/ldconfig: /usr/lib/libnl.so.2 is not a symbolic link /sbin/ldconfig: /usr/lib/libnl-nf.so.2 is not a symbolic link /sbin/ldconfig: /usr/lib/libnl-route.so.2 is not a symbolic link /sbin/ldconfig: /usr/lib/libnl-genl.so.2 is not a symbolic link /sbin/ldconfig: /usr/lib/libnl-cli.so.2 is not a symbolic link Configuring python-lang. Configuring python-core. Configuring libncursesw5. /sbin/ldconfig: /usr/lib/libnl.so.2 is not a symbolic link /sbin/ldconfig: /usr/lib/libnl-nf.so.2 is not a symbolic link /sbin/ldconfig: /usr/lib/libnl-route.so.2 is not a symbolic link /sbin/ldconfig: /usr/lib/libnl-genl.so.2 is not a symbolic link /sbin/ldconfig: /usr/lib/libnl-cli.so.2 is not a symbolic link Configuring python-readline. #
Whenever you build or update a package on the host machine, you should also update the package-index. Otherwise, the new packages will not be indexed in the package feed. $ bitbake package-index
UBX-15017061 - R02
Advance Information
Build and install package Page 27 of 38
EVK-W16 - User Guide
6 Overview of Yocto meta layers The software framework on which Yocto is based on is OpenEmbedded Core and it consists of several different layers.
Figure 6: Meta layer stack on Yocto
The ELIN-W160 provides all layers up to the application layer. The dependency is resolved in the setup script provided in the ublox-tools repository. For detailed information regarding the meta-layers, see the Yocto project documentation. See the below-mentioned sections for information on how the layers relate to each other.
6.1 Developer layer At the top level, the developer may add his/her own configuration of applications and required tools to make the build match his/her requirements.
6.2 Application layer This is the layer which the applications, packages and policies for the end product are defined.
6.3 u-blox layers u-blox provides the following two layers:
meta-ublox o Hardware specific layer for mandatory packages and configuration o Do not override or modify as it might void warranty and regulatory requirements. meta-ublox-extras o Example configuration of applications and tools for running the ELIN-W16 o Provides the default interfaces
UBX-15017061 - R02
Advance Information
Overview of Yocto meta layers Page 28 of 38
EVK-W16 - User Guide
6.3.1 meta-ublox Layer meta-ublox ├── conf │
├── layer.conf
│
└── machine
│
├── elin-w160-evk.conf
│
└── include └── elin-w160.inc
│
├── COPYING.MIT ├── README ├── recipes-bsp │
├── elin-eeprom-reader
│
│
├── elin-eeprom-reader
│
│
│
│
│
└── elin-eeprom-reader_001.bb
│
├── ti-bt-firmware
│
│
│
├── ti-utils
│
│
├── ti-utils
│
│
│
│
│
└── ti-utils_001.bb
│
├── ublox-srr-firmware
│
│
│
└── u-boot
└── elin-w16-radio-params
└── ti-bt-firmware_git.bb
└── libnl3.patch
└── ublox-srr-firmware_001.bb
│
├── u-boot-fw-utils-ublox
│
│
│
│
│
├── u-boot-fw-utils-ublox_git.bb
│
└── u-boot-ublox_git.bb
└── elin-w160-evk └── fw_env.config
├── recipes-connectivity │ │
└── crda └── crda_1.1.3.bb
├── recipes-core │
└── udev
│
├── udev
│
│ └── init └── udev_182.bbappend
│
└── recipes-kernel └── linux ├── linux-ublox │ │
└── elin-w160-evk └── defconfig
├── linux-ublox_3.19.bb
└── linux-ublox.inc
UBX-15017061 - R02
Advance Information
Overview of Yocto meta layers Page 29 of 38
EVK-W16 - User Guide The meta-ublox layer contains a conf directory that holds information about the machine configuration. The machine configuration contains information about the target architecture and the supported machine features such as Bluetooth, USB, Wi-Fi, and also the supported images and file system types such as UBI tar.bz2 and so on. $ cat conf/machine/ELIN-W16-evk.conf #@TYPE: Machine #@NAME: ELIN-W160-EVK #@DESCRIPTION: Machine configuration for u-blox ELIN-W160-EVK evalutation kit require conf/machine/include/elin-w160.inc IMAGE_FSTYPES += "ubi tar.bz2" KERNEL_DEVICETREE = "am335x-elin-w160-evk.dtb" UBOOT_MACHINE = "elin-w160-evk_config" SERIAL_CONSOLE = "115200 ttyO0" MACHINE_FEATURES = "bluetooth ext2 serial usbgadget usbhost vfat wifi" MACHINE_EXTRA_RRECOMMENDS += "kernel-modules"
$ cat conf/machine/include/ELIN-W16.inc # u-blox ELIN-W160 System on Module machine configuration SOC_FAMILY = "ti33x" require conf/machine/include/soc-family.inc DEFAULTTUNE ?= "cortexa8thf-neon" require conf/machine/include/tune-cortexa8.inc PREFERRED_PROVIDER_virtual/kernel ?= "linux-ublox" PREFERRED_PROVIDER_virtual/bootloader ?= "u-boot-ublox" KERNEL_IMAGETYPE = "zImage" UBOOT_ARCH = "arm" UBOOT_MACHINE ?= "elin-w160-evk" UBOOT_ENTRYPOINT ?= "0x80008000" UBOOT_LOADADDRESS ?= "0x80008000" MKUBIFS_ARGS = "-F -m 2048 -e 124KiB -c 3488" UBINIZE_ARGS = "-m 2048 -p 128KiB" UBI_VOLNAME = "rootfs" USE_VT = "0" MACHINE_FEATURES = "bluetooth wifi" MACHINE_EXTRA_RRECOMMENDS = "crda ublox-srr-firmware elin-eeprom-reader" EXTRA_IMAGEDEPENDS += "virtual/bootloader"
The recipes-bsp layer contains hardware specific recipes for u-boot and radio configuration. The radio directories (calibrator, ti-bt-firmware, ublox-eeprom-parser) should not be altered as they are a part of the regulatory compliance. Any modification to these layers might void the u-blox warranty and breaks the regulatory requirements. The U-Boot layer can be updated but should be done with great care as it can brick your device thus requiring a factory reset.
6.3.2 meta-ublox-extras Layer The meta-ublox-extras layer contains several applications for evaluating the performance and possibilities of the ELIN-W160 platform. The conf/distro folder contains information regarding the policies for the distribution. The distribution features and the machine feature will be matched to determine the packages that will be installed. For more information, see the Yocto project documentation. UBX-15017061 - R02
Advance Information
Overview of Yocto meta layers Page 30 of 38
EVK-W16 - User Guide The following programs and packages are installed on the target: AVAHI mDNS Bluez5 + hcidump uDHCP daemon bash hostapd bridge-utilsiperf Hiawatha web server tcpdump procps ppp socat The layer also includes following configuration settings:
Network setup fstab for mounting file systems o Used by USB gadget to populate Ethernet-Over-USB and USB to Serial BusyBox config USB gadget drivers
6.3.3 Yocto, OpenEmbedded, and TI layers The Yocto, OpenEmbedded, and TI layers contain the key information on which the u-blox layers are created upon. The u-blox layers require a specific revision of the layers and are managed by the setup script.
6.4 Working with the meta layers Sometimes, it is necessary to modify or override the settings in a layer. The default way to modify the layers is by creating an override layer with a high priority. Bitbake will parse all layers specified in the bblayers.conf and resolve the dependencies and priorities.
6.4.1 Creating a new meta layer Yocto provides a script that assists in creating new meta layers. Goto the poky directory and source the ublox-init-build-env file and then start the Yocto layer setup script. Choose default priority and create an example recipe named bar. Skip creating a bbappend file. $ cd poky $ source ublox-init-build-env $ cd .. $ yocto-layer create foobar yocto-layer create foobar Please enter the layer priority you'd like to use for the layer: [default: 6] 6 Would you like to have an example recipe created? (y/n) [default: n] y Please enter the name you'd like to use for your example recipe: [default: example] bar Would you like to have an example bbappend file created? (y/n) [default: n] n New layer created in meta-foobar. Don't forget to add it to your BBLAYERS (for details see meta-foobar\README).
UBX-15017061 - R02
Advance Information
Overview of Yocto meta layers Page 31 of 38
EVK-W16 - User Guide Find below is a snapshot of the newly created folder meta-foobar: meta-foobar/ ├── conf │
└── layer.conf
├── COPYING.MIT ├── README └── recipes-example └── example ├── bar-0.1 │
├── example.patch
│
└── helloworld.c
└── bar_0.1.bb
The configuration file for the new meta layer is created by the script. The script also adds a hello_world example program and a bitbake recipe to build the program. $ cat meta-foobar/recipes-example/example/bar_0.1.bb # # This file was derived from the 'Hello World!' example recipe in the # Yocto Project Development Manual. # DESCRIPTION = "Simple helloworld application" SECTION = "examples" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" PR = "r0" SRC_URI = "file://helloworld.c" S = "${WORKDIR}" do_compile() { ${CC} helloworld.c -o helloworld } do_install() { install -d ${D}${bindir} install -m 0755 helloworld ${D}${bindir} }
UBX-15017061 - R02
Advance Information
Overview of Yocto meta layers Page 32 of 38
EVK-W16 - User Guide
$ cat meta-foobar/recipes-example/example/bar-0.1/helloworld.c #include int main(int argc, char **argv) { printf("Hello World!\n"); return 0; }
To build the new recipe, add the meta layer to the bblayers.conf: $ vi build/conf/bblayers.conf # LAYER_CONF_VERSION is increased each time build/conf/bblayers.conf # changes incompatibly LCONF_VERSION = "6" BBPATH = "${TOPDIR}" BBFILES ?= "" BBLAYERS ?= " \ /home/martin/projects/yocto/poky/meta \ /home/martin/projects/yocto/poky/meta-yocto \ /home/martin/projects/yocto/poky/meta-ti \ /home/martin/projects/yocto/poky/meta-openembedded/meta-oe \ /home/martin/projects/yocto/poky/meta-openembedded/meta-webserver \ /home/martin/projects/yocto/poky/meta-ublox \ /home/martin/projects/yocto/poky/meta-ublox-extras \ /home/martin/projects/yocto/poky/meta-foobar \
# << Add me
" BBLAYERS_NON_REMOVABLE ?= " \ /home/martin/projects/yocto/poky/meta \ /home/martin/projects/yocto/poky/meta-yocto \ "
To build the program run: $ source ublox-init-build-env $ bitbake bar
Yocto will now index the new meta layer, find the bar recipe, and build the application. It is not included in the final image though as it was not listed to be included. To add the program to the image, you need to add it to the default image.
6.4.2 Overriding or modifying a meta layer or an image To add a new application to the image, you can use overrides or modify an existing layer. If you are not the maintainer of the layer, you should use an override layer. To add the application bar from the example specified in the previous chapter, create and bbappend recipe to include the application in the final image.
UBX-15017061 - R02
Advance Information
Overview of Yocto meta layers Page 33 of 38
EVK-W16 - User Guide
$ cd meta-foobar $ mkdir -p recipes-core/image $ cd recipes-core/image $ echo 'CORE_IMAGE_EXTRA_INSTALL += "bar"' > ublox-image-dev.bbappend $ cd ../../../build $ bitbake core-image-ublox-dev Loading cache: 100% |############################################################################################| ETA: 00:00:00 Loaded 1834 entries from dependency cache. NOTE: Resolving any missing task queue dependencies Build Configuration: BB_VERSION = "1.26.0" BUILD_SYS
= "x86_64-linux"
NATIVELSBSTRING
= "Debian-7.4"
TARGET_SYS
= "arm-poky-linux-gnueabi"
MACHINE DISTRO
= "elin-w160-evk" = "poky"
DISTRO_VERSION
= "1.8.1"
TUNE_FEATURES
= "armv7a vfp thumb neon callconvention-hard cortexa8"
TARGET_FPU
= "vfp-neon"
meta meta-yocto meta-ublox
= "daisy:240da756168b58eb05300a23c8282942f913db2d" = "daisy:d69d5d53a23e57893620d2705465aaeabdc060c0"
meta-ublox-extras = "daisy:c1650f641257d9487fb5aef75f66f3f423433a3a" meta-networking meta-oe meta-webserver
= "daisy:d3d14d3fcca7fcde362cf0b31411dc4eea6d20aa"
NOTE: Preparing runqueue NOTE: Executing SetScene Tasks NOTE: Executing RunQueue Tasks NOTE: Tasks Summary: Attempted 2867 tasks of which 2863 didn't need to be rerun and all succeeded.
Bitbake should now regenerate the rootfs with the package bar installed. For more information regarding overriding settings in the meta layers, refer to the Yocto project documentation.
UBX-15017061 - R02
Advance Information
Overview of Yocto meta layers Page 34 of 38
EVK-W16 - User Guide
Appendix A Glossary Abbreviation / Term
Explanation / Definition
ACM
Abstract Control Model
CPU
Central Processing Unit
CTS
Clear To Send
DFU
Device Firmware Upgrade
DHCP
Dynamic Host Configuration Protocol
EVK
Evaluation Kit
GPIO
General-Purpose Input/Output
LED
Light-Emitting Diode
NFS
Network File System
OEM
Original equipment manufacturer
OPKG
Open PacKaGe Management
OTG
On-The-Go
PHY
Physical Layer
RAM
Random-Access Memory
RTS
Request To Send
SPP
Serial Port Profile
UART
Universal Asynchronous Receiver-Transmitter serial interface
UBI
Unsorted block images
UDP
User Datagram Protocol
USB
Universal Serial Bus
WLAN
Wireless Local Area Network
Table 4: Explanation of abbreviations used
UBX-15017061 - R02
Advance Information
Appendix Page 35 of 38
EVK-W16 - User Guide
B Policies and configuration Interface/Service
Package/Policy
Comment
Console
UART0
115200 8N1, via FTDI chip
Shell
ash
Device Manager
udev
Logging daemon
syslog
Services hiawatha web server
/etc/hiawatha/hiawatha.conf
Avahi mDNS
/etc/
uDHCP client
Bluetooth
uDHCP server
/etc/udhcpd.conf (used for USB0)
wpa_supplicant
/etc/wpa_supplicant.conf
Bluez5
/etc/init.d/bluetooth
Network interfaces eth0, DHCP eth1, DHCP wlan0, off, DHCP usb0, static ip 192.168.32.1 USB USB0 Device
USB Gadget via configfs: USB CDC/NCM (Ethernet Over USB) USB ACM (USB serial port)
USB1
Host
opkg
/etc/opkg/opkg.conf No default package feeds.
Table 5: Policies and configuration
UBX-15017061 - R02
Advance Information
Appendix Page 36 of 38
EVK-W16 - User Guide
Related documents and links [1]
ELIN-W1 System Integration Manual, Document Number UBX-15011162
[2] [3]
ELIN-W1 Data Sheet, Document Number UBX-15011161 u-blox Package Information Guide, Document Number UBX-14001652
[4]
Yocto project quick start - http://www.yoctoproject.org/docs/2.0/yocto-project-qs/yocto-projectqs.html Yocto project cookbook item that explains how to add startup scripts to a Yocto image https://wiki.yoctoproject.org/wiki/Cookbook:Appliance:Startup_Scripts
[5] [6]
Help section on GitHub - https://help.github.com/.
Revision history Revision
Date
Name
Status / Comments
R01
5-Jun-2015
mjer
Initial release.
R02
1-Mar-2016
mjer,fbro,msen, kgom
Document status updated to Advance Information. Updated the instructions. Applied u-blox word template. Updated to ELIN FW rev 2.0.0.0. Editorial updates.
UBX-15017061 - R02
Advance Information
Related documents and links Page 37 of 38
EVK-W16 - User Guide
Contact For complete contact information visit us at www.u-blox.com. u-blox Offices North, Central and South America u-blox America, Inc. Phone: E-mail:
+1 703 483 3180 [email protected]
Regional Office West Coast: Phone: +1 408 573 3640 E-mail: [email protected]
Headquarters Europe, Middle East, Africa
Asia, Australia, Pacific
u-blox AG Phone: E-mail: Support:
Phone: E-mail: Support:
+41 44 722 74 44 [email protected] [email protected]
Technical Support: Phone: E-mail:
+1 703 483 3185 [email protected]
u-blox Singapore Pte. Ltd. +65 6734 3811 [email protected] [email protected]
Regional Office Australia: Phone: +61 2 8448 2016 E-mail: [email protected] Support: [email protected] Regional Office China (Beijing): Phone: +86 10 68 133 545 E-mail: [email protected] Support: [email protected] Regional Office China (Chongqing): Phone: +86 23 6815 1588 E-mail: [email protected] Support: [email protected] Regional Office China (Shanghai): Phone: +86 21 6090 4832 E-mail: [email protected] Support: [email protected] Regional Office China (Shenzhen): Phone: +86 755 8627 1083 E-mail: [email protected] Support: [email protected] Regional Office India: Phone: +91 80 4050 9200 E-mail: [email protected] Support: [email protected] Regional Office Japan (Osaka): Phone: +81 6 6941 3660 E-mail: [email protected] Support: [email protected] Regional Office Japan (Tokyo): Phone: +81 3 5775 3850 E-mail: [email protected] Support: [email protected] Regional Office Korea: Phone: +82 2 542 0861 E-mail: [email protected] Support: [email protected] Regional Office Taiwan: Phone: +886 2 2657 1090 E-mail: [email protected] Support: [email protected]
UBX-15017061 - R02
Advance Information
Contact Page 38 of 38