Como instalar o Zephyr no Ubuntu 16.04

Zephyr instalar o Zephyr no Ubuntu
Este post faz parte da série Zephyr

Olá pessoal, eu escrevi um post sobre o Zephyr, o RTOS para IoT desenvolvido pela Linux Foundation, há alguns dias e nesse post vou mostrar como instalar esse Sistema Operacional no Linux e utilizar o simulador para rodar um hello-world.

Em um terminal do Linux, crie uma pasta que preferir, entre nela e clone o Git do projeto. No meu caso fiz tudo na raiz.

sudo apt-get install git
cd ~/ git clone https://gerrit.zephyrproject.org/r/zephyr zephyr-project

Uma pasta zephyr-project será criada nesse diretório. Verifique com o comando:

ls -la

Instale as dependências:

sudo apt-get install make gcc gcc-multilib g++ libc6-dev-i386 g++-multilib python3-ply

Depois atualize todos os pacotes utilizando o comando apt-get update:

sudo apt-get update

Entre na pasta do Zephyr e utilize o comando source:

cd zephyr-project
source zephyr-env.sh

É necessário baixar o arquivo zephyr-sdk-<version>-i686-setup.run para a arquitetura i686. Para descobrir a versão mais atual, entre neste site e veja qual é a versão que está sendo utilizada com o número mais atual.

wget https://nexus.zephyrproject.org/content/repositories/releases/org/zephyrproject/zephyr-sdk/<version>-i686/zephyr-sdk-<version>-i686-setup.run

Ou seja, para a versão 0.7.5:

wget https://nexus.zephyrproject.org/content/repositories/releases/org/zephyrproject/zephyr-sdk/0.7.5-i686/zephyr-sdk-0.7.5-i686-setup.run

Aguarde enquanto a instalação prossegue. O arquivo é grande. Tenha paciência. Você deve ver o seguinte no terminal:

Resolving nexus.zephyrproject.org (nexus.zephyrproject.org)... 199.19.213.246

Connecting to nexus.zephyrproject.org (nexus.zephyrproject.org)|199.19.213.246|:443... connected.

HTTP request sent, awaiting response... 200 OK

Length: 308466774 (294M) [application/octet-stream]

Saving to: ‘zephyr-sdk-0.7.5-i686-setup.run.1’


zephyr-sdk-0.7.5-i686-setup.run.1                           100%[===========================================================================================================================================>] 294.18M  1.37MB/s   in 2m 59s


2016-05-10 17:18:09 (1.64 MB/s) - ‘zephyr-sdk-0.7.5-i686-setup.run.1’ saved [308466774/308466774]

É necessario instalar o arquivo que acabou de baixar. Altere primeiramente as permissões:

sudo chmod 755 zephyr-sdk-<version>-i686-setup.run

Ou seja, para a versão 0.7.5:

sudo chmod 755 zephyr-sdk-0.7.5-i686-setup.run

E então instale:

sudo ./zephyr-sdk-<version>-i686-setup.run

Ou seja, para a versão 0.7.5:

sudo ./zephyr-sdk-0.7.5-i686-setup.run

Durante a instalação, vai pedir o diretório em qual deseja instalar, por padrão deixe vazio, O local da instalação sera /opt/zephyr-sdk/ (guarde esse local).

Você deve ver o seguinte no terminal:

Creating directory /opt/zephyr-sdk

Success

[*] Installing x86 tools...

[*] Installing arm tools...

[*] Installing arc tools...

[*] Installing iamcu tools...

[*] Installing mips tools...

[*] Installing additional host tools...

Success installing SDK. SDK is ready to be used.

Exporte as variáveis para que o build system do zephyr consiga encontrá-las. Para isso, digite no terminal:

export  ZEPHYR_GCC_VARIANT=zephyr
export  ZEPHYR_SDK_INSTALL_DIR=/opt/zephyr-sdk
export  ZEPHYR_BASE=<diretorio onde esta a pasta que voce clonou>

Para esse projeto:

export  ZEPHYR_GCC_VARIANT=zephyr
export  ZEPHYR_SDK_INSTALL_DIR=/opt/zephyr-sdk
export  ZEPHYR_BASE=~/zephyr-project/

Opcionalmente você pode executar o seguinte comando para que consiga usar o Zephyr em futuras sessões sem ter que repetir os passos de exportação:

cat  <<EOF>  ~/.profile
export  ZEPHYR_GCC_VARIANT=zephyr
export  ZEPHYR_SDK_INSTALL_DIR=/opt/zephyr-sdk
export  ZEPHYR_BASE=<diretorio onde esta a pasta que voce clonou>
EOF

Para esse projeto:

cat  <<EOF>  ~/.profile
export  ZEPHYR_GCC_VARIANT=zephyr
export  ZEPHYR_SDK_INSTALL_DIR=/opt/zephyr-sdk
export  ZEPHYR_BASE=~/zephyr-project/
EOF

Para verificar o conteúdo desse arquivo, ~/.profile, pode-se acessa-lo via gedit, por exemplo:

gedit ~/.profile

Uma vez instalado, você já pode navegar pelos samples e testar aplicações no simulador, para tal acesse de dentro da pasta do zephyr.

Para a versão 0.7.5, entre na pasta:

cd samples/hello_wolrd/microkernel

Para rodar o hello word não é necessário alterar nada, dentro da mesma pasta corrente. Vamos compilar e rodar nosso primeiro hello wolrd:

make BOARD=qemu_x86 qemu

Ou simplesmente:

make qemu

E você deve ter algo assim no terminal:

Instalar o Zephyr no Ubuntu: Hello World no QEMU com zephyr
Using /home/thiago/zephyr-project//boards/qemu_x86/qemu_x86_defconfig as base
Merging /home/thiago/zephyr-project//kernel/configs/micro.config
Merging prj.conf
#
# configuration written to .config
#
make[1]: Entering directory '/home/thiago/zephyr-project'
make[2]: Entering directory '/home/thiago/zephyr-project/samples/hello_world/microkernel/outdir'
 GEN     ./Makefile
scripts/kconfig/conf --silentoldconfig Kconfig
 Using /home/thiago/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
 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/hello_world/microkernel/src/main.o
 LD      samples/hello_world/microkernel/src/built-in.o
 LINK    zephyr.lnk
 SIDT    staticIdt.o
 LINK    zephyr.elf
 BIN     zephyr.bin
To exit from QEMU enter: 'CTRL+a, x'
[QEMU] CPU: qemu32
Hello World!

Para sair dessa tela, pressione CTRL+a e x.

Opcionalmente podemos brincar no menuconfig para  configurar o kernel, para tal execute:

make menuconfig

Teremos algo assim:

Instalar o Zephyr no Ubuntu: Menuconfig do zephyr

Para sair, navegue até a opção Exit.

Simples não? Agora podemos começar a desenvolver aplicações com esse poderoso RTOS.

Esse texto teve a contribuição de Thiago Lima.

Zephyr

Zephyr, o RTOS para IoT desenvolvido pela Linux Foundation Debug do kernel do Zephyr com o Eclipse IDE
Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.
Comentários:
Notificações
Notificar
2 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Rafael Dias
Rafael Dias
12/05/2016 22:05

OPAAAAAAAAAAAA!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Faltou incluir a libncurses no apt-get lah no comeco do sambado.

Sem isso, o make menuconfig nao funfa

Thiago Pinheiro Felix da Silva
Reply to  Rafael Dias
13/05/2016 18:01

Vou atualizar isso! 🙂 Obrigado Rafael!

Home » Software » Como instalar o Zephyr no Ubuntu 16.04

EM DESTAQUE

WEBINARS

VEJA TAMBÉM

JUNTE-SE HOJE À COMUNIDADE EMBARCADOS

Talvez você goste: