Beaglebone Black + Qt Embedded + Yocto - parte 1

qt embedded yocto
Este post faz parte da série Beaglebone Black + Qt Embedded + Yocto. Leia também os outros posts da série:

Dando continuidade na série de artigos sobre o uso do Yocto Project, agora veremos como criar uma distribuição Linux embarcado com o Qt Embedded para a Beaglebone Black. Se você ainda não teve contato com o Yocto, sugiro que faça o tutorial do Henrique Rossi sobre Beaglebone Black + Yocto.

 

Qt Embedded

O Qt (/ˈkjuːt/ "cute") é um framework para desenvolvimento de aplicações cross-plataforma. Isso quer dizer que as aplicações desenvolvidas podem rodar em diversos sistemas operacionais e arquiteturas de hardware diferentes sem que seja necessária alguma alteração no código fonte, sendo obrigatório apenas a sua recompilação. Aplicações com ou sem GUI (Graphical User Interface) são contempladas no framework e são desenvolvidas em C++. Ele é distribuído sob a licença GPL-3 e LGPL-2.1, além de possuir licença comercial. 

O Qt começou a ser desenvolvido pelos fundadores da Trolltech em 1991 que foi adquirida pela Nokia em 2008 para ser usado como interface gráfica para os celulares com sistema operacional Symbian. Em 2011 a Nokia vendeu a divisão de licenciamento comercial do Qt para a Digia.

Em sistemas Linux embarcado, onde recursos de processamento e memória são mais restritos dos que encontramos em desktop, devemos dar uma atenção especial quando o produto utilizará uma interface gráfica. Sistemas de gerenciamento de janelas (Windowing Systems), como por exemplo o X11 e Wayland, consomem bastante recursos e muitas vezes são impeditivos em aplicações embarcadas.

O Qt Embedded elimina a necessidade do uso de um sistema de gerenciamento de janelas e faz o acesso aos recursos gráficos diretamente pelo Linux framebuffer, que é o dispositivo responsável por abstrair o hardware gráfico. Dessa maneira o consumo de memória e processamento são melhores otimizados.

Montando o Ambiente de construção no yocto

Vamos criar os diretórios e baixar os fontes necessários:

mkdir -p ~/yocto/dl
cd ~/yocto
git clone -b dora git://git.yoctoproject.org/poky poky-dora
cd poky-dora
git clone -b dora git://git.yoctoproject.org/meta-ti

Note que estamos usando a versão "dora" do Yocto Project. E baixamos também o layer meta-ti que possui o BSP (Board Support Package) com os fontes necessários (u-boot, kernel etc) para rodar a nossa distribuição na Beaglebone Black.

Agora vamos configurar o ambiente para gerarmos os artefatos de software:

cd ~/yocto
. poky-dora/oe-init-build-env build-dora

Adicione a linha abaixo no arquivo ~/yocto/build-dora/conf/bblayers.conf  para a variável BBLAYERS:

${TOPDIR}/../poky-dora/meta-ti \

Modifique e adicione as seguintes variáveis no arquivo ~/yocto/build-dora/conf/local.conf

#MACHINE ??= "qemux86"
MACHINE ?= "beaglebone"

DL_DIR ?= "${TOPDIR}/../dl"

PACKAGE_CLASSES ?= "package_ipk"

IMAGE_INSTALL_append = " kernel-modules"

Note que configuramos nossa machine como sendo a beaglebone (serve tanto para a white como a black), mudamos o diretório de download para podermos reutilizar os fontes baixados em outros projetos, usaremos o gerenciador de pacotes ipk (ele é mais indicado para sistemas embarcados porque não exige muitos recursos para funcionar) e vamos instalar na imagem todos os módulos do kernel gerados.

Se você já fez o tutorial do Henrique, você pode simplesmente atualizar as cópias locais dos repositórios poky e meta-ti (git pull) e modificar o arquivo local.conf.

Gerando a imagem

Depois de baixado os fontes e ter configurado o sistema de build , vamos gerar uma imagem com os aplicativos demo do Qt Embedded versão 4.8.5.

cd ~/yocto
. poky-dora/oe-init-build-env build-dora
bitbake qt4e-demo-image

Esta é a configuração de build que foi utilizada:

Build Configuration:
BB_VERSION        = "1.20.0"
BUILD_SYS         = "x86_64-linux"
NATIVELSBSTRING   = "Ubuntu-12.10"
TARGET_SYS        = "arm-poky-linux-gnueabi"
MACHINE           = "beaglebone"
DISTRO            = "poky"
DISTRO_VERSION    = "1.5.1"
TUNE_FEATURES     = "armv7a vfp neon"
TARGET_FPU        = "vfp-neon"
meta              
meta-yocto        
meta-yocto-bsp    = "dora:98bd952a5b72c584fc1094e4a61eb9e2a24cc97b"
meta-ti           = "dora:b5d21cb2f4f0ab9e898d208239867b0c5ea969bc"

Gravando a imagem

Este procedimento é praticamente o mesmo utilizado no tutorial do Henrique mencionado no começo deste post. 

Para a gravação das imagens no microSD card, o mesmo deve ser particionado e formatado de acordo o padrão aceito pelo placa. Para isso foi criado um script, que pode ser obtido com os seguintes comandos:

cd ~/yocto/
git clone https://github.com/henriqueprossi/beaglebone-black.git bbb-sdcard-prepare

Insira um microSD card no computador PC ou notebook (sistema host) e descubra qual o device node criado pelo sistema operacional. Tente um dos seguintes comandos:

dmesg
sudo fdisk -l

Caso, por exemplo, o device node criado seja /dev/sdb, use o seguinte comando:

cd ~/yocto/bbb-sdcard-prepare/scripts
chmod +x format_sd_card.sh
sudo ./format_sd_card.sh /dev/sdb

Assim que o processo de particionamento e formatação terminar, duas partições no microSD card são criadas:

  • boot (FAT32);
  • rootfs (ext4).

Execute a “montagem” dessas duas partições no sistema de arquivos do sistema host. Caso esse faça uso da distribuição Ubuntu, basta remover e inserir novamente o dispositivo no seu conector. Dado que, por exemplo, os pontos de montagem criados sejam /media/boot e /media/rootfs, a imagem gerada anteriormente é copiada da seguinte forma para o microSD :

cd ~/yocto/build-dora/tmp/deploy/images/beaglebone
cp MLO /media/boot
cp u-boot.img /media/boot
sudo tar xzf qt4e-demo-image-beaglebone.tar.gz -C /media/rootfs ; sync
sudo bash -c 'echo "musb_am335x" > /media/rootfs/etc/modules'

 Este último comando é importante, pois sem ele o mouse não será reconhecido pelo kernel.

Se você já possui algum outro sistema operacional instalado no eMMC da BBB, como por exemplo o Angstrom, execute os seguintes comandos:

cd ~/yocto/build-dora/tmp/deploy/images/beaglebone
cp zImage /media/boot
mkdir /media/boot/dtbs
cp zImage-am335x-boneblack.dtb /media/boot/dtbs/am335x-boneblack.dtb
cd ~/yocto/bbb-sdcard-prepare/scripts
cp uEnv.txt /media/boot

 Dessa maneira garantimos que o bootloader irá carregar os arquivos corretos do microSD card. 

Testando a imagem

Remova o microSD do computador e insira-o na BBB, conecte-a a uma TV por um cabo HDMI, e a um mouse através do conector USB. Se quiser monitorar o processo de boot, você também pode conectar um cabo serial.

Depois de energizar a placa você terá a seguinte imagem na TV:

qt-embedded-yocto-1
Imagem na TV do Qt Embedded

 

O log de boot é:

U-Boot SPL 2013.10 (Apr 04 2014 - 21:59:33)
reading args
spl: error reading image args, err - -1
reading u-boot.img
reading u-boot.img


