ÍNDICE DE CONTEÚDO
A Intel está apostando algumas fichas nas aplicações de Internet das Coisas (IoT) através do lançamento de kits de desenvolvimento. Uma dessas apostas é a Intel Edison, que foi oficialmente lançada em CES 2014.
Juntamente com a placa, a Intel disponibiliza em seu site o Board Support Package (BSP) da Intel Edison compatível com o Yocto Project para desenvolvimento de distribuições Linux Embarcado, bem como aplicativos, bibliotecas e componentes para aplicações IoT.
Componentes do Intel IoT Developer Kit
Diversas IDEs, linguagens de programação e ferramentas estão disponíveis para desenvolvimento:
- Eclipse IDE – C/C++:
- Eclipse IDE para Windows, Mac ou Linux;
- Todas as ferramentas essenciais para desenvolvimento (cross-compiling tool chain, debugging e profiling tools);
- Bibliotecas para conexão com a Galileo e Edison mais bibliotecas de sensores;
- Templates e exemplos de como iniciar a construção de aplicações em IoT.
- Intel® XDK IoT Edition – JavaScript:
- Você pode construir uma solução completa em IoT usando aplicações Node.js e HTML5 embarcadas na placa.
- Arduino IDE – Wiring e Sketches de Arduino;
- Wyliodrin – Programação Visual:
- Cloud Analytics:
- Intel IoT Analytics inclui capacidades para coleta de dados, armazenamento e análise de sensores. Além disso ele pode gerar alertas e realizar análises avançadas. Este serviço é gratuito para aplicações não comerciais.
- Intel System Studio for IoT:
- Uma IDE que provém acesso avançado a nível de software e hardware para aumentar a velocidade de desenvolvimento, testes e otimizações. Suporta a Galileo e Edison com uso de debuggers (JTAG com openOCD) e compilador C++ com ferramentas e bibliotecas de performance da Intel. Ele está disponível através de licença trial para uso não comercial.
Intel Edison Yocto
Recentemente foi lançada a versão 2.1 da imagem Linux da Edison.
Embarcados Experience 2024: Evento Presencial
Participe do Embarcados Experience 2024 em São Paulo. Conhecimento técnico, palestras, workshops e oportunidade de networking com profissionais experientes.
Você pode baixar e instalar a imagem Linux da Edison pré-compilada direto do site da Intel. O procedimento de gravação pode ser feito em máquinas Windows, Mac e Linux.
Nesse artigo mostraremos como gerar do zero uma imagem Linux Embarcado para a Intel Edison com o Yocto Project. Utilizaremos como Host uma máquina com Ubuntu 14.04.
Setup do Host
Primeiramente devemos instalar alguns pacotes para o correto funcionamento do Yocto e a gravação da imagem na Edison. Abra o terminal (Ctrl+Alt+T) e digite:
1 2 3 |
sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib \ build-essential chrpath socat libsdl1.2-dev xterm gdebi libncurses5:i386 \ libstdc++6:i386 dfu-util |
Agora vamos baixar os fontes do BSP:
1 2 3 4 5 6 7 |
mkdir -p ~/yocto/dl mkdir -p ~/yocto/edison-bsp-2.1/ cd ~/yocto/edison-bsp-2.1/ wget https://downloadmirror.intel.com/24910/eng/edison-src-ww18-15.tgz tar -xzf edison-src-ww18-15.tgz cd edison-src export BB_DL_DIR=~/yocto/dl |
Construindo a imagem
Na pasta “~/yocto/edison-bsp-2.1/edison-src” e existe um Makefile que concentra todas as configurações e operações necessárias para construirmos a nossa imagem. Vamos executar dois comandos para baixar todos os fontes necessários (make setup) e para construir a imagem (make image):
1 2 |
make setup make image |
Agora relaxe, vá tomar um café e aproveite para estudar mais sobre o Yocto, pois o processo de construção é demorado quando feito pela primeira vez.
No final do processo você receberá essa mensagem no terminal:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
Build Configuration: BB_VERSION = "1.22.0" BUILD_SYS = "x86_64-linux" NATIVELSBSTRING = "Ubuntu-14.04" TARGET_SYS = "i586-poky-linux" MACHINE = "edison" DISTRO = "poky-edison" DISTRO_VERSION = "1.6.1" TUNE_FEATURES = "m32 core2" TARGET_FPU = "" meta meta-yocto meta-yocto-bsp = "(detachedfromyocto-1.6.1):c4f1f0f491f988901bfd6965f7d10f60cb94a76f" meta-intel-edison-bsp meta-intel-edison-distro = "<unknown>:<unknown>" meta-intel-iot-middleware = "(detachedfrom52ca21c):52ca21c1587ff7870599eee3a08179090af27848" meta-intel-arduino = "<unknown>:<unknown>" NOTE: Preparing runqueue NOTE: Executing SetScene Tasks NOTE: Executing RunQueue Tasks NOTE: Tasks Summary: Attempted 3609 tasks of which 3602 didn't need to be rerun and all succeeded. ./meta-intel-edison/utils/flash/postBuild.sh /home/dsueiro/yocto/edison-bsp-2.1/edison-src/out/current/build EDISON_ROOTFS_MB = 1536, IMAGE_SIZE_MB = 512 1+0 records in 1+0 records out 4194304 bytes (4,2 MB) copied, 0,00608839 s, 689 MB/s 1+0 records in 1+0 records out 4194304 bytes (4,2 MB) copied, 0,0110309 s, 380 MB/s 1+0 records in 1+0 records out 4194304 bytes (4,2 MB) copied, 0,0064562 s, 650 MB/s 1+0 records in 1+0 records out 4194304 bytes (4,2 MB) copied, 0,00415899 s, 1,0 GB/s 1+0 records in 1+0 records out 4194304 bytes (4,2 MB) copied, 0,00923674 s, 454 MB/s 1+0 records in 1+0 records out 4194304 bytes (4,2 MB) copied, 0,0101175 s, 415 MB/s 1+0 records in 1+0 records out 4194304 bytes (4,2 MB) copied, 0,00879689 s, 477 MB/s Image Name: Edison Updater script Created: Sat May 30 06:48:22 2015 Image Type: PowerPC Linux Script (uncompressed) Data Size: 14683 Bytes = 14.34 kB = 0.01 MB Load Address: 00010000 Entry Point: 00010000 Contents: Image 0: 14675 Bytes = 14.33 kB = 0.01 MB **** Done *** Files ready to flash in /home/dsueiro/yocto/edison-bsp-2.1/edison-src/out/current/build/toFlash/ Run the flashall script there to start flashing. ************* |
Gravando a imagem
Rode o comando a abaixo no terminal:
1 |
sudo make flash |
E você verá a seguinte mensagem:
1 2 3 4 |
./out/current/build/toFlash/flashall.sh Using U-Boot target: edison-blankcdc Now waiting for dfu device 8087:0a99 Please plug and reboot the board |
Posicione a chave SW1 próxima ao conector micro USB de acordo com a figura abaixo:
e conecte a Edison ao seu computador através do cabo micro USB:
A placa será energizada e o processo de gravação será iniciado. No final teremos as seguintes mensagens no terminal:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Flashing IFWI ##################################################] finished! ##################################################] finished! Flashing U-Boot ##################################################] finished! Flashing U-Boot Environment ##################################################] finished! Flashing U-Boot Environment Backup ##################################################] finished! Rebooting to apply partition changes Now waiting for dfu device 8087:0a99 Flashing boot partition (kernel) ##################################################] finished! Flashing rootfs, (it can take up to 5 minutes... Please be patient) ##################################################] finished! Rebooting U-boot & Kernel System Flash Success... Your board needs to reboot to complete the flashing procedure, please do not unplug it for 2 minutes. |
Pronto, agora a sua Edison está rodando a versão 2.1 do Linux da Intel.
Se desejar você pode ter acesso a console serial da placa através do conector micro USB conectado ao computador conforme a figura abaixo:
Instale o aplicativo screen e abra a conexão com a placa:
1 2 |
sudo apt-get install screen sudo screen /dev/ttyUSB0 115200 |
O usuário padrão da placa é “root” e não possui senha.
Abaixo você pode conferir o log de mensagens de boot:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 |
****************************** PSH KERNEL VERSION: b0182b2b WR: 20104000 ****************************** SCU IPC: 0x800000d0 0xfffce92c PSH miaHOB version: TNG.B0.VVBD.0000000c microkernel built 11:24:08 Feb 5 2015 ******* PSH loader ******* PCM page cache size = 192 KB Cache Constraint = 0 Pages Arming IPC driver .. Adding page store pool .. PagestoreAddr(IMR Start Address) = 0x04899000 pageStoreSize(IMR Size) = 0x00080000 *** Ready to receive application *** U-Boot 2014.04 (May 25 2015 - 08:41:56) Watchdog enabled DRAM: 980.6 MiB MMC: tangier_sdhci: 0 In: serial Out: serial Err: serial Hit any key to stop autoboot: 0 Target:blank Partitioning already done... Flashing already done... GADGET DRIVER: usb_dnl_dfu reading vmlinuz 5338432 bytes read in 132 ms (38.6 MiB/s) Valid Boot Flag Setup Size = 0x00003c00 Magic signature found Using boot protocol version 2.0c Linux kernel version 3.10.17-yocto-standard (dsueiro@dsueiro-N46VM) #1 SMP PREEMPT Mon May 25 08:19:18 BRT 2015 Building boot_params at 0x00090000 Loading bzImage at address 00100000 (5323072 bytes) Magic signature found Kernel command line: "rootwait root=PARTUUID=012b3303-34ac-284d-99b4-34e03a2335f4 rootfstype=ext4 console=ttyMFD2 earlyprintk=ttyMFD2,keep logle" Starting kernel ... [ 1.623850] snd_soc_sst_platform: Enter:sst_soc_probe [ 2.027763] pmic_ccsm pmic_ccsm: Error reading battery profile from battid frmwrk [ 2.045958] pmic_ccsm pmic_ccsm: Battery Over heat exception [ 2.046031] pmic_ccsm pmic_ccsm: Battery0 temperature inside boundary Welcome to Linux! Expecting device dev-ttyMFD2.device... [ OK ] Reached target Remote File Systems. Expecting device dev-disk-by\x2dpartlabel-factory.device... Expecting device sys-subsystem-net-devices-usb0.device... [ OK ] Reached target Paths. [ OK ] Set up automount Arbitrary Executable File Formats F...utomount Point. [ OK ] Reached target Swap. [ OK ] Set up automount boot.automount. [ OK ] Created slice Root Slice. [ OK ] Listening on Journal Socket. [ OK ] Listening on udev Kernel Socket. [ OK ] Listening on Delayed Shutdown Socket. [ OK ] Listening on udev Control Socket. [ OK ] Listening on /dev/initctl Compatibility Named Pipe. [ OK ] Created slice User and Session Slice. [ OK ] Created slice System Slice. Starting udev Coldplug all Devices... Mounting POSIX Message Queue File System... Starting Journal Service... [ OK ] Started Journal Service. Starting Create list of required static device nodes...rrent kernel... Starting Apply Kernel Variables... Starting Load Kernel Modules... Mounting Debug File System... [ OK ] Reached target Slices. Starting Remount Root and Kernel File Systems... [ OK ] Created slice system-getty.slice. [ OK ] Created slice system-serial\x2dgetty.slice. Mounting Temporary Directory... [ OK ] Set up automount home.automount. [ OK ] Mounted Debug File System. [ OK ] Mounted POSIX Message Queue File System. [ OK ] Mounted Temporary Directory. [ OK ] Started Create list of required static device nodes ...current kernel. [ OK ] Started Apply Kernel Variables. [ OK ] Started Remount Root and Kernel File Systems. [ OK ] Started udev Coldplug all Devices. [ OK ] Started Load Kernel Modules. Mounting Configuration File System... Mounting FUSE Control File System... Starting Load/Save Random Seed... Starting Create Static Device Nodes in /dev... [ OK ] Mounted FUSE Control File System. [ OK ] Mounted Configuration File System. [ OK ] Started Load/Save Random Seed. [ OK ] Started Create Static Device Nodes in /dev. Starting udev Kernel Device Manager... [ OK ] Reached target Local File Systems (Pre). Mounting /var/volatile... [ OK ] Started udev Kernel Device Manager. [ OK ] Mounted /var/volatile. [ OK ] Reached target Local File Systems. Starting Trigger Flushing of Journal to Persistent Storage... Starting Create Volatile Files and Directories... [ OK ] Started Create Volatile Files and Directories. Starting Network Time Synchronization... Starting Update UTMP about System Boot/Shutdown... [ OK ] Started Trigger Flushing of Journal to Persistent Storage. [ OK ] Found device /dev/ttyMFD2. [ OK ] Found device /dev/disk/by-partlabel/factory. Mounting Mount for factory... [ OK ] Mounted Mount for factory. [ OK ] Started Network Time Synchronization. [ OK ] Started Update UTMP about System Boot/Shutdown. [ OK ] Reached target System Initialization. [ OK ] Reached target Timers. [ OK ] Listening on D-Bus System Message Bus Socket. Starting Restore Sound Card State... [ OK ] Reached target Sound Card. [ OK ] Created slice system-systemd\x2dfsck.slice. Starting File System Check on /dev/disk/by-partlabel/home... [ OK ] Created slice system-systemd\x2drfkill.slice. Starting Load/Save RF Kill Switch Status of rfkill2... Starting Load/Save RF Kill Switch Status of rfkill0... Starting Load/Save RF Kill Switch Status of rfkill1... [ OK ] Started Load/Save RF Kill Switch Status of rfkill2. [ OK ] Started Load/Save RF Kill Switch Status of rfkill0. [ OK ] Started Load/Save RF Kill Switch Status of rfkill1. [ OK ] Found device /sys/subsystem/net/devices/usb0. [ 8.036399] systemd-fsck[174]: /dev/mmcblk0p10: recovering journal [ 8.100699] systemd-fsck[174]: /dev/mmcblk0p10: clean, 14/87120 files, 14183/348155 blocks [ OK ] Started File System Check on /dev/disk/by-partlabel/home. Mounting /home... [ OK ] Listening on sshd.socket. [ OK ] Mounted /home. [ OK ] Reached target Sockets. [ OK ] Reached target Basic System. Starting Cleanjournal service... [ OK ] Started Cleanjournal service. Starting Crashlog service... [ OK ] Started Crashlog service. Starting Edison PWR button handler... [ OK ] Started Edison PWR button handler. Starting Daemon to load edison mcu app binary... [ OK ] Started Daemon to load edison mcu app binary. Application available at (physical) address 0x04819000 VRL mapped to 0xff217000 App size = 11508 bytes App Authentication feature is disabled! Resetting IPC *** Ready to receive application *** Starting Start or stop WiFI AP Mode in Edison... [ OK ] Started Start or stop WiFI AP Mode in Edison. Starting Bluetooth rf kill event daemon... [ OK ] Started Bluetooth rf kill event daemon. Starting Daemon to handle arduino sketches... [ OK ] Started Daemon to handle arduino sketches. Starting Daemon to reset sketches... [ OK ] Started Daemon to reset sketches. Starting Login Service... Starting Permit User Sessions... Starting D-Bus System Message Bus... [ OK ] Started D-Bus System Message Bus. Starting Network Service... Starting Watchdog sample daemon... [ OK ] Started Watchdog sample daemon. [ OK ] Started Permit User Sessions. [ OK ] Started Network Service. [ OK ] Started Login Service. Mounting Arbitrary Executable File Formats File System... Starting Network Name Resolution... [ OK ] Reached target Network. Starting Zero-configuration networking... Starting Mosquitto - lightweight server implementati...SN protocols... Starting Getty on tty1... [ OK ] Started Getty on tty1. Starting Serial Getty on ttyMFD2... [ OK ] Started Serial Getty on ttyMFD2. [ OK ] Reached target Login Prompts. [ OK ] Mounted Arbitrary Executable File Formats File System. [ OK ] Started Network Name Resolution. [ OK ] Started Restore Sound Card State. [ OK ] Started Mosquitto - lightweight server implementatio...T-SN protocols. [ OK ] Started Zero-configuration networking. Starting The Edison status and configuration service... [ OK ] Started The Edison status and configuration service. Starting Intel_XDK_Daemon... [ OK ] Started Intel_XDK_Daemon. Starting File System Check on /dev/disk/by-partlabel/boot... Starting PulseAudio Sound System... [ 11.195640] systemd-fsck[252]: dosfsck 2.11, 12 Mar 2005, FAT32, LFN [ 11.198015] systemd-fsck[252]: /dev/mmcblk0p7: 5 files, 2695/2923 clusters [ OK ] Started File System Check on /dev/disk/by-partlabel/boot. Mounting /boot... [ OK ] Mounted /boot. Starting Bluetooth service... [ OK ] Started PulseAudio Sound System. [ OK ] Started Bluetooth service. [ OK ] Reached target Multi-User System. Poky (Yocto Project Reference Distro) 1.6.1 edison ttyMFD2 edison login: |
Créditos
Imagem de destaque: https://dfrobot.com
Figura 1: https://www.slideshare.net/IntelSoftware
Figuras 2, 3 e 4: https://software.intel.com