Commit Graph

34 Commits

Author SHA1 Message Date
Juro Bystricky
d13bf35e1a zephyr-kernel-common.inc: also build qemus if needed
Also build qemus if a recipe is built for a MACHINE=qemuXXX.
Allow inheriting classes based on recipe context.

Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-01-30 15:12:13 -08:00
Juro Bystricky
f7f0536d96 README.txt: Updated for qemu-nios2
Also replaced all "qemux86" with "qemu-x86"

Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-01-24 09:47:33 -08:00
Juro Bystricky
04f6539b7b zephyr-kernel-test.inc: exclude tests not suitable for Nios2
Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-01-23 15:45:09 -08:00
Juro Bystricky
18d92a4e86 qemuzephyrrunner.py: support for qemu-nios2
Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-01-23 15:45:09 -08:00
Juro Bystricky
d7dcbd54bd qemu-nios2: New MACHINE
Added support for Zephyr qemu-nios2 BOARD.
Nios2 CPU is not supported natively by upstream QEMU,
so a Nios2 specific patch needs to be applied.

[YOCTO#10660]

Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-01-23 15:43:35 -08:00
Juro Bystricky
c28b4eacf9 meta-zephyr: newlib support
This patch adds newlib libraries for cortex-m3, x86, IAMCU and ARC toolchains.

[YOCTO#10662]

Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-01-19 08:35:04 -08:00
Juro Bystricky
56fbee01e8 zephyr.bbclass: support for image configuration
New class to support commands such as:

$ MACHINE=xxx bitbake yyy -c menuconfig
$ MACHINE=xxx bitbake yyy -c devshell

Kernel options are typically configured via menuconfig.
The file "prj.conf" must be edited manually, hence the need for devshell.
Once in devshell, user can use their favorite editor to edit the file.

For proper operation, these two variables need to be set in
recipes:

ZEPHYR_SRC_DIR : path to the source, typically place with prj.conf
ZEPHYR_BASE: Zephyr kernel tree location

[YOCTO#10657]

Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-01-18 12:24:49 -08:00
Juro Bystricky
159b06b6c5 gcc (ARC): removed unneeded patches
Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-01-18 11:06:51 -08:00
Juro Bystricky
e011e2b8b4 qemu-x86.conf: New MACHINE
MACHINE definition for Zephyr BOARD qemu_x86

Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-01-18 11:01:39 -08:00
Juro Bystricky
fb6b386ffc qemu-cortex-m3.conf: updated NAME/DESCRIPTION
Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-01-18 11:00:29 -08:00
Juro Bystricky
09381bd7c3 zephyr-philosophers: also deploy binary image
Deploy both binary and ELF images in order to make
it easier to flash the image on an actual board, such as Arduino-101.
(Some flashing tools require binary image)

Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-01-10 17:00:11 -08:00
Juro Bystricky
f47182e4f9 arduino-101-sss: New MACHINE
Added support for Zephyr arduino_101_sss board (ARC core).
The support requires ARC toolchain.

Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-01-10 16:57:03 -08:00
Juro Bystricky
057ad2504c meta-zephyr: Support for ARC toolchain
Added support for ARC toolchains: binutils, gcc, libgcc.
These are not upstreamed, but taken from Symantec ARC repos.

[YOCTO#10659]

Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-01-10 16:52:41 -08:00
Juro Bystricky
895c53de14 arduino-101: New MACHINE
Support for Arduino-101 board, Intel MCU CPU.
This board needs IAMCU cross-compiler.

[YOCTO#10658]

Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-01-10 16:46:21 -08:00
Juro Bystricky
7c3f7c10de meta-zephyr: Select BOARD via MACHINE
The meaning of BOARD in Zephyr environment is equivalent to MACHINE
in Yocto environment.
Specifying MACHINE will implicitly determine cross-compiler toolchain as well.

There is 1:1 correspondence between Zephyr BOARD and Yocto MACHINE so
a lookup table BOARD:MACHINE may be needed in the future, presently all
that is required is to convert "-" to "_". (Dash to undersocre)

This means that in order to support a new Zephyr board, we simply need to
create a corresponding MACHINE.conf file.

[YOCTO#10894]

Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-01-10 16:36:28 -08:00
Juro Bystricky
3a0d83fe89 zephyr-kernel: refactor common code
Several changes to simplify recipes by refactoring
common code. The code common to all Zephyr builds is
now in the file "zephyr-kernel-common.inc".

Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-01-10 16:33:23 -08:00
Juro Bystricky
dca66adbe0 qemu-cortex-m3: new MACHINE
Various changes to properly handle QEMU for Cortex M3.
This was solved by creating a new MACHINE qemu-cortex-m3.
Specifying MACHINE=qemu-cortex-m3 will select proper tuning
for the cross-compiler.

Typical usage:

    $ MACHINE=qemu-cortex-m3 bitbake zephyr-philosophers

Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-01-10 16:24:04 -08:00
Juro Bystricky
20cba15522 COPYING.MIT: Default license
Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-01-04 11:10:46 -08:00
Juro Bystricky
6d3c048750 zephyr-getchar_git: sample program
Sample program for out-of-tree Zephyr images
development.

Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-01-04 11:10:45 -08:00
Juro Bystricky
636f7c4823 zephyr-kernel-src: pack Zephyr source
This recipe obtains the Zephyr source code tree.
The idea is to use this tree for out-of-tree Zepyhyr images via
DEPENDS += "zephyr-kernel-src"

Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-01-04 11:10:45 -08:00
Juro Bystricky
c2a6b64162 zephyr-philosophers: use ZEPHYR_GCC_VARIANT="yocto"
Setting ZEPHYR_GCC_VARIANT="yocto" will result in images being
built by our own Makefile: Makefile.toolchain.yocto
The Makefile already contains LIB_INCLUDE_DIR definition, so it
can be removed from this recipe.

Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-01-04 11:10:41 -08:00
Juro Bystricky
60a43d692e zephyr-image.inc: use ZEPHYR_GCC_VARIANT="yocto"
Setting ZEPHYR_GCC_VARIANT="yocto" will result in images being
built by our own Makefile: Makefile.toolchain.yocto
The Makefile already contains LIB_INCLUDE_DIR definition, so it
can be removed from this file.

Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-01-04 11:10:41 -08:00
Juro Bystricky
d1627ac39b zephyr-kernel.inc: use own Makefile
Zephyr RTOS uses the environmental variable ZEPHYR_GCC_VARIANT to
determine which Makefile to use to build images. This allows different
Makefiles for different toolchains, so the toolchains can co-exist.
Rather than patching the included Makefile.toolchain.zephyr, we use
our own file Makefile.toolchain.yocto. This Makefile will be used as
long as Zephyr recipes set:

export ZEPHYR_GCC_VARIANT="yocto"

(Also removed some BOARD definitions)

Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-01-04 11:10:41 -08:00
Juro Bystricky
f7e9b19e1d zephyr-conf: various changes
Removed the need for "poky.conf", as a consequence
some variables previously defined via poky.conf needed to
be re-defined: TARGET_VENDOR, TCLIBCAPPEND
Moved here default BOARD definitions.
Defined DISTRO_VERSION.

Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-01-04 11:10:40 -08:00
Juro Bystricky
274d4bce79 README.txt: initial version
[YOCTO#10655]

Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-01-04 11:10:37 -08:00
Juro Bystricky
385380fc2c zephyr-philosophers: cleanup
Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-01-04 11:10:36 -08:00
Juro Bystricky
404a9d50a4 zephyr-image.inc: cleanup
Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-01-04 11:10:31 -08:00
Juro Bystricky
4cefaa1b01 zephyr-kernel-inc: add default BOARD definitions
Specify default BOARDs for x86 and ARM.

Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-01-04 11:10:31 -08:00
Juro Bystricky
3daa59f4da zephyrtest.bbclass: do not prepend 'test_'
Do not prepend 'test' to test programs.
(Don't assume all test programs names begin with 'test_')

Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-01-04 11:10:30 -08:00
Juro Bystricky
d6298aac6b zephyr-kernel-test.inc: remove some ARM tests
Remove tests that fail because QEMU for ARM does not emulate
CortexM3 BASEPRI register functionality.

Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-01-04 11:10:30 -08:00
Juro Bystricky
2c8ff3342f zephyr-kernel-test-all.bb: modify LICENSE
Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-01-04 11:10:27 -08:00
Juro Bystricky
1e2da74cf0 meta-zephyr: add support for cortexm3 toolchain
Cortex-M3 is not supported natively by oe-embedded, so we need to
do it here. With these changes it should be possible to run:

To build all Zephyr tests:
    $ MACHINE=qemuarm bitbake zephyr-kernel-test-all
    $ MACHINE=qemuarm bitbake zephyr-kernel-test-all -ctestimage

To build "philosophers" sample:
    $ MACHINE=qemuarm bitbake zephyr-philosophers

Once built, you can run the created "philosophers" image in qemu
(at this point the various paths have to be entered manually):

    $ ./tmp/sysroots/x86_64-linux/usr/bin/qemu-system-arm \
          -kernel ./tmp/deploy/images/qemuarm/philosophers.elf \
          -cpu cortex-m3 -machine lm3s6965evb -nographic -vga none

Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-01-04 11:10:26 -08:00
Juro Bystricky
97643716c2 meta-zephyr: basic upgrade
Numerous changes to allow building and running various
Zephyr tests using Zephyr release 1.6 and Yocto master distro
(commit 3676601335b4673e3572d5a9987a351f0bb44bcb and later)
Work in progress.

Notable changes:
1. Zephyr 1.6 does not support the concept of nano and micro kernel
   anymore.
2. Location of various tests have changed
3. Changes due to subtle python3/python2 differences
4. Zephyr Makefile changes (including renaming)
5. Improved failed test detection
6. Remove patch files no longer needed

With these changes, it is now possible to run Zephyr test suite and
Zephyr sample programs. Currently only x86 CPUs are supported, with
additional CPU support coming in the near future, in particular
support for ARM Cortex-M3 CPUs

Prerequisites:
Modify local conf by adding:
DISTRO="zephyr"
MACHINE?="qemux86"

Modify bblayers.conf by adding "meta-zephyr" to BBLAYERS

To build all Zephyr tests:
    $ bitbake zephyr-kernel-test-all

To test all built test images:
    $ bitbake zephyr-kernel-test-all -ctestimage

You can also build and test an individual test. This is done by appending
the actual test name to the "zephyr-kernel-test", for example:

    $ bitbake zephyr-kernel-test-test_sleep
    $ bitbake zephyr-kernel-test-test_sleep -ctestimage

It is also possible to build Zephyr sample programs. Included is a sample recipe
that builds the Zephyr "philosophers" sample:

    $ bitbake zephyr-philosophers

Once built, you can run the created "philosophers" image in qemu (at this point
the various paths have to be entered manually):

    $  ./tmp/sysroots/x86_64-linux/usr/bin/qemu-system-i386 \
         -kernel ./tmp/deploy/images/qemux86/philosophers.elf \
         -nographic -machine type=pc-0.14 -display none -clock dynticks \
         -no-acpi -balloon none

Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-01-04 11:10:25 -08:00
Randy Witt
7a8d7eb97e Create the meta-zephyr layer with empty SRC_URI
Initial commit: original work by Randy Witt and Richard Purdie.

Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-01-04 11:09:57 -08:00