U-Boot 2013.10 (Apr 04 2014 - 21:59:33)

I2C:   ready
DRAM:  512 MiB
NAND:  0 MiB
MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1
*** Error - No Valid Environment Area found
*** Warning - bad CRC, using default environment

Net:    not set. Validating first E-fuse MAC
cpsw, usb_ether
Hit any key to stop autoboot:  0 
mmc0 is current device
Scanning mmc 0...
4139120 bytes read in 255 ms (15.5 MiB/s)
34352 bytes read in 38 ms (882.8 KiB/s)
mmc0 is current device
SD/MMC found on device 0
reading uEnv.txt
132 bytes read in 2 ms (64.5 KiB/s)
Loaded environment from uEnv.txt
Importing environment from mmc ...
4139120 bytes read in 254 ms (15.5 MiB/s)
34352 bytes read in 38 ms (882.8 KiB/s)
Kernel image @ 0x80200000 [ 0x000000 - 0x3f2870 ]
## Flattened Device Tree blob at 80f80000
   Booting using the fdt blob at 0x80f80000
   Loading Device Tree to 9f321000, end 9f32c62f ... OK

Starting kernel ...

[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 3.12.10 ([email protected]) (gcc version 4.8.1 (GCC) ) #1 Fri Apr 4 21:02:43 BRT 2014
[    0.000000] CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=10c53c7d
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[    0.000000] Machine: Generic AM33XX (Flattened Device Tree), model: TI AM335x BeagleBone
[    0.000000] cma: CMA: reserved 24 MiB at 9d800000
[    0.000000] Memory policy: ECC disabled, Data cache writeback
[    0.000000] CPU: All CPU(s) started in SVC mode.
[    0.000000] AM335X ES2.0 (sgx neon )
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 129280
[    0.000000] Kernel command line: console=ttyO0,115200n8 root=/dev/mmcblk0p2 ro rootfstype=ext4 rootwait
[    0.000000] PID hash table entries: 2048 (order: 1, 8192 bytes)
[    0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
[    0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
[    0.000000] Memory: 483280K/521216K available (5623K kernel code, 560K rwdata, 1880K rodata, 344K init, 225K bss, 37936K reserved, 0K highmem)
[    0.000000] Virtual kernel memory layout:
[    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
[    0.000000]     fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
[    0.000000]     vmalloc : 0xe0800000 - 0xff000000   ( 488 MB)
[    0.000000]     lowmem  : 0xc0000000 - 0xe0000000   ( 512 MB)
[    0.000000]     pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
[    0.000000]     modules : 0xbf000000 - 0xbfe00000   (  14 MB)
[    0.000000]       .text : 0xc0008000 - 0xc075c014   (7505 kB)
[    0.000000]       .init : 0xc075d000 - 0xc07b3338   ( 345 kB)
[    0.000000]       .data : 0xc07b4000 - 0xc0840018   ( 561 kB)
[    0.000000]        .bss : 0xc0840018 - 0xc0878630   ( 226 kB)
[    0.000000] NR_IRQS:16 nr_irqs:16 16
[    0.000000] IRQ: Found an INTC at 0xfa200000 (revision 5.0) with 128 interrupts
[    0.000000] Total of 128 interrupts on 1 active controller
[    0.000000] OMAP clockevent source: timer2 at 24000000 Hz
[    0.000000] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 178956ms
[    0.000000] OMAP clocksource: timer1 at 24000000 Hz
[    0.000000] Console: colour dummy device 80x30
[    0.000250] Calibrating delay loop... 663.55 BogoMIPS (lpj=3317760)
[    0.049781] pid_max: default: 32768 minimum: 301
[    0.049865] Security Framework initialized
[    0.049907] Mount-cache hash table entries: 512
[    0.055697] CPU: Testing write buffer coherency: ok
[    0.056033] Setting up static identity map for 0xc0583c98 - 0xc0583d08
[    0.056725] devtmpfs: initialized
[    0.058177] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 3
[    0.117895] omap_hwmod: debugss: _wait_target_disable failed
[    0.118474] pinctrl core: initialized pinctrl subsystem
[    0.119172] regulator-dummy: no parameters
[    0.121218] NET: Registered protocol family 16
[    0.122921] DMA: preallocated 256 KiB pool for atomic coherent allocations
[    0.125013] cpuidle: using governor ladder
[    0.125026] cpuidle: using governor menu
[    0.131430] platform mpu.1: FIXME: clock-name 'fck' DOES NOT exist in dt!
[    0.132298] platform 49000000.edma: FIXME: clock-name 'fck' DOES NOT exist in dt!
[    0.133269] OMAP GPIO hardware version 0.1
[    0.139520] platform 56000000.sgx: FIXME: clock-name 'fck' DOES NOT exist in dt!
[    0.141092] DSS not supported on this SoC
[    0.141106] No ATAGs?
[    0.141116] hw-breakpoint: debug architecture 0x4 unsupported.
[    0.159493] bio: create slab  at 0
[    0.170728] edma-dma-engine edma-dma-engine.0: TI EDMA DMA engine driver
[    0.171400] vmmcsd_fixed: 3300 mV 
[    0.173560] vgaarb: loaded
[    0.174551] SCSI subsystem initialized
[    0.175588] usbcore: registered new interface driver usbfs
[    0.175729] usbcore: registered new interface driver hub
[    0.175880] usbcore: registered new device driver usb
[    0.176589] omap_i2c 44e0b000.i2c: could not find pctldev for node /[email protected]/pinmux_i2c0_pins, deferring probe
[    0.176613] platform 44e0b000.i2c: Driver omap_i2c requests probe deferral
[    0.176783] media: Linux media interface: v0.10
[    0.176918] Linux video capture interface: v2.00
[    0.177122] pps_core: LinuxPPS API ver. 1 registered
[    0.177130] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <[email protected]>
[    0.177232] PTP clock support registered
[    0.179205] Switched to clocksource timer1
[    0.193608] NET: Registered protocol family 2
[    0.194125] TCP established hash table entries: 4096 (order: 3, 32768 bytes)
[    0.194195] TCP bind hash table entries: 4096 (order: 2, 16384 bytes)
[    0.194233] TCP: Hash tables configured (established 4096 bind 4096)
[    0.194289] TCP: reno registered
[    0.194302] UDP hash table entries: 256 (order: 0, 4096 bytes)
[    0.194317] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
[    0.194473] NET: Registered protocol family 1
[    0.194793] RPC: Registered named UNIX socket transport module.
[    0.194803] RPC: Registered udp transport module.
[    0.194808] RPC: Registered tcp transport module.
[    0.194813] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    0.195533] NetWinder Floating Point Emulator V0.97 (double precision)
[    0.196004] PM: Loading am335x-pm-firmware.bin
[    0.309587] VFS: Disk quotas dquot_6.5.2
[    0.309653] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[    0.310146] NFS: Registering the id_resolver key type
[    0.310221] Key type id_resolver registered
[    0.310228] Key type id_legacy registered
[    0.310260] jffs2: version 2.2. (NAND) (SUMMARY)  �© 2001-2006 Red Hat, Inc.
[    0.310411] msgmni has been set to 991
[    0.311646] NET: Registered protocol family 38
[    0.311680] io scheduler noop registered
[    0.311687] io scheduler deadline registered
[    0.311706] io scheduler cfq registered (default)
[    0.313239] pinctrl-single 44e10800.pinmux: 142 pins at pa f9e10800 size 568
[    0.317114] platform 4830e000.lcdc: Driver da8xx_lcdc requests probe deferral
[    0.318358] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[    0.320569] 44e09000.serial: ttyO0 at MMIO 0x44e09000 (irq = 88, base_baud = 3000000) is a OMAP UART0
[    0.911468] console [ttyO0] enabled
[    0.916215] omap_rng 48310000.rng: OMAP Random Number Generator ver. 20
[    0.930860] brd: module loaded
[    0.938038] loop: module loaded
[    0.943888] mtdoops: mtd device (mtddev=name/number) must be supplied
[    0.953343] usbcore: registered new interface driver asix
[    0.959174] usbcore: registered new interface driver ax88179_178a
[    0.965710] usbcore: registered new interface driver cdc_ether
[    0.971978] usbcore: registered new interface driver r815x
[    0.977884] usbcore: registered new interface driver smsc95xx
[    0.984039] usbcore: registered new interface driver net1080
[    0.990125] usbcore: registered new interface driver cdc_subset
[    0.996473] usbcore: registered new interface driver zaurus
[    1.002496] usbcore: registered new interface driver cdc_ncm
[    1.008820] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    1.015699] ehci-pci: EHCI PCI platform driver
[    1.020532] ehci-omap: OMAP-EHCI Host Controller driver
[    1.026672] usbcore: registered new interface driver cdc_wdm
[    1.032794] usbcore: registered new interface driver usb-storage
[    1.039915] mousedev: PS/2 mouse device common for all mice
[    1.047932] omap_rtc 44e3e000.rtc: rtc core: registered 44e3e000.rtc as rtc0
[    1.056004] i2c /dev entries driver
[    1.060133] Driver for 1-wire Dallas network protocol.
[    1.067365] omap_wdt: OMAP Watchdog Timer Rev 0x01: initial timeout 60 sec
[    1.076034] edma-dma-engine edma-dma-engine.0: allocated channel for 0:25
[    1.083289] edma-dma-engine edma-dma-engine.0: allocated channel for 0:24
[    1.129513] edma-dma-engine edma-dma-engine.0: allocated channel for 0:3
[    1.136556] edma-dma-engine edma-dma-engine.0: allocated channel for 0:2
[    1.181121] ledtrig-cpu: registered to indicate activity on CPUs
[    1.187704] edma-dma-engine edma-dma-engine.0: allocated channel for 0:36
[    1.194986] omap-sham 53100000.sham: hw accel on OMAP rev 4.3
[    1.202013] omap-aes 53500000.aes: OMAP AES hw accel rev: 3.2
[    1.208072] edma-dma-engine edma-dma-engine.0: allocated channel for 0:5
[    1.215211] edma-dma-engine edma-dma-engine.0: allocated channel for 0:6
[    1.223400] usbcore: registered new interface driver usbhid
[    1.229291] usbhid: USB HID core driver
[    1.235275] oprofile: no performance counters
[    1.240302] oprofile: using timer interrupt.
[    1.244824] mmc0: host does not support reading read-only switch. assuming write-enable.
[    1.253595] TCP: cubic registered
[    1.257071] Initializing XFRM netlink socket
[    1.261614] NET: Registered protocol family 17
[    1.266353] mmc0: new high speed SDHC card at address 0002
[    1.272164] NET: Registered protocol family 15
[    1.276861] 8021q: 802.1Q VLAN Support v1.8
[    1.281756] mmcblk0: mmc0:0002 SD4GB 3.66 GiB 
[    1.287178] Key type dns_resolver registered
[    1.291941]  mmcblk0: p1 p2
[    1.295710] cpu cpu0: cpu0 regulator not ready, retry
[    1.301403] platform cpufreq-cpu0.0: Driver cpufreq-cpu0 requests probe deferral
[    1.309931] ThumbEE CPU extension supported.
[    1.321714] DCDC1: at 1500 mV 
[    1.328825] vdd_mpu: 925 <--> 1375 mV at 1325 mV 
[    1.334613] vdd_core: 925 <--> 1150 mV at 1125 mV 
[    1.340480] LDO1: at 1800 mV 
[    1.344376] LDO2: at 3300 mV 
[    1.348795] LDO3: 1800 mV 
[    1.352435] LDO4: at 3300 mV 
[    1.356141] tps65217 0-0024: TPS65217 ID 0xe version 1.2
[    1.481280] tda998x 0-0070: found TDA19988
[    1.485969] omap_i2c 44e0b000.i2c: bus 0 rev0.11 at 400 kHz
[    1.554300] Console: switching to colour frame buffer device 160x45
[    1.629236] davinci_mdio 4a101000.mdio: davinci mdio revision 1.6
[    1.635654] davinci_mdio 4a101000.mdio: detected phy mask fffffffe
[    1.642766] libphy: 4a101000.mdio: probed
[    1.646981] davinci_mdio 4a101000.mdio: phy[0]: device 4a101000.mdio:00, driver SMSC LAN8710/LAN8720
[    1.657175] Detected MACID = c8:a0:30:b3:d5:d7
[    1.663380] omap_rtc 44e3e000.rtc: setting system clock to 2000-01-01 00:00:00 UTC (946684800)
[    1.687525] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
[    1.696144] VFS: Mounted root (ext4 filesystem) readonly on device 179:2.
[    1.704175] devtmpfs: mounted
[    1.707673] Freeing unused kernel memory: 344K (c075d000 - c07b3000)
[    1.772380] mmc1: BKOPS_EN bit is not set
[    1.778991] mmc1: new high speed MMC card at address 0001
[    1.785724] mmcblk1: mmc1:0001 MMC02G 1.78 GiB 
[    1.790656] mmcblk1boot0: mmc1:0001 MMC02G partition 1 1.00 MiB
[    1.797503] mmcblk1boot1: mmc1:0001 MMC02G partition 2 1.00 MiB
[    1.806323]  mmcblk1: p1 p2 p3 p4
[    1.813577]  mmcblk1boot1: unknown partition table
[    1.821467]  mmcblk1boot0: unknown partition table
INIT: version 2.88 booting
Starting udev
[    2.180836] udevd[804]: starting version 182
[    2.329533] PM: CM3 Firmware Version = 0x186
[    2.915756] EXT4-fs (mmcblk0p2): re-mounted. Opts: data=ordered
[    2.963924] musb-hdrc musb-hdrc.0.auto: Enabled SW babble control
Starting Bootlog daemon: [    3.017921] musb-hdrc musb-hdrc.0.auto: MUSB HDRC host driver
[    3.079704] musb-hdrc musb-hdrc.0.auto: new USB bus registered, assigned bus number 1
bootlogd: cannot allocate pseudo tty: No such file or directory
bootlogd.
[    3.141570] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[    3.148712] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    3.156345] usb usb1: Product: MUSB HDRC host driver
[    3.161569] usb usb1: Manufacturer: Linux 3.12.10 musb-hcd
[    3.167322] usb usb1: SerialNumber: musb-hdrc.0.auto
[    3.346645] hub 1-0:1.0: USB hub found
[    3.351485] hub 1-0:1.0: 1 port detected
[    3.361467] musb-hdrc musb-hdrc.1.auto: Enabled SW babble control
[    3.369136] musb-hdrc musb-hdrc.1.auto: MUSB HDRC host driver
[    3.388268] musb-hdrc musb-hdrc.1.auto: new USB bus registered, assigned bus number 2
[    3.397597] usb usb2: New USB device found, idVendor=1d6b, idProduct=0002
[    3.404779] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    3.412372] usb usb2: Product: MUSB HDRC host driver
[    3.417586] usb usb2: Manufacturer: Linux 3.12.10 musb-hcd
[    3.423350] usb usb2: SerialNumber: musb-hdrc.1.auto
[    3.440823] hub 2-0:1.0: USB hub found
[    3.447991] hub 2-0:1.0: 1 port detected
ALSA: Restoring mixer settings...
Configuring network interfaces... /usr/sbin/alsactl: load_state:1729: No soundcards found...
[    3.856718] net eth0: initializing cpsw version 1.12 (0)
[    3.864460] net eth0: phy found : id is : 0x7c0f1
[    3.875165] 8021q: adding VLAN 0 to HW filter on device eth0
udhcpc (v1.21.1) started
[    3.899430] usb 2-1: new low-speed USB device number 2 using musb-hdrc
Sending discover...
[    3.960404] dsps_interrupt 401: CAUTION: musb: Babble Interrupt Occurred
Sending discover...
Sending discover...
No lease, failing
Starting rpcbind daemon...rpcbind: cannot create socket for udp6
rpcbind: cannot create socket for tcp6
done.
Sat Apr  5 02:34:00 UTC 2014
INIT: Entering runlevel: 5
Starting system message bus: dbus.
Starting advanced power management daemon: No APM support in kernel
(failed.)
Starting syslogd/klogd: done
 * Starting Avahi mDNS/DNS-SD Daemon: avahi-daemon
   ...done.
Starting Telephony daemon
Starting Linux NFC daemon
Starting qtdemo
Stopping Bootlog daemon: bootlogd.

Poky (Yocto Project Reference Distro) 1.5.1 beaglebone /dev/ttyO0

beaglebone login: 

Experimente selecionar os diversos demos disponíveis para se ter uma ideia do que é possível ser feito com o Qt Embedded.

O que vem por aí

Na próxima parte veremos como gerar uma toolchain com o Qt Embedded para ser integrado a IDE Qt Creator para desenvolvimento e compilação das aplicações Qt.

Saiba mais

Embedded Linux Build Systems

Cozinhando com o Yocto Project

Desvendando Yocto Project – Primeiros passos

 

Outros artigos da série

Beaglebone Black + Qt Embedded + Yocto - parte 2 >>
Este post faz da série Beaglebone Black + Qt Embedded + Yocto. Leia também os outros posts da série:
NEWSLETTER

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Diego Sueiro
Formado em Engenharia de Controle e Automação pela UNIFEI e CEO do Embarcados, atualmente trabalho na Inglaterra com Desenvolvimento de Sistemas Linux Embarcado Real Time. Sou consultor e desenvolvedor de software para Sistemas Embarcados com vasta experiência em projetos com processadores de 8bits a 32bits, sistemas bare metal, RTOS, Linux Embarcado e Android Embarcado. Um apaixonado por Pink Floyd e Empreendedorismo.

27
Deixe um comentário

avatar
 
18 Comment threads
9 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
4 Comment authors
Ivan BragaGustavo HenriqueDiego SueiroEduardo ScherrerProjeto de Kiosk Interativo para a Beaglebone Black com Yocto - parte 1 Recent comment authors
  Notificações  
recentes antigos mais votados
Notificar
trackback

[…] Beaglebone Black + Qt Embedded + Yocto – parte 1 […]

trackback

[…] Beaglebone Black + Qt Embedded + Yocto – parte 1 […]

trackback

[…] Beaglebone Black + Qt Embedded + Yocto – parte 1 […]

trackback

[…] BeagleBone Black + QT Embedded + Yocto - Parte 1 […]

trackback

[…] foi publicada uma série [8] [9] para a Beaglebone Black, porém usando a versão QtEmbedded […]

trackback

[…] #sharebar { padding: 0; text-align: left; list-style: none; margin: 0; } #sharebar span {float: left; padding: 0 5px; } #sharebar { display: block; margin: 0; padding: 5px 0 5px 5px; overflow: visible; text-align: center; height: 20px;} #sharebar #fb { text-align: left;} #sharebar #tww { width: 95px; overflow: hidden; } p.recommended { padding: 14px; text-align: center; } .page { position: relative; } Tweetar lang: en_US (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/pt_BR/all.js#xfbml=1"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk')); !function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs'); window.___gcfg = {lang: 'pt-BR'}; (function()… Leia mais »

trackback

[…] foi publicada uma série [8] [9] com a mesma finalidade, porém usando a versão QtEmbedded (Qt4) […]

trackback

[…] Beaglebone Black + Qt Embedded + Yocto – parte 1 […]

trackback

[…]  Beaglebone Black + Qt Embedded + Yocto – parte 1 […]

trackback

[…] Beaglebone Black + Qt Embedded + Yocto – parte 1 […]