ÍNDICE DE CONTEÚDO
- Beaglebone Black + Qt Embedded + Yocto – parte 1
- Beaglebone Black + Qt Embedded + Yocto – parte 2
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:
1 2 3 4 5 |
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:
1 2 |
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:
1 |
${TOPDIR}/../poky-dora/meta-ti \ |
Modifique e adicione as seguintes variáveis no arquivo ~/yocto/build-dora/conf/local.conf
1 2 3 4 5 6 7 8 |
#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.
1 2 3 |
cd ~/yocto . poky-dora/oe-init-build-env build-dora bitbake qt4e-demo-image |
Esta é a configuração de build que foi utilizada:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
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:
1 2 |
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:
1 2 |
dmesg sudo fdisk -l |
Caso, por exemplo, o device node criado seja /dev/sdb, use o seguinte comando:
1 2 3 |
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 :
1 2 3 4 5 |
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:
1 2 3 4 5 6 |
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:
O log 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 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 |
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 (dsueiro@dsueiro-N46VM) (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 /pinmux@44e10800/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 <giometti@linux.it> [ 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.
Boa tarde.
Será que alguém pode me dá a dica de como resolver este problema.
Sempre que sigo as dicas postadas aqui pelo Diego, recebo sempre estes mesmos erros e processo se encerra.
Tentando entender o que está acontecendo, uma das coisas que vi, foi que alguns destes links estão “quebrados”, digo quebrados pois por exemplo:
O QT 4.8.5 já não está mais disponível, acredito por ter sido substituído pelo QT 4.8.6 já que foram feitas muitas correções.
Abaixo segue um link ctrl-c ctrl-v do que sempre recebo.
https://pastebin.com/jPrrrPuL
Desde já agradeço.
Olá Ivan,
Obrigado por reportar esse problema.
O download do Qt 4.8.5 foi movido de lugar.
O novo caminho agora é:
https://download.qt-project.org/archive/qt/4.8/4.8.5/
Você terá que corrigir a receita do Yocto para ele buscar no novo caminho.
Para isso edite o arquivo: meta/recipes-qt/qt4/qt4-4.8.5.inc
Na variável “SRC_URI” substitua o texto “official_releases” por “archive”.
Vou verificar já existe um patch para consertar isso no repositório do Yocto, caso contrário mandarei a correção.
Abraços.
Olá Diego, Obrigado por responder a minha dúvida. Depois de mais algumas tentativas, consegui compilar. Porem tenho outro problema. Sempre que rodo algum dos exemplos desta tela do QT que abre na inicialização, alguns segundos depois após uns cliques do mouse a tela congela, e só reiniciando. Alguma dica? Desculpe se as perguntas são muito óbvias, mais é que no mundo bare-metal onde tenho intimidade, não tenho estas dores de cabeça. É tudo na unha. ======================================================= Desculpe pelo OFF-TOPIC, procurei aqui no site o lugar correto para sugestões e não encontrei. Algum tempo atrás, tive um cliente que queria desenvolver… Leia mais »
Ivan, A melhor maneira de sabermos o que está acontecendo é verificar se o demo do Qt está logando mensagens de erro na console. Para isso você terá que conectar um cabo serial na BBB. Aqui você encontra como fazer essa conexão: https://sergioprado.org/acessando-a-console-serial-na-beaglebone-black/ Depois de estar logado na serial (usuário root sem senha) mate a aplicação demo do Qt com o comando: pkill qtdemoE . Reinicie a aplicação com o comando: qtdemoE -qws Informe quais as mensagens que são mostradas quando você tenta abrir alguns dos demos. Em relação ao NuttX. Eu nunca usei. Sugiro que você use a seção… Leia mais »
Bom dia Diego,
Estava pesquisando sobre conexões SSH utilizando o Yocto e
pelo pouco que vi deve-se adicionar algo (IMAGE_INSTALL += “ppp
openssh”) na hora de gerar a imagem (comando bitbake), é correto isso?
Eu quero a conexão SSH para instalar um VNC no Yocto de dessa forma eu acessaria a BBB pelo VNC (Eu não tenho um monitor HDMI)
Isso era uma facilidade do Angstrom, pois era só espetar o USB e conectar com o Putty SSH no ip 192.168.7.2
Você conhece algum outro jeito de fazer isso?
Olá Gustavo. Boas perguntas. Vamos por partes. Para adicionar suporte a ssh na imagem você deve adicionar a linha abaixo no arquivo conf/local.conf: IMAGE_FEATURES += ” ssh-server-openssh ” Para usar o Qt embedded com VNC você terá que adicionar na imagem o pluging que dá suporte ao VNC. Para isso adicione a linha abaixo no arquivo conf/local.conf (não tenho certeza se irá funcionar pois nunca fiz isso): IMAGE_INSTALL_append = ” qt4-embedded-plugin-gfxdriver-gfxvnc” Seguem uma referência sobre qt embedded com vnc: https://qt-project.org/doc/qt-4.8/qt-embedded-vnc.html Para que a interface USB OTG funcione como gadget ethernet basta adicionar a linha abaixo no arquivo conf/local.conf: IMAGE_INSTALL_append =… Leia mais »
Diego, Desculpe a demora, consegui gerar a nova imagem com esses adicionais, mas só vou conseguir testar a conexão SSH e o VNC no sábado provavelmente, apenas liguei no HDMI a BBB e funcionou. Também acrescentei a camada do Qt 5 que me passou pelo email, não sei se fiz o modo correto, mas aparentemente funcionou ou não interferiu em nada na geração da imagem: Adicionei a camada meta-qt5 (https://github.com/meta-qt5/meta-qt5) e adicionei tambem a seguinte linha no arquivo BBLAYERS: ${TOPDIR}/../poky-dora/meta-qt5 Não sei se algum outro procedimento deve ser feito ou se é apenas isso. Algumas considerações, o gadget-init eu acho… Leia mais »
Gustavo,
Para ser acesso a console serial da placa você deve usar o minicom (no host) e conectar uma cabo USB-Serial (TTL) na BBB:
https://elinux.org/Beagleboard:BeagleBone_Black_Accessories#Serial_Debug_Cables
Sobre o gadget-init dê o comando “lsmod” na placa e me passe o resultado. Mas olhando a receita dele no Yocto me parece que o suporte a subida automática só está presente com o systemd. Dê uma olhada no script q-ether-load.sh e tente rodá-lo na mão para ver se funciona:
https://git.yoctoproject.org/cgit/cgit.cgi/meta-ti/tree/recipes-ti/beagleboard/gadget-init.bb?h=dora
https://git.yoctoproject.org/cgit/cgit.cgi/meta-ti/tree/recipes-ti/beagleboard/gadget-init?h=dora
https://git.yoctoproject.org/cgit/cgit.cgi/meta-ti/tree/recipes-ti/beagleboard/gadget-init/g-ether-load.sh?h=dora
Boa noite Diego,
Segui todos os passos do post, mas no ultimo comando onde você diz que é importante por conta do uso do mouse, ocorreu um erro.
A pasta /media/rootfs/etc/modules não existe.
Não teria que descompactar mais algum arquivo no sistema de arquivos?
Abraço
Eduardo Scherrer
Eduardo,
Obrigado pelo aviso.
Fui verificar o comando e estava dando permissão negada.
Atualizei a lista de comandos. Veja se está funcionando e não esqueça de verificar o ponto de montagem do cartão.
Abraços
Boa noite Diego,
Segui as suas alterações, mas ainda faltaram alguns arquivos a serem copiados. Segui os passos do tutorial do Henrique e foi.
Faltou copiar o zImage, uEvent.txt o .dtb.
Outra coisa que fiz diferente foi o local do arquivo local.conf.
Como eu não tinha o “kiosk” instalado, o caminho seguido foi: “yocto/build-dora/conf/local.conf”.
Daí funcionou.
Agora apareceu a demonstração do Qt.
Abraço.
Olá Ricardo, Na verdade estava errado no tutorial e já corrigi. O caminho correto do local.conf é esse que você utilizou: “yocto/build-dora/conf/local.conf”. Sobre a cópia dos arquivos zImage, uEnv.txt e o .dtb, é opcional. O Henrique mudou os variáveis de do boot quando inseriu o arquivo uEnv.txt na partição FAT do cartão. O uso desse uEnv.txt faz-se necessário se você já possui algum sistema operacional instalado no eMMC da BBB e não quer ficar segurando o botão “Boot Switch” durante os primeiros segundo de power-up da placa. Obrigado por reportar as falhas no tutorial. Na próxima semana publicaremos a segunda… Leia mais »