Zephyr

abraham@aarcemor-desk:~/zephyr-project$ ls
arch    drivers  Kbuild          kernel   MAINTAINERS   misc     scripts
boards  ext      Kconfig         lib      Makefile      net      tests
doc     include  Kconfig.zephyr  LICENSE  Makefile.inc  samples  zephyr-env.sh
abraham@aarcemor-desk:~/zephyr-project$

Environment Setup

abraham@aarcemor-desk:~/zephyr-project$ nano zephyr-env.sh 
abraham@aarcemor-desk:~/zephyr-project$ echo $ZEPHYR_BASE
/home/abraham/zephyr-project
abraham@aarcemor-desk:~/zephyr-project$ export ZEPHYR_GCC_VARIANT=zephyr
abraham@aarcemor-desk:~/zephyr-project$ export ZEPHYR_SDK_INSTALL_DIR=/opt/zephyr-sdk
abraham@aarcemor-desk:~/zephyr-project$ export SOLETTA_BASE_DIR=/home/abraham/soletta
abraham@aarcemor-desk:~/zephyr-project$
export ZEPHYR_GCC_VARIANT=zephyr
export ZEPHYR_SDK_INSTALL_DIR=/opt/zephyr-sdk
SOLETTA_BASE_DIR=/home/abraham/soletta

Hello Soletta Base Code

abraham@aarcemor-desk:~/zephyr-project$ ls
arch     ext      Kconfig.zephyr  MAINTAINERS   net      tests
boards   include  kernel          Makefile      samples  zephyr-env.sh
doc      Kbuild   lib             Makefile.inc  scripts
drivers  Kconfig  LICENSE         misc          soletta
abraham@aarcemor-desk:~/zephyr-project$ cd samples/hello_world/microkernel/
abraham@aarcemor-desk:~/zephyr-project/samples/hello_world/microkernel$ make distclean
make[1]: Entering directory `/home/abraham/zephyr-project'
make[2]: Entering directory `/home/abraham/zephyr-project/samples/hello_world/microkernel/outdir'
make[2]: Leaving directory `/home/abraham/zephyr-project/samples/hello_world/microkernel/outdir'
make[1]: Leaving directory `/home/abraham/zephyr-project'
abraham@aarcemor-desk:~/zephyr-project/samples/hello_world/microkernel$
abraham@aarcemor-desk:~/zephyr-project/samples/hello_world/microkernel$ cd ../..abraham@aarcemor-desk:~/zephyr-project/samples$ cp -r hello_world/microkernel/ soletta
abraham@aarcemor-desk:~/zephyr-project/samples$ cd soletta/
abraham@aarcemor-desk:~/zephyr-project/samples/soletta$ ls
Makefile  outdir  prj.conf  prj.mdef  README.txt  src

Makefile

abraham@aarcemor-desk:~/zephyr-project/samples/soletta$ cat Makefile
MDEF_FILE = prj.mdef
KERNEL_TYPE = micro
BOARD ?= qemu_x86
CONF_FILE = prj.conf

include ${ZEPHYR_BASE}/Makefile.inc
abraham@aarcemor-desk:~/zephyr-project$ echo > Makefile
abraham@aarcemor-desk:~/zephyr-project$ nano Makefile
check_vars := $(and $(SOLETTA_BASE_DIR),$(ZEPHYR_BASE),$(ZEPHYR_GCC_VARIANT),$(ZEPHYR_SDK_INSTALL_DIR))
vars_missing := $(if $(check_vars),"","yes")

define NL


endef

ifeq ("yes",$(vars_missing))
$(error $(NL)        Missing environment variables.$(NL)        The Zephyr build requires the following variables to be set:$(NL)$(NL)        ZEPHYR_BASE: Should point to the top Zephyr source directories.$(NL)        ZEPHYR_GCC_VARIANT: The toolchain to use to build Zephyr.$(NL)        ZEPHYR_SDK_INSTALL_DIR: The path where the Zephyr SDK is installed.$(NL)        SOLETTA_BASE_DIR: The path to source of Soletta.$(NL))
endif

KERNEL_TYPE ?= micro
BOARD ?= qemu_x86
MDEF_FILE := prj.mdef

ifneq (,$(realpath $(PWD)/prj_$(BOARD).conf))
CONF_FILE := prj_$(BOARD).conf
else
ifneq (,$(realpath $(PWD)/prj.conf))
CONF_FILE := prj.conf
endif
endif

SOLETTA_CONF = $(realpath $(PWD)/sol_$(BOARD).conf)
ifeq (,$(SOLETTA_CONF))
SOLETTA_CONF = $(realpath $(PWD)/sol.conf)
endif

ifneq (,$(wildcard $(SOLETTA_CONF)))
    export SOLETTA_CONF
endif

include $(ZEPHYR_BASE)/Makefile.inc
abraham@aarcemor-desk:~/zephyr-project/samples/soletta$ make
Using /home/abraham/zephyr-project/boards/qemu_x86/qemu_x86_defconfig as base
Merging /home/abraham/zephyr-project/kernel/configs/micro.config
Merging prj.conf
#
# configuration written to .config
#
make[1]: Entering directory `/home/abraham/zephyr-project'
make[2]: Entering directory `/home/abraham/zephyr-project/samples/soletta/outdir'
  GEN     ./Makefile
scripts/kconfig/conf --silentoldconfig Kconfig
make[2]: Leaving directory `/home/abraham/zephyr-project/samples/soletta/outdir'
make[2]: Entering directory `/home/abraham/zephyr-project/samples/soletta/outdir'
  Using /home/abraham/zephyr-project as source for kernel
  GEN     ./Makefile
  CHK     include/generated/version.h
  UPD     include/generated/version.h
  HOSTCC  scripts/gen_idt/gen_idt.o
  HOSTLD  scripts/gen_idt/gen_idt
  CHK     misc/generated/configs.c
  UPD     misc/generated/configs.c
  CHK     include/generated/offsets.h
  UPD     include/generated/offsets.h
  CHK     misc/generated/sysgen/prj.mdef
  UPD     misc/generated/sysgen/prj.mdef
  LD      lib/libc/minimal/source/stdlib/built-in.o
  CC      lib/libc/minimal/source/stdout/fprintf.o
  CC      lib/libc/minimal/source/stdout/prf.o
  CC      lib/libc/minimal/source/stdout/sprintf.o
  CC      lib/libc/minimal/source/stdout/stdout_console.o
  LD      lib/libc/minimal/source/stdout/built-in.o
  CC      lib/libc/minimal/source/string/string.o
  LD      lib/libc/minimal/source/string/built-in.o
  LD      lib/libc/minimal/source/built-in.o
  LD      lib/libc/minimal/built-in.o
  LD      lib/libc/built-in.o
  LD      lib/built-in.o
  CC      kernel/microkernel/k_task.o
  CC      kernel/microkernel/k_idle.o
  CC      kernel/microkernel/k_init.o
  CC      kernel/microkernel/k_command_packet.o
  CC      kernel/microkernel/k_move_data.o
  CC      kernel/microkernel/k_ticker.o
  CC      kernel/microkernel/k_memory_map.o
  CC      kernel/microkernel/k_memory_pool.o
  CC      kernel/microkernel/k_irq.o
  CC      kernel/microkernel/k_nop.o
  CC      kernel/microkernel/k_offload.o
  CC      kernel/microkernel/k_event.o
  CC      kernel/microkernel/k_mailbox.o
  CC      kernel/microkernel/k_mutex.o
  CC      kernel/microkernel/k_fifo.o
  CC      kernel/microkernel/k_semaphore.o
  CC      kernel/microkernel/k_timer.o
  CC      kernel/microkernel/k_pipe_buffer.o
  CC      kernel/microkernel/k_pipe.o
  CC      kernel/microkernel/k_pipe_get.o
  CC      kernel/microkernel/k_pipe_put.o
  CC      kernel/microkernel/k_pipe_util.o
  CC      kernel/microkernel/k_pipe_xfer.o
  CC      kernel/microkernel/k_nano.o
  CC      kernel/microkernel/k_server.o
  LD      kernel/microkernel/built-in.o
  CC      kernel/nanokernel/nano_fiber.o
  CC      kernel/nanokernel/nano_lifo.o
  CC      kernel/nanokernel/nano_fifo.o
  CC      kernel/nanokernel/nano_stack.o
  CC      kernel/nanokernel/nano_sys_clock.o
  CC      kernel/nanokernel/nano_context.o
  CC      kernel/nanokernel/nano_init.o
  CC      kernel/nanokernel/nano_sema.o
  CC      kernel/nanokernel/version.o
  CC      kernel/nanokernel/device.o
  CC      kernel/nanokernel/errno.o
  LD      kernel/nanokernel/built-in.o
  LD      kernel/built-in.o
  CC      misc/printk.o
  LD      misc/debug/built-in.o
  CC      misc/generated/configs.o
  CC      misc/generated/sysgen/kernel_main.o
  LD      misc/generated/sysgen/built-in.o
  LD      misc/generated/built-in.o
  LD      misc/built-in.o
  LD      net/built-in.o
  CC      boards/qemu_x86/board.o
  LD      boards/qemu_x86/built-in.o
  LD      boards/built-in.o
  AS      arch/x86/core/i386_sysV_abi/intstub.o
  AS      arch/x86/core/i386_sysV_abi/swap.o
  CC      arch/x86/core/i386_sysV_abi/thread.o
  LD      arch/x86/core/i386_sysV_abi/built-in.o
  CC      arch/x86/core/fatal.o
  CC      arch/x86/core/cpuhalt.o
  CC      arch/x86/core/msr.o
  CC      arch/x86/core/dynamic.o
  CC      arch/x86/core/intconnect.o
  CC      arch/x86/core/excconnect.o
  CC      arch/x86/core/sys_fatal_error_handler.o
  AS      arch/x86/core/crt0.o
  CC      arch/x86/core/atomic.o
  AS      arch/x86/core/cache_s.o
  CC      arch/x86/core/cache.o
  AS      arch/x86/core/excstub.o
  CC      arch/x86/core/strtask.o
  LD      arch/x86/core/built-in.o
  CC      arch/x86/soc/ia32/soc.o
  LD      arch/x86/soc/ia32/built-in.o
  LD      arch/x86/built-in.o
  LD      arch/built-in.o
  LD      ext/hal/built-in.o
  LD      ext/lib/crypto/built-in.o
  LD      ext/lib/built-in.o
  LD      ext/built-in.o
  CC      drivers/console/uart_console.o
  LD      drivers/console/built-in.o
  CC      drivers/interrupt_controller/i8259.o
  CC      drivers/interrupt_controller/system_apic.o
  CC      drivers/interrupt_controller/loapic_intr.o
  CC      drivers/interrupt_controller/ioapic_intr.o
  LD      drivers/interrupt_controller/built-in.o
  LD      drivers/random/built-in.o
  CC      drivers/serial/uart_ns16550.o
  LD      drivers/serial/built-in.o
  CC      drivers/timer/hpet.o
  CC      drivers/timer/sys_clock_init.o
  LD      drivers/timer/built-in.o
  LD      drivers/built-in.o
  CC      samples/soletta/src/main.o
  LD      samples/soletta/src/built-in.o
  LINK    zephyr.lnk
  SIDT    staticIdt.o
  LINK    zephyr.elf
  BIN     zephyr.bin
make[2]: Leaving directory `/home/abraham/zephyr-project/samples/soletta/outdir'
make[1]: Leaving directory `/home/abraham/zephyr-project'
abraham@aarcemor-desk:~/zephyr-project/samples/soletta$

prj.conf

abraham@aarcemor-desk:~/zephyr-project/samples/soletta$ cat prj.conf 
CONFIG_STDOUT_CONSOLE=y
abraham@aarcemor-desk:~/zephyr-project/samples/soletta$
abraham@aarcemor-desk:~/zephyr-project/samples/soletta$ nano prj.conf
CONFIG_STDOUT_CONSOLE=y
CONFIG_NEWLIB_LIBC=y
CONFIG_MAIN_STACK_SIZE=256
abraham@aarcemor-desk:~/zephyr-project/samples/soletta$ make BOARD=qemu_x86
Using /home/abraham/zephyr-project/boards/qemu_x86/qemu_x86_defconfig as base
Merging /home/abraham/zephyr-project/kernel/configs/micro.config
Merging prj.conf
#
# configuration written to .config
#
make[1]: Entering directory `/home/abraham/zephyr-project'
make[2]: Entering directory `/home/abraham/zephyr-project/samples/soletta/outdir'
  GEN     ./Makefile
scripts/kconfig/conf --silentoldconfig Kconfig
make[2]: Leaving directory `/home/abraham/zephyr-project/samples/soletta/outdir'
make[2]: Entering directory `/home/abraham/zephyr-project/samples/soletta/outdir'
  Using /home/abraham/zephyr-project as source for kernel
  GEN     ./Makefile
  CHK     include/generated/version.h
  CHK     misc/generated/configs.c
  UPD     misc/generated/configs.c
  CHK     include/generated/offsets.h
  CHK     misc/generated/sysgen/prj.mdef
  CC      kernel/nanokernel/nano_init.o
  LD      kernel/nanokernel/built-in.o
  LD      kernel/built-in.o
  CC      misc/generated/configs.o
  CC      misc/generated/sysgen/kernel_main.o
  LD      misc/generated/sysgen/built-in.o
  LD      misc/generated/built-in.o
  LD      misc/built-in.o
  LINK    zephyr.lnk
  SIDT    staticIdt.o
  LINK    zephyr.elf
  BIN     zephyr.bin
make[2]: Leaving directory `/home/abraham/zephyr-project/samples/soletta/outdir'
make[1]: Leaving directory `/home/abraham/zephyr-project'
abraham@aarcemor-desk:~/zephyr-project/samples/soletta$

Makefile.app

abraham@aarcemor-desk:~/zephyr-project/samples/soletta$ nano Makefile.app

Makefile.soletta

abraham@aarcemor-desk:~/zephyr-project/samples/soletta$ nano Makefile.soletta

sol.conf

abraham@aarcemor-desk:~/zephyr-project/samples/soletta$ nano sol.conf

Application

abraham@aarcemor-desk:~/soletta/src/samples$ ls
bluetooth  common  design_patterns  http     mqtt     nodejs
coap       crypto  flow             mavlink  network
abraham@aarcemor-desk:~/soletta/src/samples$ cd mqtt/
abraham@aarcemor-desk:~/soletta/src/samples/mqtt$ ls
Kconfig  Makefile  mqtt-publish.c  mqtt-subscribe.c
abraham@aarcemor-desk:~/soletta/src/samples/mqtt$ cp * ~/zephyr-project/samples/soletta/src/
abraham@aarcemor-desk:~/soletta/src/samples/mqtt$
abraham@aarcemor-desk:~/zephyr-project/samples/soletta/src$ ls
Kconfig  Makefile  mqtt-publish.c  mqtt-subscribe.c
abraham@aarcemor-desk:~/zephyr-project/samples/soletta/src$

Errors

#error " not supported"

make distclean your Zephyr Base Code

abraham@aarcemor-desk:~/zephyr-project/samples/soletta$ make
make[1]: Entering directory `/home/abraham/zephyr-project'
make[2]: Entering directory `/home/abraham/zephyr-project/samples/soletta/outdir'
  Using /home/abraham/zephyr-project as source for kernel
  GEN     ./Makefile
  CHK     include/generated/version.h
make -C /home/abraham/soletta CFLAGS="-c -g -std=c99 -fno-asynchronous-unwind-tables -Wall -Wno-format-zero-length -Wno-main -ffreestanding -Os -fno-stack-protector -fno-omit-frame-pointer  -ffunction-sections -fdata-sections -mpreferred-stack-boundary=2 -mno-sse -march=lakemont -mtune=lakemont -msoft-float -miamcu  -Wno-unused-but-set-variable -fno-reorder-functions -fno-defer-pop -Wno-pointer-sign -fno-strict-overflow -Werror=implicit-int  -DKERNEL  -I/home/abraham/zephyr-project/arch/x86/include -I/home/abraham/zephyr-project/arch/x86/soc/quark_se -I/home/abraham/zephyr-project/boards/arduino_101  -I/home/abraham/zephyr-project/include -I/home/abraham/zephyr-project/include -I/home/abraham/zephyr-project/samples/soletta/outdir/include/generated -I/home/abraham/zephyr-project/samples/soletta/outdir/misc/generated/sysgen -include /home/abraham/zephyr-project/samples/soletta/outdir/include/generated/autoconf.h  -I/home/abraham/soletta/build/soletta_sysroot/usr/include/soletta -I/opt/zephyr-sdk/sysroots/iamcu-poky-elfiamcu/usr/i586-default-elfiamcu/include -Wno-missing-include-dirs" LDFLAGS="-nostartfiles -nodefaultlibs -nostdlib -static -L /opt/zephyr-sdk/sysroots/iamcu-poky-elfiamcu/usr/lib/i586-poky-elfiamcu/5.2.1 -L /opt/zephyr-sdk/sysroots/iamcu-poky-elfiamcu/usr/i586-default-elfiamcu/lib/" alldefconfig
make[4]: Entering directory `/home/abraham/soletta'
tools/kconfig/conf  --alldefconfig Kconfig
#
# configuration written to .config
#
make[4]: Leaving directory `/home/abraham/soletta'
(cd /home/abraham/soletta; tools/kconfig/merge_config.sh .config /home/abraham/zephyr-project/samples/soletta/sol.conf)
Using .config as base
Merging /home/abraham/zephyr-project/samples/soletta/sol.conf
make[4]: Entering directory `/home/abraham/soletta'
tools/kconfig/conf  --alldefconfig Kconfig
./.tmp.config.gxjkREoh8c:417:warning: override: reassigning to symbol FLOW_NODE_TYPE_GROVE
./.tmp.config.gxjkREoh8c:418:warning: override: reassigning to symbol FLOW_NODE_TYPE_GYROSCOPE
./.tmp.config.gxjkREoh8c:419:warning: override: reassigning to symbol FLOW_NODE_TYPE_JSON
./.tmp.config.gxjkREoh8c:420:warning: override: reassigning to symbol FLOW_NODE_TYPE_LED_7SEG
./.tmp.config.gxjkREoh8c:421:warning: override: reassigning to symbol FLOW_NODE_TYPE_LED_STRIP
./.tmp.config.gxjkREoh8c:422:warning: override: reassigning to symbol FLOW_NODE_TYPE_MAGNETOMETER
#
# configuration written to .config
#
make[4]: Leaving directory `/home/abraham/soletta'
make -C /home/abraham/soletta CFLAGS="-c -g -std=c99 -fno-asynchronous-unwind-tables -Wall -Wno-format-zero-length -Wno-main -ffreestanding -Os -fno-stack-protector -fno-omit-frame-pointer  -ffunction-sections -fdata-sections -mpreferred-stack-boundary=2 -mno-sse -march=lakemont -mtune=lakemont -msoft-float -miamcu  -Wno-unused-but-set-variable -fno-reorder-functions -fno-defer-pop -Wno-pointer-sign -fno-strict-overflow -Werror=implicit-int  -DKERNEL  -I/home/abraham/zephyr-project/arch/x86/include -I/home/abraham/zephyr-project/arch/x86/soc/quark_se -I/home/abraham/zephyr-project/boards/arduino_101  -I/home/abraham/zephyr-project/include -I/home/abraham/zephyr-project/include -I/home/abraham/zephyr-project/samples/soletta/outdir/include/generated -I/home/abraham/zephyr-project/samples/soletta/outdir/misc/generated/sysgen -include /home/abraham/zephyr-project/samples/soletta/outdir/include/generated/autoconf.h  -I/home/abraham/soletta/build/soletta_sysroot/usr/include/soletta -I/opt/zephyr-sdk/sysroots/iamcu-poky-elfiamcu/usr/i586-default-elfiamcu/include -Wno-missing-include-dirs" LDFLAGS="-nostartfiles -nodefaultlibs -nostdlib -static -L /opt/zephyr-sdk/sysroots/iamcu-poky-elfiamcu/usr/lib/i586-poky-elfiamcu/5.2.1 -L /opt/zephyr-sdk/sysroots/iamcu-poky-elfiamcu/usr/i586-default-elfiamcu/lib/"
make[4]: Entering directory `/home/abraham/soletta'
     GEN   build/soletta_sysroot/usr/include/soletta/sol-flow-buildopts.h
     GEN   build/soletta_sysroot/usr/include/soletta/sol-common-buildopts.h
     GEN   build/stage/lib/common/sol-platform-linux-micro-builtins-gen.h
     GEN   build/stage/lib/common/sol-pin-mux-builtins-gen.h
     GEN   build/stage/lib/common/sol-update-builtins-gen.h
     GEN   build/stage/lib/flow/sol-flow-builtins-gen.h
     GEN   build/stage/lib/flow/sol-flow-metatype-builtins-gen.h
     GEN   include/generated/sol_config.h
In file included from /opt/zephyr-sdk/sysroots/iamcu-poky-elfiamcu/usr/i586-default-elfiamcu/include/dirent.h:6:0,
                 from ./build/soletta_sysroot/usr/include/soletta/sol-util-file.h:24,
                 from ./src/lib/common/sol-util-internal.h:38,
                 from ./src/shared/sol-lib-loader.c:27:
/opt/zephyr-sdk/sysroots/iamcu-poky-elfiamcu/usr/i586-default-elfiamcu/include/sys/dirent.h:10:2: error: #error "<dirent.h> not supported"
 #error "<dirent.h> not supported"
  ^
In file included from /opt/zephyr-sdk/sysroots/iamcu-poky-elfiamcu/usr/i586-default-elfiamcu/include/dirent.h:6:0,
                 from ./build/soletta_sysroot/usr/include/soletta/sol-util-file.h:24,
                 from ./src/lib/common/sol-util-internal.h:38,
                 from ./src/shared/sol-conffile.c:33:
/opt/zephyr-sdk/sysroots/iamc

u-poky-elfiamcu/usr/i586-default-elfiamcu/include/sys/dirent.h:10:2: error: #error "<dirent.h> not supported"
 #error "<dirent.h> not supported"
  ^
In file included from /opt/zephyr-sdk/sysroots/iamcu-poky-elfiamcu/usr/i586-default-elfiamcu/include/dirent.h:6:0,
                 from ./build/soletta_sysroot/usr/include/soletta/sol-util-file.h:24,
                 from ./src/lib/common/sol-util-internal.h:38,
                 from ./src/shared/sol-fbp-internal-log.c:25:

fatal error: sysgen.h: No such file or directory

When selecting KERNEL_TYPE ?= micro Change to nano

      CC   build/stage/lib/io/sol-memmap-storage.o
      CC   build/stage/lib/io/sol-memmap-storage-impl-zephyr.o
In file included from ./src/lib/io/sol-memmap-storage-impl-zephyr.c:19:0:
/home/abraham/zephyr-project/include/zephyr.h:22:20: fatal error: sysgen.h: No such file or directory
compilation terminated.
make[4]: *** [build/stage/lib/io/sol-memmap-storage-impl-zephyr.o] Error 1
make[4]: Leaving directory `/home/abraham/soletta'
make[3]: *** [all] Error 2
make[2]: *** [/home/abraham/soletta/build/soletta_sysroot/usr/lib/libsoletta.a] Error 2
make[2]: Leaving directory `/home/abraham/zephyr-project/samples/soletta/outdir'
make[1]: *** [sub-make] Error 2
make[1]: Leaving directory `/home/abraham/zephyr-project'
make: *** [all] Error 2
abraham@aarcemor-desk:~/zephyr-project/samples/soletta$

No rule to make target `ipm/ipm_quark_se.h'

CC   build/stage/lib/io/sol-memmap-storage.o
      CC   build/stage/lib/io/sol-memmap-storage-impl-zephyr.o
make[4]: *** No rule to make target `ipm/ipm_quark_se.h', needed by `build/stage/lib/io/sol-ipm.o'.  Stop.
make[4]: Leaving directory `/home/abraham/soletta'
make[3]: *** [all] Error 2
make[2]: *** [/home/abraham/soletta/build/soletta_sysroot/usr/lib/libsoletta.a] Error 2
make[2]: Leaving directory `/home/abraham/zephyr-project/samples/soletta/outdir'
make[1]: *** [sub-make] Error 2
make[1]: Leaving directory `/home/abraham/zephyr-project'
make: *** [all] Error 2

Last updated