Raspberry Pi + Qt5 + Yocto – parte 1

Raspberry Pi usando Qt5
Este post faz parte da série Raspberry pi + Qt5 + Yocto

Nesta série de artigos sobre o uso do Yocto Project veremos como criar uma distribuição Linux embarcado com o Qt5 para a Raspberry Pi usando seu acelerador gráfico VideoCore IV. Na segunda parte veremos como gerar um SDK e integrá-lo ao QtCreator para que possamos desenvolver e compilar aplicações para o nosso target. Se você ainda não teve contato com o Yocto, sugiro que faça o tutorial do Henrique Rossi sobre Beaglebone Black + Yocto.

Anteriormente foi publicada uma série  para a Beaglebone Black, porém usando a versão QtEmbedded (Qt4).

Umas das principais evoluções do Qt5 em relação ao Qt4 é o melhor uso da GPU, dentre outras características.

Preparando o Host

O Yocto Project suporta oficialmente as seguintes distribuições GNU/Linux como ambiente de construção:

  • Ubuntu 12.04, 13.10 e 14.04
  • Fedora 19 e 20 
  • CentOS 6.4 e 6.5
  • Debian 7.0, 7.1, 7.2, 7.3 e 7.4
  • openSUSE 12.2, 12.3 e 13.1

Para que ele execute no Host alguns pacotes necessitam ser instalados.

Ubuntu e Debian:

sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib \
     build-essential chrpath libsdl1.2-dev xterm

Fedora:

sudo yum install gawk make wget tar bzip2 gzip python unzip perl patch \
     diffutils diffstat git cpp gcc gcc-c++ glibc-devel texinfo chrpath \
     ccache perl-Data-Dumper perl-Text-ParseWords perl-Thread-Queue SDL-devel xterm

openSUSE:

sudo zypper install python gcc gcc-c++ git chrpath make wget python-xml \
     diffstat texinfo python-curses patch libSDL-devel xterm

CentOS:

sudo yum install gawk make wget tar bzip2 gzip python unzip perl patch \
     diffutils diffstat git cpp gcc gcc-c++ glibc-devel texinfo chrpath SDL-devel xterm

Montando o Ambiente de construção

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

mkdir -p ~/yocto/dl
cd ~/yocto
git clone -b daisy git://git.yoctoproject.org/poky poky-daisy
cd poky-daisy
git clone -b daisy git://git.yoctoproject.org/meta-raspberrypi
git clone -b dizzy https://github.com/meta-qt5/meta-qt5.git
git clone -b daisy git://git.openembedded.org/meta-openembedded
git clone -b daisy https://bitbucket.org/embarcados/meta-embarcados.git

Note que estamos usando a versão “daisy” do Yocto Project. E baixamos também o layer meta-raspberrypi que possui o BSP (Board Support Package) com os fontes necessários (bootloader, kernel, bibliotecas para o acelerador gráfico, etc.) para rodar a nossa distribuição na Raspberry pi. Além disso iremos utilizar os layers meta-qt5 (que possuem as receitas para compilar o Qt5), meta-openembedded (com aplicativos adicionais) e o meta-embarcados (com as customizações necessárias para gerarmos a imagem de testes).

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

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

Edite o arquivo ~/yocto/build-daisy/conf/bblayers.conf  para que fique da seguinte maneira:

# LAYER_CONF_VERSION is increased each time build/conf/bblayers.conf
# changes incompatibly
LCONF_VERSION = "6"

BBPATH = "${TOPDIR}"
BBFILES ?= ""

BBLAYERS ?= " \
  ${TOPDIR}/../poky-daisy/meta-embarcados \
  ${TOPDIR}/../poky-daisy/meta-embarcados/meta-rpi \
  ${TOPDIR}/../poky-daisy/meta-raspberrypi \
  ${TOPDIR}/../poky-daisy/meta-qt5 \
  ${TOPDIR}/../poky-daisy/meta-openembedded/meta-oe \
  ${TOPDIR}/../poky-daisy/meta \
  ${TOPDIR}/../poky-daisy/meta-yocto \
  "

O arquivo bblayers.conf configura quais serão as camadas a serem consideradas pelo sistema de build.

Adicione as seguintes variáveis no começo do arquivo ~/yocto/build-daisy/conf/local.conf

MACHINE = "raspberrypi"
DISTRO = "poky"
DL_DIR = "${TOPDIR}/../dl"
PACKAGE_CLASSES = "package_ipk"
DISTRO_FEATURES_remove = "x11 wayland"
# Set Rpi GPU Memory to 128MB
GPU_MEM = "128"

Note que configuramos nossa machine como sendo a raspberrypi (serve tanto para os modelos A, B e B+), mudamos o diretório de download para podermos reutilizar os fontes baixados em outros projetos e usaremos o gerenciador de pacotes ipk (ele é mais indicado para sistemas embarcados porque não exige muitos recursos para funcionar). Além disso configuramos a GPU para usar 128MB de memória RAM.

Gerando a imagem com Qt5

Depois de baixado os fontes e ter configurado o sistema de build , vamos gerar uma imagem com diversos aplicativos de demostração (qt5-image-demo) do Qt5 (no momento de escrita desse artigo a versão do Qt utilizada é a 5.3.2).

cd ~/yocto
. poky-daisy/oe-init-build-env build-daisy
bitbake qt5-image-demo

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

Build Configuration:
BB_VERSION        = "1.22.0"
BUILD_SYS         = "x86_64-linux"
NATIVELSBSTRING   = "Ubuntu-14.04"
TARGET_SYS        = "arm-poky-linux-gnueabi"
MACHINE           = "raspberrypi"
DISTRO            = "poky"
DISTRO_VERSION    = "1.6.2"
TUNE_FEATURES     = "armv6 vfp"
TARGET_FPU        = "vfp"
meta-embarcados   
meta-rpi          = "daisy:434dc81fcb7fe630c107ef172afc33ce62e335db"
meta-raspberrypi  = "daisy:946b69299737cc2f1378c864f1b9075280db1b53"
meta-qt5          = "dizzy:0732e184acef5e0200f46d7f95702774e5de1904"
meta-oe           = "daisy:d3d14d3fcca7fcde362cf0b31411dc4eea6d20aa"
meta              
meta-yocto        
meta-yocto-bsp    = "daisy:88cfb9416aab3ca2b584160429a71abad075c7ef"

Gravando a imagem

A camada meta-raspberrypi possui uma classe que implementa a construção da imagem do sistema a ser gravada diretamente em um SDcard.

O Yocto gerou a imagem do SDcard que está disponível em: ~/yocto/build-daisy/tmp/deploy/images/raspberrypi/. De posse desse arquivo podemos gravá-lo no SDcard.

Insira um SDcard 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:

sudo umount /dev/sdb*
sudo dd if=~/yocto/build-daisy/tmp/deploy/images/raspberrypi/qt5-image-demo-raspberrypi.rpi-sdimg of=/dev/sdb; sync

Testando a imagem

Remova o SDcard do computador e insira-o na Rpi, conecte-a a uma TV por um cabo HDMI, e a um mouse através do conector USB da placa. Você precisará acessar o sistema via conexão serial. Para fazer a conexão entre o HOST e a Rpi siga os passos dessa wiki.

Abaixo segue o log da serial depois do boot do sistema:

[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 3.12.21 (dsueiro@dsueiro-N46VM) (gcc version 4.8.2 (GCC) ) #1 PREEMPT Fri Oct 31 11:31:32 BRST 2014
[    0.000000] CPU: ARMv6-compatible processor [410fb767] revision 7 (ARMv7), cr=00c5387d
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT nonaliasing instruction cache
[    0.000000] Machine: BCM2708
[    0.000000] cma: CMA: reserved 8 MiB at 17800000
[    0.000000] Memory policy: ECC disabled, Data cache writeback
[    0.000000] On node 0 totalpages: 98304
[    0.000000] free_area_init_node: node 0, pgdat c061ada0, node_mem_map c06cc000
[    0.000000]   Normal zone: 768 pages used for memmap
[    0.000000]   Normal zone: 0 pages reserved
[    0.000000]   Normal zone: 98304 pages, LIFO batch:31
[    0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
[    0.000000] pcpu-alloc: [0] 0 
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 97536
[    0.000000] Kernel command line: dma.dmachans=0x7f35 bcm2708_fb.fbwidth=1824 bcm2708_fb.fbheight=984 bcm2708.boardrev=0xf bcm2708.serial=0x83g
[    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: 374520K/393216K available (4492K kernel code, 238K rwdata, 1340K rodata, 143K init, 701K bss, 18696K reserved)
[    0.000000] Virtual kernel memory layout:
[    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
[    0.000000]     fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
[    0.000000]     vmalloc : 0xd8800000 - 0xff000000   ( 616 MB)
[    0.000000]     lowmem  : 0xc0000000 - 0xd8000000   ( 384 MB)
[    0.000000]     modules : 0xbf000000 - 0xc0000000   (  16 MB)
[    0.000000]       .text : 0xc0008000 - 0xc05ba210   (5833 kB)
[    0.000000]       .init : 0xc05bb000 - 0xc05defe4   ( 144 kB)
[    0.000000]       .data : 0xc05e0000 - 0xc061b8c0   ( 239 kB)
[    0.000000]        .bss : 0xc061b8cc - 0xc06cb088   ( 702 kB)
[    0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[    0.000000] Preemptible hierarchical RCU implementation.
[    0.000000] NR_IRQS:394
[    0.000000] sched_clock: 32 bits at 1000kHz, resolution 1000ns, wraps every 4294967ms
[    0.000000] Switching to timer-based delay loop
[    0.000000] Console: colour dummy device 80x30
[    0.000404] Calibrating delay loop (skipped), value calculated using timer frequency.. 2.00 BogoMIPS (lpj=10000)
[    0.000429] pid_max: default: 32768 minimum: 301
[    0.000934] Mount-cache hash table entries: 512
[    0.001753] Initializing cgroup subsys memory
[    0.001832] Initializing cgroup subsys devices
[    0.001850] Initializing cgroup subsys freezer
[    0.001866] Initializing cgroup subsys blkio
[    0.001993] CPU: Testing write buffer coherency: ok
[    0.002432] Setting up static identity map for 0xc04461a8 - 0xc0446204
[    0.004369] devtmpfs: initialized
[    0.020625] VFP support v0.3: implementor 41 architecture 1 part 20 variant b rev 5
[    0.022153] NET: Registered protocol family 16
[    0.027455] DMA: preallocated 4096 KiB pool for atomic coherent allocations
[    0.028073] cpuidle: using governor ladder
[    0.028095] cpuidle: using governor menu
[    0.028526] bcm2708.uart_clock = 0
[    0.030466] hw-breakpoint: found 6 breakpoint and 1 watchpoint registers.
[    0.030488] hw-breakpoint: maximum watchpoint size is 4 bytes.
[    0.030504] mailbox: Broadcom VideoCore Mailbox driver
[    0.030579] bcm2708_vcio: mailbox at f200b880
[    0.030665] bcm_power: Broadcom power driver
[    0.030684] bcm_power_open() -> 0
[    0.030695] bcm_power_request(0, 8)
[    0.531405] bcm_mailbox_read -> 00000080, 0
[    0.531425] bcm_power_request -> 0
[    0.531665] Serial: AMBA PL011 UART driver
[    0.531817] dev:f1: ttyAMA0 at MMIO 0x20201000 (irq = 83, base_baud = 0) is a PL011 rev3
[    0.914048] console [ttyAMA0] enabled
[    0.940626] bio: create slab <bio-0> at 0
[    0.945917] SCSI subsystem initialized
[    0.949863] usbcore: registered new interface driver usbfs
[    0.955535] usbcore: registered new interface driver hub
[    0.961065] usbcore: registered new device driver usb
[    0.967643] Switched to clocksource stc
[    0.971882] FS-Cache: Loaded
[    0.975020] CacheFiles: Loaded
[    0.991012] NET: Registered protocol family 2
[    0.996496] TCP established hash table entries: 4096 (order: 3, 32768 bytes)
[    1.003872] TCP bind hash table entries: 4096 (order: 2, 16384 bytes)
[    1.010437] TCP: Hash tables configured (established 4096 bind 4096)
[    1.016858] TCP: reno registered
[    1.020142] UDP hash table entries: 256 (order: 0, 4096 bytes)
[    1.025990] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
[    1.032749] NET: Registered protocol family 1
[    1.037721] RPC: Registered named UNIX socket transport module.
[    1.043642] RPC: Registered udp transport module.
[    1.048411] RPC: Registered tcp transport module.
[    1.053114] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    1.060473] bcm2708_dma: DMA manager at f2007000
[    1.065177] bcm2708_gpio: bcm2708_gpio_probe c05eded0
[    1.070723] vc-mem: phys_addr:0x00000000 mem_base=0x1ec00000 mem_size:0x20000000(512 MiB)
[    1.080283] audit: initializing netlink socket (disabled)
[    1.085747] type=2000 audit(0.930:1): initialized
[    1.253904] VFS: Disk quotas dquot_6.5.2
[    1.258257] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[    1.267082] FS-Cache: Netfs 'nfs' registered for caching
[    1.274008] NFS: Registering the id_resolver key type
[    1.279261] Key type id_resolver registered
[    1.283444] Key type id_legacy registered
[    1.288243] msgmni has been set to 747
[    1.294169] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 252)
[    1.301978] io scheduler noop registered
[    1.305904] io scheduler deadline registered
[    1.310605] io scheduler cfq registered (default)
[    1.316622] BCM2708FB: allocated DMA memory 57c00000
[    1.321775] BCM2708FB: allocated DMA channel 0 @ f2007000
[    1.351905] Console: switching to colour frame buffer device 228x61
[    1.459682] uart-pl011 dev:f1: no DMA platform data
[    1.464611] kgdb: Registered I/O driver kgdboc.
[    1.469855] vc-cma: Videocore CMA driver
[    1.473779] vc-cma: vc_cma_base      = 0x00000000
[    1.478550] vc-cma: vc_cma_size      = 0x00000000 (0 MiB)
[    1.483943] vc-cma: vc_cma_initial   = 0x00000000 (0 MiB)
[    1.499319] brd: module loaded
[    1.507766] loop: module loaded
[    1.511215] vchiq: vchiq_init_state: slot_zero = 0xd7800000, is_master = 0
[    1.519035] Loading iSCSI transport class v2.0-870.
[    1.525023] usbcore: registered new interface driver smsc95xx
[    1.531047] dwc_otg: version 3.00a 10-AUG-2012 (platform bus)
[    1.737002] Core Release: 2.80a
[    1.740265] Setting default values for core params
[    1.745088] Finished setting default values for core params
[    1.950793] Using Buffer DMA mode
[    1.954114] Periodic Transfer Interrupt Enhancement - disabled
[    1.959969] Multiprocessor Interrupt Enhancement - disabled
[    1.965538] OTG VER PARAM: 0, OTG VER FLAG: 0
[    1.969919] Dedicated Tx FIFOs mode
[    1.973780] WARN::dwc_otg_hcd_init:1042: FIQ DMA bounce buffers: virt = 0xd7c14000 dma = 0x57c14000 len=9024
[    1.983678] FIQ FSM acceleration enabled for :
[    1.983678] Non-periodic Split Transactions
[    1.983678] Periodic Split Transactions
[    1.983678] High-Speed Isochronous Endpoints
[    2.000401] dwc_otg: Microframe scheduler enabled
[    2.005172] WARN::hcd_init:473: FIQ at 0xc03207c4
[    2.009926] WARN::hcd_init:474: FIQ ASM at 0xc0320a78 length 36
[    2.015856] WARN::hcd_init:500: MPHI regs_base at 0xd8806000
[    2.021571] dwc_otg bcm2708_usb: DWC OTG Controller
[    2.026491] dwc_otg bcm2708_usb: new USB bus registered, assigned bus number 1
[    2.033805] dwc_otg bcm2708_usb: irq 32, io mem 0x00000000
[    2.039353] Init: Port Power? op_state=1
[    2.043272] Init: Power Port (0)
[    2.046811] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[    2.053657] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    2.060912] usb usb1: Product: DWC OTG Controller
[    2.065615] usb usb1: Manufacturer: Linux 3.12.21 dwc_otg_hcd
[    2.071389] usb usb1: SerialNumber: bcm2708_usb
[    2.076840] hub 1-0:1.0: USB hub found
[    2.080755] hub 1-0:1.0: 1 port detected
[    2.085192] dwc_otg: FIQ enabled
[    2.088540] dwc_otg: NAK holdoff enabled
[    2.092464] dwc_otg: FIQ split-transaction FSM enabled
[    2.097608] Module dwc_common_port init
[    2.101971] usbcore: registered new interface driver usb-storage
[    2.108431] mousedev: PS/2 mouse device common for all mice
[    2.114676] bcm2835-cpufreq: min=700000 max=700000 cur=700000
[    2.120629] bcm2835-cpufreq: switching to governor powersave
[    2.126286] bcm2835-cpufreq: switching to governor powersave
[    2.132194] sdhci: Secure Digital Host Controller Interface driver
[    2.138465] sdhci: Copyright(c) Pierre Ossman
[    2.142897] sdhci: Enable low-latency mode
[    2.187705] mmc0: SDHCI controller on BCM2708_Arasan [platform] using platform's DMA
[    2.195708] mmc0: BCM2708 SDHC host at 0x20300000 DMA 2 IRQ 77
[    2.201811] sdhci-pltfm: SDHCI platform and OF driver helper
[    2.209611] ledtrig-cpu: registered to indicate activity on CPUs
[    2.223107] hidraw: raw HID events driver (C) Jiri Kosina
[    2.228856] usbcore: registered new interface driver usbhid
[    2.236518] usbhid: USB HID core driver
[    2.245114] TCP: cubic registered
[    2.250583] Initializing XFRM netlink socket
[    2.254966] NET: Registered protocol family 17
[    2.262906] Key type dns_resolver registered
[    2.271795] registered taskstats version 1
[    2.277238] Waiting for root device /dev/mmcblk0p2...
[    2.282653] Indeed it is in host mode hprt0 = 00021501
[    2.329792] mmc0: read SD Status register (SSR) after 2 attempts
[    2.352230] mmc0: new high speed SDHC card at address 0002
[    2.366514] mmcblk0: mmc0:0002 SD4GB 3.66 GiB 
[    2.372744]  mmcblk0: p1 p2
[    2.434678] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
[    2.443083] VFS: Mounted root (ext4 filesystem) on device 179:2.
[    2.450771] devtmpfs: mounted
[    2.454210] Freeing unused kernel memory: 140K (c05bb000 - c05de000)
[    2.487883] usb 1-1: new high-speed USB device number 2 using dwc_otg
[    2.494520] Indeed it is in host mode hprt0 = 00001101
INIT: version 2.88 booting
[    2.698186] usb 1-1: New USB device found, idVendor=0424, idProduct=9512
[    2.704902] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[    2.718068] hub 1-1:1.0: USB hub found
[    2.722001] hub 1-1:1.0: 3 ports detected
Starting udev
[    3.008031] usb 1-1.1: new high-speed USB device number 3 using dwc_otg
[    3.097488] udevd[77]: starting version 182
[    3.128267] usb 1-1.1: New USB device found, idVendor=0424, idProduct=ec00
[    3.135461] usb 1-1.1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[    3.147132] smsc95xx v1.0.4
[    3.214456] smsc95xx 1-1.1:1.0 eth0: register 'smsc95xx' at usb-bcm2708_usb-1.1, smsc95xx USB 2.0 Ethernet, b8:27:eb:a3:29:2b
[    3.307983] usb 1-1.2: new low-speed USB device number 4 using dwc_otg
[    3.453575] usb 1-1.2: New USB device found, idVendor=1bcf, idProduct=0007
[    3.477828] usb 1-1.2: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[    3.485150] usb 1-1.2: Product: USB Optical Mouse
[    3.691035] input: USB Optical Mouse as /devices/platform/bcm2708_usb/usb1/1-1/1-1.2/1-1.2:1.0/input/input0
[    3.708640] bcm2708_i2c_init_pinmode(0,0)
[    3.712662] bcm2708_i2c_init_pinmode(0,1)
[    3.716902] bcm2708_i2c bcm2708_i2c.0: BSC0 Controller at 0x20205000 (irq 79) (baudrate 100000)
[    3.726744] hid-generic 0003:1BCF:0007.0001: input,hiddev0,hidraw0: USB HID v1.10 Mouse [USB Optical Mouse] on usb-bcm2708_usb-1.2/input0
[    3.941039] bcm2708_spi bcm2708_spi.0: master is unqueued, this is deprecated
[    4.013475] bcm2708_spi bcm2708_spi.0: SPI Controller at 0x20204000 (irq 80)
[    4.110883] bcm2708_i2c_init_pinmode(1,2)
[    4.114934] bcm2708_i2c_init_pinmode(1,3)
[    4.195534] bcm2708_i2c bcm2708_i2c.1: BSC1 Controller at 0x20804000 (irq 79) (baudrate 100000)
[    4.276351] bcm2708-i2s bcm2708-i2s.0: Failed to create debugfs directory
[    7.055518] pcm512x 1-004c: Failed to reset device: -5
[    7.077935] pcm512x: probe of 1-004c failed with error -5
[    7.338730] EXT4-fs (mmcblk0p2): re-mounted. Opts: data=ordered
Starting Bootlog daemon: bootlogd.
Populating dev cache
ALSA: Restoring mixer settings...
/usr/sbin/alsactl: load_state:1729: No soundcards found...
vm.min_free_kbytes = 8192
Tue Nov  4 14:36:00 UTC 2014
INIT: Entering runlevel: 5
Configuring network interfaces... [    9.670550] smsc95xx 1-1.1:1.0 eth0: hardware isn't capable of remote wakeup
udhcpc (v1.22.1) started
Sending discover...
Sending discover...
Sending discover...
No lease, failing
Starting system message bus: dbus.
Starting rpcbind daemon...[   19.421546] NET: Registered protocol family 10
[   19.437384] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
done.
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
[   20.009774] Bluetooth: Core ver 2.16
[   20.015809] NET: Registered protocol family 31
[   20.024316] Bluetooth: HCI device and connection manager initialized
[   20.037918] Bluetooth: HCI socket layer initialized
[   20.043644] Bluetooth: L2CAP socket layer initialized
[   20.050635] Bluetooth: SCO socket layer initialized
[   20.069509] nfc: nfc_init: NFC Core ver 0.1
[   20.089171] NET: Registered protocol family 39
Stopping Bootlog daemon: bootlogd.

Poky (Yocto Project Reference Distro) 1.6.1 raspberrypi /dev/ttyAMA0

raspberrypi login: 

Vamos rodar o Qt5 Cinematic Experience que é um exemplo bastante interessante que visa explorar diversos recursos usando aceleração gráfica por hardware. Para isso faça o login como root e execute o programa: 

Qt5_CinematicExperience -platform eglfs

Note que subimos o aplicativo com a opção “-platform eglfs”, isso configura o Qt para utilizar o OpenGL através do pluging EGLFS.

A figura 1 mostra um screenshot do Qt5 Cinematic Experience.

Raspberry Pi usando Qt5
Figura 1 – Qt5 Cinematic Experience

Agora vamos rodar o exemplo do QtSmartHome:

cd /usr/share/qtsmarthome-1.0/
./smarthome -platform eglfs

A figura 2 mostra um screenshot do QtSmartHome:

Raspberry Pi usando Qt5
Figura 2 – QtSmartHome

Agora vamos rodar o exemplo Qt5EveryWhereDemo:

cd /usr/share/qt5everywheredemo-1.0
./QtDemo -platform eglfs

A figura 3 mostra um screenshot do Qt5EveryWhereDemo:

Raspberry Pi usando Qt5
Figura 3 – Qt5EveryWhereDemo

Aproveite para explorar os diversos exemplos presentes no caminho /usr/share/qt5 e lembre-se de sempre passar a opção “-platform eglfs” quando carregar os programas.

Dicas e Truques

Para remover o cursor piscante na tela rode o comando:

echo 0 > /sys/class/graphics/fbcon/cursor_blink

Para desabilitar o desligamento da saída de vídeo rode o comando:

echo -e '\033[9;0]' > /dev/tty1

O que vem por aí

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

Saiba mais

Embedded Linux Build Systems

Desvendando Yocto Project – Primeiros passos

Raspberrypi + Yocto

Raspberry pi + Qt5 + Yocto

Raspberry Pi + Qt5 + Yocto – parte 2
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
59 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
vinifr
vinifr
05/09/2015 15:55

Ola Diego,

Construí uma imagem com a seguinte configuração:

MACHINE = “raspberrypi”
DISTRO = “poky”
DL_DIR = “/home/projs/extras/dl”
PACKAGE_CLASSES = “package_ipk”
DISTRO_FEATURES_remove = “x11 wayland”
IMAGE_FEATURES += “package-management”
IMAGE_INSTALL += “openssh”
# Set Rpi GPU Memory to 128MB
GPU_MEM = “128”

Compilou tudo ok e gravei a imagem no uSD, mas quando está dando boot, aparece o erro:
Kernel panic – not syncing: No init found. Try passing init= option to kernel.

Você tem a ideia de qual seja o problema? Ocorreu isso comigo e com um amigo meu.

vinifr
vinifr
14/08/2015 15:24

Essas instruções servem para Rasberry A+?

Diego Sueiro
Diego Sueiro
Reply to  vinifr
14/08/2015 15:34

Servem sim.

Michael
Michael
10/07/2015 05:08

I’m trying to run this tutorial, but I keep getting the following error:

ERROR: No recipes available for:
/home/MYHOME/yocto/poky/meta-embarcados/recipes-browser/chromium/chromium_%.bbappend

Summary: There was 1 ERROR message shown, returning a non-zero exit code.

Running nano /home/MYHOME/yocto/poky/meta-embarcados/recipes-browser/chromium/chromium_%.bbappend gives me this:
LDFLAGS += “-Wl,–no-keep-memory”
PARALLEL_MAKE = “-j 4”

Diego Sueiro
Diego Sueiro
Reply to  Michael
10/07/2015 07:30

Michael,

You are not using daisy branch, right?

On daisy branch you are not going to have this problem.

But to bypass this put the following line on your conf/local.conf:
BBMASK = “meta-embarcados/recipes-browser/chromium/chromium_%.bbappend”

joël maranhão
23/05/2015 15:50

quiz experimentar QtWebEngine com um exemplo muito simple tirado dessa pagina https://doc.qt.io/qt-5/qtwebengine-index.html

Sera que QtWebEngine faz parte de algum Qt licensing?

root@raspberrypi2:~# /usr/bin/qt5/qmlscene qb.qml -platform eglfs
file:///home/root/qb.qml:3 module “QtWebEngine” is not installed

Diego Sueiro
Diego Sueiro
Reply to  joël maranhão
23/05/2015 17:22

Você tem que adicionar o qtwebengine no IMAGE_INSTALL da receita da tua imagem.

joël maranhão
Reply to  Diego Sueiro
24/05/2015 07:57

Diego vc me ajudo demais, obrigado mesmo, aprendi bastante.

Eu achei outro erro, mas pra não abusar do seu tempo coloquei no stackoverflow, talvez alguém na comunidade ajude tambem. Acho que esse Unable to fetch URL from any source, cai um pouco fora do seu tutorial. Valeu!

https://stackoverflow.com/questions/30422646/how-do-i-install-qtwebengine-qtwebkit-on-sbc-using-yocto-unable-to-fetch-url

Diego Sueiro
Diego Sueiro
Reply to  joël maranhão
24/05/2015 08:58

Joel,

A receita do está apontando para um branch (1.0) que não existe. Provavelmente ele foi removido. O commit “21f6ce84ecca9a4ff2aa980b21d2e5174c78d14b” agora está no branch “5.5”.

Crie um arquivo qtwebengine_%.bbappend com a seguinte variável:
QT_MODULE_BRANCH = “5.5”

Eu tive que fazer essa modificação para compilar o qtwebengine, porém como ainda não terminei todas as validações eu ainda não subi as modificações no meta-embarcados.

Prepare-se o qtwebengine demora séculos para compilar.

joël maranhão
Reply to  Diego Sueiro
24/05/2015 12:49

Qual seria o lugar recomendado para criar esse `qtwebengine_%.bbappend`, pode ser no folder `meta-embarcados/meta-rpi/recipes-core/images/`

… entre tanto, como estou bastante impatiente, acabei mexendo com o ../poky-dizzy/meta-qt5/recipes-qt/qt5/qtwebengine_5.3.2+git.bb QT_MODULE_BRANCH = “5.5” … com certeza não é o certo, mas parece que esteja fazendo o do_fetch dessa vez e compilou … mas continuo com o mesmo erro “QtWebEngine is not installed” quando quero experimentar meu QML.

Porem no RPi2 achei algo de novo
root@raspberrypi2:~# find / -name QtWeb*
/usr/lib/qt5/libexec/QtWebEngineProcess

fica na pasta *libexec*, eu esperava

/usr/lib/qt5/qml/QtWebEngine

joël maranhão
Reply to  Diego Sueiro
06/06/2015 09:53

UPDATE (so compartilhando caso seja de util a outros)

Para ter o QML plugins tambem tive que aditionar qtwebengine-qmlplugins

veja mais informação nessa thread https://stackoverflow.com/questions/30422646/how-to-install-run-qml-qtwebengine-qtwebkit-on-sbc-using-yocto-unable-to-f

Agora consigo lançar meu QtWebEngine QML, so que tenho que importar versão 0.9 (not 1.0) … infelizmente estou com um novo problema, QtWebEngine não abre a pagina web

https://stackoverflow.com/questions/30682749/running-simple-qtwebengine-app-on-raspberry-pi-2-page-not-showing

Tempo para ler a Parte 2 do seu tutorial. Obrigado!!!

joël maranhão
23/05/2015 10:24

Oi, Eu preciso acertar um parametros video no /boot/config.txt, na imagem que acabo de criar esse file não existe, eu adicionei pensando que a RPi2 iria simplemente ler o config.txt no boot, mas talvez o workflow seja differente.

no meu config.txt

hdmi_force_hotplug=1
# uncomment to force a specific HDMI mode (here we are forcing 800x480!)
hdmi_group=2
hdmi_mode=1
hdmi_mode=87
hdmi_cvt 800 480 60 6 0 0 0
max_usb_current=1

algumas ideia de como se faz isso? existem recipes para o config.txt?

Diego Sueiro
Diego Sueiro
Reply to  joël maranhão
23/05/2015 10:42

Joel,

Tem algumas variáveis do config.txt que você consegue alterar no local.conf:
https://git.yoctoproject.org/cgit/cgit.cgi/meta-raspberrypi/about/

A receita que implementa isso é:
https://git.yoctoproject.org/cgit/cgit.cgi/meta-raspberrypi/tree/recipes-bcm/bootfiles/rpi-config_0.1.bb?id=14734e73a3e77ed66d21ab1fb734350478b08d54

Você pode criar um bbappend para adicionar as variáveis que você deseja e ainda adicionar a Rpi2 como compatível através dessa variável no bbappend também:
COMPATIBLE_MACHINE += “raspberrypi2”

Para que este arquivo esteja na imagem é preciso que você adicione no IMAGE_INSTALL o pacote rpi-config.

joël maranhão
Reply to  Diego Sueiro
25/05/2015 10:45

bem, eu tentei algo criei o archivo ./poky-dizzy/meta-embarcados/meta-rpi/recipes-core/images/rpi-config_%.bbappend com o seguinte COMPATIBLE_MACHINE += "raspberrypi2" IMAGE_INSTALL += " rpi-config " depois otto@Marcus Vinícius Martins Meneses:~/yocto/build-dizzy$ bitbake qt5-image-demo Loading cache: 100% Loaded 1952 entries from dependency cache. Parsing recipes: 100% Parsing of 1501 .bb files complete (1500 cached, 1 parsed). 1951 targets, 197 skipped, 0 masked, 0 errors. NOTE: Resolving any missing task queue dependencies ERROR: Nothing RPROVIDES 'rpi-config' (but /home/otto/yocto/build-dizzy/../poky-dizzy/meta-raspberrypi/recipes-bsp/bootfiles/bcm2835-bootfiles.bb RDEPENDS on or otherwise requires it) ERROR: rpi-config was skipped: incompatible with machine raspberrypi2 (not in COMPATIBLE_MACHINE) NOTE: Runtime target 'rpi-config' is unbuildable, removing... Missing or unbuildable dependency chain was: ['rpi-config']… Leia mais »

Diego Sueiro
Diego Sueiro
Reply to  joël maranhão
25/05/2015 11:42

Joel, Você misturou as configurações em uma receita só. Vamos por partes. rpi-config: “meta-embarcados/meta-rpi/recipes-bsp/bootfiles/rpi-config_git.bbappend” com o conteúdo: COMPATIBLE_MACHINE += “raspberrypi2” do_deploy[dirs]_remove = “${DEPLOYDIR}/bcm2835-bootfiles” qt5-image-demo: “meta-embarcados/meta-bbb/recipes-core/images/qt5-image-demo.bbappend”: IMAGE_INSTALL += ” packagegroup-qt5-machine-related rpi-config ” Veja se agora vai. Mas note que as variáveis que você quer configurar não estão sendo consideradas na receita original “meta-raspberrypi/recipes-bsp/bootfiles/rpi-config_git.bb”. Para implementá-las você terá que no arquivo “meta-embarcados/meta-rpi/recipes-bsp/bootfiles/rpi-config_git.bbappend” criar a função abaixo e incluir as variáveis: do_deploy_append() { echo “hdmi_force_hotplug=1” >>${DEPLOYDIR}/bcm2835-bootfiles/config.txt echo “hdmi_group=2” >>${DEPLOYDIR}/bcm2835-bootfiles/config.txt echo “hdmi_mode=1” >>${DEPLOYDIR}/bcm2835-bootfiles/config.txt echo “hdmi_mode=87” >>${DEPLOYDIR}/bcm2835-bootfiles/config.txt echo “hdmi_cvt 800 480 60 6 0 0 0” >>${DEPLOYDIR}/bcm2835-bootfiles/config.txt echo “max_usb_current=1” >>${DEPLOYDIR}/bcm2835-bootfiles/config.txt } Eu não testei essas… Leia mais »

joël maranhão
Reply to  Diego Sueiro
25/05/2015 12:11

eu até não me importo colocar as variáveis depois manualmente, mas acho bem legal que se possa configurar com Yocto.

O que faz esse do_deploy[dirs]_remove? ele deu um ParseError, mas nao tou vendo o que esta errado?


ERROR: ParseError at /home/otto/yocto/build-dizzy/../poky-dizzy/meta-embarcados/recipes-bsp/bootfiles/rpi-config_git.bbappend:2: unparsed line: 'do_deploy[dirs]_remove = "${DEPLOYDIR}/bcm2835-bootfiles"' | ETA: --:--:--

Diego Sueiro
Diego Sueiro
Reply to  joël maranhão
25/05/2015 12:22

Remove essa linha e vê se vai.

joël maranhão
Reply to  Diego Sueiro
25/05/2015 12:44

Sim eu tentei isso logo que teve o erro, mas deu

ERROR: Nothing RPROVIDES 'rpi-config' (but /home/otto/yocto/build-dizzy/../poky-dizzy/meta-embarcados/recipes-core/images/qt5-image-demo.bb, /home/otto/yocto/build-dizzy/../poky-dizzy/meta-raspberrypi/recipes-bsp/bootfiles/bcm2835-bootfiles.bb RDEPENDS on or otherwise requires it)
ERROR: rpi-config was skipped: incompatible with machine raspberrypi2 (not in COMPATIBLE_MACHINE)
NOTE: Runtime target 'rpi-config' is unbuildable, removing...
Missing or unbuildable dependency chain was: ['rpi-config']
ERROR: Required build target 'qt5-image-demo' has no buildable providers.
Missing or unbuildable dependency chain was: ['qt5-image-demo', 'rpi-config']

joël maranhão
Reply to  joël maranhão
26/05/2015 19:26

UPDATE

Entretanto consegui resolver meu showstopper com o config.txt (mas não resolvi o error ainda)

https://raspberrypi.stackexchange.com/questions/31842/how-do-i-generate-configure-config-txt-for-raspberry-pi2-using-yocto

Minha verdadeira dor de cabeça é fazer instalar QtWebEngine para QML no meu RPi2. Passando essa etapa terei resolvido o meu objetivo principal e.g. run Chromium layout engine on RPi2. Isso ainda não vi em nenhum tutorial.

joël maranhão
20/05/2015 11:20

Como posso adaptar a configuração para Raspberry Pi 2?

Diego Sueiro
Diego Sueiro
Reply to  joël maranhão
20/05/2015 11:46

Olá Joel,

Estou para soltar um post para fazer justamente isso.

Mas por hora use o meta-raspberrypi no branch “fido” ou “master”.
E o meta-embarcados no branch “dizzy”.
No local.conf coloque MACHINE = “raspberrypi2”

Eu ainda não testei, portanto não tenho como garantir que vá funcionar. 😉

joël maranhão
Reply to  Diego Sueiro
20/05/2015 13:06

Fantastico. Muito obrigado Diego.

Entre tanto tambem achei esse link interessante https://www.cnx-software.com/2015/02/27/yocto-project-raspberry-pi-2-board-minimal-image/

Mais uma vez valeu, abraço de Baden-Baden, Germany

joël maranhão
Reply to  Diego Sueiro
21/05/2015 19:36

testei o seguinte mkdir -p ~/yocto/dl cd ~/yocto git clone -b daisy git://git.yoctoproject.org/poky poky-daisy cd poky-daisy git clone git://git.yoctoproject.org/meta-raspberrypi git clone -b dizzy https://github.com/meta-qt5/meta-qt5.git git clone -b daisy git://git.openembedded.org/meta-openembedded git clone -b dizzy https://bitbucket.org/embarcados/meta-embarcados.git cd ~/yocto . poky-daisy/oe-init-build-env build-daisy bitbake qt5-image-demo mas deu um error 🙁 vou tentar de novo amanha, mas se o erro inspirar qualquer solução, I’ll take any pointers otto@Marcus Vinícius Martins Meneses:~/yocto/build-daisy$ bitbake qt5-image-demo WARNING: Host distribution "Debian-7.8" has not been validated with this version of the build system; you may possibly experience unexpected failures. It is recommended that you use a tested distribution. Loading cache:… Leia mais »

Diego Sueiro
Diego Sueiro
Reply to  joël maranhão
22/05/2015 06:11

Joel,

Coloca todos os repos no dizzy com exceção do meta-raspberrypi.
E atualiza a tua cópia local do meta-embarcados que eu adicionei uns fixes.

joël maranhão
Reply to  Diego Sueiro
22/05/2015 09:12

fixe, avancei mais um pouco mas agora tenho outra probleminha. (sou completamente newbie com Yocto e Qt)


NOTE: Resolving any missing task queue dependencies
ERROR: Nothing RPROVIDES 'qttranslations' (but /home/otto/yocto/build-dizzy/../poky-dizzy/meta-embarcados/recipes-core/packagegroups/packagegroup-qt5.bb RDEPENDS on or otherwise requires it)
NOTE: Runtime target 'qttranslations' is unbuildable, removing...
Missing or unbuildable dependency chain was: ['qttranslations']
NOTE: Runtime target 'packagegroup-qt5-base' is unbuildable, removing...
Missing or unbuildable dependency chain was: ['packagegroup-qt5-base', 'qttranslations']
ERROR: Required build target 'qt5-image-demo' has no buildable providers.
Missing or unbuildable dependency chain was: ['qt5-image-demo', 'packagegroup-qt5-base', 'qttranslations']

Diego Sueiro
Diego Sueiro
Reply to  joël maranhão
22/05/2015 09:46

Putz,

Esqueci de tirar o qttranslations. Atualiza o repo do meta-embarcados novamente que eu corrigi.

joël maranhão
Reply to  Diego Sueiro
22/05/2015 10:15

Funcionou! 🙂 agora o error ta com o meta-qt5

BTW Aonde é que vc define o qt5-image-demo


ERROR: Nothing PROVIDES 'ruby-native' (but /home/otto/yocto/build-dizzy/../poky-dizzy/meta-qt5/recipes-qt/qt5/qtwebkit_5.3.2.bb DEPENDS on or otherwise requires it). Close matches:
db-native
bc-native
byacc-native
NOTE: Runtime target 'qtquick1' is unbuildable, removing...
Missing or unbuildable dependency chain was: ['qtquick1', 'qtwebkit', 'ruby-native']
NOTE: Runtime target 'packagegroup-qt5-base' is unbuildable, removing...
Missing or unbuildable dependency chain was: ['packagegroup-qt5-base', 'qtquick1', 'qtwebkit', 'ruby-native']
ERROR: Required build target 'qt5-image-demo' has no buildable providers.
Missing or unbuildable dependency chain was: ['qt5-image-demo', 'packagegroup-qt5-base', 'qtquick1', 'qtwebkit', 'ruby-native']

Diego Sueiro
Diego Sueiro
Reply to  joël maranhão
22/05/2015 10:30

Joel,

Agora no arquivo conf/bblayers.conf adicione a linha:
${TOPDIR}/../poky-daisy/meta-openembedded/meta-ruby

joël maranhão
Reply to  Diego Sueiro
22/05/2015 11:29

it’s building!!!! so far so good. Valeu! otto@Marcus Vinícius Martins Meneses:~/yocto/build-dizzy$ bitbake qt5-image-demo WARNING: Host distribution "Debian-7.8" has not been validated with this version of the build system; you may possibly experience unexpected failures. It is recommended that you use a tested distribution. Parsing recipes: 100% |########################################################################################################################################################################################| Time: 00:01:13 Parsing of 1501 .bb files complete (0 cached, 1501 parsed). 1951 targets, 196 skipped, 0 masked, 0 errors. NOTE: Resolving any missing task queue dependencies Build Configuration: BB_VERSION = "1.24.0" BUILD_SYS = "x86_64-linux" NATIVELSBSTRING = "Debian-7.8" TARGET_SYS = "arm-poky-linux-gnueabi" MACHINE = "raspberrypi2" DISTRO = "poky" DISTRO_VERSION = "1.7.2" TUNE_FEATURES = "arm… Leia mais »

Diego Sueiro
Diego Sueiro
Reply to  joël maranhão
22/05/2015 11:46

Boa.

Agora vai almoçar e depois relaxa que no final do dia você vai ter a imagem pronta.

joël maranhão
Reply to  Diego Sueiro
23/05/2015 07:12

Funcionou certinho!!

Marcelo Anjos
Marcelo Anjos
08/03/2015 00:13

Caro Digo ,agora 2 hs depois outro erro !!!

conhece …

WARNING: Failed to fetch URL git://qt.gitorious.org/qt/qt3d.git;branch=dev, attempting MIRRORS if available
ERROR: Fetcher failure: Fetch command failed with exit code 128, output:
Cloning into bare repository ‘/home/panetone/yocto/build-daisy/../dl/git2/qt.gitorious.org.qt.qt3d.git’…
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

ERROR: Function failed: Fetcher failure for URL: ‘git://qt.gitorious.org/qt/qt3d.git;branch=dev’. Unable to fetch URL from any source.
ERROR: Logfile of failure stored in: /home/panetone/yocto/build-daisy/tmp/work/armv6-vfp-poky-linux-gnueabi/qt3d/5.3.99+5.4.0-beta1+gitAUTOINC+8a9723d742-r0/temp/log.do_fetch.4674
ERROR: Task 282 (/home/panetone/yocto/build-daisy/../poky-daisy/meta-qt5/recipes-qt/qt5/qt3d_git.bb, do_fetch) failed with exit code ‘1’

Marcelo Anjos
Marcelo Anjos
Reply to  Marcelo Anjos
08/03/2015 17:19

Caro Diego
Consegui fazer bitbake com o seguinte comando

bitbake -k core-image-minimal

pois me parece que este qt3d saiu do git

tem como compilar o resto eliminando apenas este???

obrigado

Diego Sueiro
Diego Sueiro
Reply to  Marcelo Anjos
08/03/2015 17:25

Marcelo,

Sim, tem algum problema no repo do qt3d e dá pra criar uma imagem sem ele, mas só que eu só terei acesso ao meu PC amanhã para poder te passar as instruções.

Marcelo Anjos
Marcelo Anjos
Reply to  Diego Sueiro
08/03/2015 17:41

ok obrigado
se não for encomodar. desculpe postar hj..
abraços

Diego Sueiro
Diego Sueiro
Reply to  Marcelo Anjos
09/03/2015 15:35

Marcelo,

Você tentou construir a imagem novamente? Verifiquei no repo do qt3d e o endereço está correto, pode ser que ocorreu alguma instabilidade.

Marcelo Anjos
Marcelo Anjos
Reply to  Diego Sueiro
09/03/2015 16:27

Mesmo def…

ouvi algumas pessoas falarem que se deve mudar a config do qt5

para DEV, mas não sei onde mudar isto pois usaria outros fontes???

acho que este problema apareceu para as pessoas que tentaram compilar após janeiro deste ano !!!!

vou ver se consigo algo ai posto aqui, mas mesmo assim obrigado pela ajuda…

Marcelo Anjos
Marcelo Anjos
07/03/2015 16:10

Belo Tutorial Diego

Tive um probleminha, refiz por 2 vezes, mas aparece o erro abaixo,pode me ajudar…

abraços

Diego Sueiro
Diego Sueiro
Reply to  Marcelo Anjos
07/03/2015 16:22

Olá Marcelo,

Obrigado pelo apoio.

Nunca me deparei com esse erro antes.
Qual é o tipo de sistema de arquivos que está instalado o ambiente?

Marcelo Anjos
Marcelo Anjos
Reply to  Diego Sueiro
07/03/2015 16:50

ubuntu 14.04 64 bits
kernell 3.13.0-47-generic

Diego Sueiro
Diego Sueiro
Reply to  Marcelo Anjos
07/03/2015 16:31

Marcelo,

Dei uma pesquisada e esse erro pode estar relacionado ao uso do eCryptfs como sistema de arquivos.
Se este for o teu caso, sugiro que crie outro usuário sem criptografia do home.

Marcelo Anjos
Marcelo Anjos
Reply to  Diego Sueiro
07/03/2015 16:51

Boa…

pode ser… vou tentar

te informo , e novamente PARABÊNS pelos seus tutoriais,,estão sendo muito úteis !!!!

abração

Marcelo Anjos
Marcelo Anjos
Reply to  Marcelo Anjos
07/03/2015 17:24

Vc … Sabeeee..

era isto o problema.

obrigado.

Fernando de França
10/12/2014 11:56

Digamos que eu queira incluir na imagem coisas essenciais como dpkg, apt-get, open-ssh… por onde começo?

Diego Sueiro
Diego Sueiro
Reply to  Fernando de França
10/12/2014 14:59

Fernando,

Para usar o dpkg como gerenciador de pacote você terá que editar o arquivo “conf/local.conf” da seguinte maneira:
PACKAGE_CLASSES = “deb”

A maneira mais simples de se adicionar pacotes em uma imagem é editar o arquivo “conf/local.conf” usando a variável IMAGE_INSTALL.
Por exemplo:

IMAGE_INSTALL += “apt openssh”

Para ver quais são os pacotes disponíveis acesse essa ferramenta:
https://layers.openembedded.org/layerindex/branch/master/recipes/

Se tiver algum problema avise.

joël maranhão
Reply to  Diego Sueiro
23/05/2015 07:11

Diego eu tentei (mas com Raspberry Pi2) e deu um error


otto@Marcus Vinícius Martins Meneses:~/yocto/build-dizzy$ bitbake qt5-image-demo
ERROR: Traceback (most recent call last):
File "/home/otto/yocto/poky-dizzy/bitbake/lib/bb/cookerdata.py", line 174, in wrapped
return func(fn, *args)
File "/home/otto/yocto/poky-dizzy/bitbake/lib/bb/cookerdata.py", line 188, in _inherit
bb.parse.BBHandler.inherit(bbclass, "configuration INHERITs", 0, data)
File "/home/otto/yocto/poky-dizzy/bitbake/lib/bb/parse/parse_py/BBHandler.py", line 92, in inherit
include(fn, file, lineno, d, "inherit")
File "/home/otto/yocto/poky-dizzy/bitbake/lib/bb/parse/parse_py/ConfHandler.py", line 100, in include
raise ParseError("Could not %(error_out)s file %(fn)s" % vars(), oldfn, lineno)
ParseError: ParseError in configuration INHERITs: Could not inherit file classes/deb.bbclass

ERROR: Unable to parse deb: ParseError in configuration INHERITs: Could not inherit file classes/deb.bbclass

Diego Sueiro
Diego Sueiro
Reply to  joël maranhão
23/05/2015 08:58

Hummm, erro nada sugestivo.

Vou tentar replicar esse build aqui e te dou um retorno.

joël maranhão
Reply to  Diego Sueiro
23/05/2015 10:40

Mas consegui install packages deixando

PACKAGE_CLASSES = “package_ipk” # conf/local.conf

e adicionando

# ./poky-dizzy/meta-embarcados/meta-rpi/recipes-core/images/qt5-image-demo.bbappend

IMAGE_INSTALL += ”
packagegroup-qt5-machine-related
apt
openssh

depois de criar minha imagem pude acessar meu RPi2 via SSH!! 🙂 legal!

Claudio
Claudio
03/12/2014 00:02

acesso aos GPIO, I2C, SPI e UART é possível usando o yocto com a raspberry?

Diego Sueiro
Diego Sueiro
Reply to  Claudio
03/12/2014 05:53

Olá Claudio,

Sim é possível. O Linux kernel utilizado pelo Yocto é o mesmo do Raspbian.

Abraços

Claudio
Claudio
Reply to  Diego Sueiro
03/12/2014 19:23

Show! valeu Diego!
Abraços

Home » Software » Interface Gráfica » Raspberry Pi + Qt5 + Yocto – parte 1

EM DESTAQUE

WEBINARS

VEJA TAMBÉM

JUNTE-SE HOJE À COMUNIDADE EMBARCADOS

Talvez você goste: