ÍNDICE DE CONTEÚDO
- Beaglebone Black + Qt5 + Yocto – Parte 1
- Beaglebone Black + Qt5 + Yocto – Parte 2
Nesta série de artigos sobre o uso do Yocto Project veremos como criar uma distribuição Linux embarcado com o Qt5 para a Beaglebone Black usando seu acelerador gráfico SGX530. 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.
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:
1 2 |
sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib \ build-essential chrpath libsdl1.2-dev xterm |
Fedora:
1 2 3 |
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:
1 2 |
sudo zypper install python gcc gcc-c++ git chrpath make wget python-xml \ diffstat texinfo python-curses patch libSDL-devel xterm |
CentOS:
1 2 |
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:
1 2 3 4 5 6 7 8 |
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-ti 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-ti que possui o BSP (Board Support Package) com os fontes necessários (u-boot, kernel, drivers para o acelerador gráfico, etc.) para rodar a nossa distribuição na Beaglebone Black. 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:
1 2 |
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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# 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-bbb \ ${TOPDIR}/../poky-daisy/meta-ti \ ${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:
1 2 3 4 5 |
MACHINE = "beaglebone" DISTRO = "poky" DL_DIR = "${TOPDIR}/../dl" PACKAGE_CLASSES = "package_ipk" DISTRO_FEATURES_remove = "x11 wayland" |
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 e usaremos o gerenciador de pacotes ipk (ele é mais indicado para sistemas embarcados porque não exige muitos recursos para funcionar).
Gerando a imagem
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).
1 2 3 |
cd ~/yocto . poky-daisy/oe-init-build-env build-daisy bitbake qt5-image-demo |
Esta é a configuração de build que foi utilizada:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Build Configuration: BB_VERSION = "1.22.0" BUILD_SYS = "x86_64-linux" NATIVELSBSTRING = "Ubuntu-14.04" TARGET_SYS = "arm-poky-linux-gnueabi" MACHINE = "beaglebone" DISTRO = "poky" DISTRO_VERSION = "1.6.2" TUNE_FEATURES = "armv7a vfp thumb neon callconvention-hard cortexa8" TARGET_FPU = "vfp-neon" meta-embarcados meta-bbb = "daisy:434dc81fcb7fe630c107ef172afc33ce62e335db" meta-ti = "daisy:5532d8df96caaa6ac73ff825f36e7f11793c7060" meta-qt5 = "dizzy:0208b397d1929444aef2dca1780fe7fc1d898157" meta-oe = "daisy:d3d14d3fcca7fcde362cf0b31411dc4eea6d20aa" meta meta-yocto meta-yocto-bsp = "daisy:5fcab03423d56c0f638e281db52e992a3f647903" |
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 |
cd ~/yocto/build-daisy/tmp/deploy/images/beaglebone cp MLO /media/boot cp u-boot.img /media/boot sudo tar xzf qt5-image-demo-beaglebone.tar.gz -C /media/rootfs ; sync |
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 da placa. Você precisará acessar o sistema via conexão serial. Para fazer a conexão entre o HOST e a BBB siga os passos da seção “Configuring Serial Communication” do tutorial da Timesys.
NOTA:
Se você tiver instalado algum outro sistema operacional no eMMC da BBB energize a placa pressionando a switch que fica próxima ao slot do microSD. Isso fará com que o processador busque o MLO e u-boot que estão contidos no microSD ao invés do eMMC.
Abaixo segue o log da serial depois do boot do sistema:
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 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 |
U-Boot SPL 2014.07 (Oct 21 2014 - 11:05:17) MMC: block number 0x100 exceeds max(0x0) MMC: block number 0x200 exceeds max(0x0) *** Error - No Valid Environment Area found<code> Using default environment reading u-boot.img reading u-boot.img U-Boot 2014.07 (Oct 21 2014 - 11:05:17) I2C: ready DRAM: 512 MiB MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1 Using default environment Net: <ethaddr> not set. Validating first E-fuse MAC cpsw, usb_ether Hit any key to stop autoboot: 0 switch to partitions #0, OK mmc0 is current device SD/MMC found on device 0 reading uEnv.txt ** Unable to read file uEnv.txt ** 4881552 bytes read in 322 ms (14.5 MiB/s) 31676 bytes read in 66 ms (467.8 KiB/s) Kernel image @ 0x82000000 [ 0x000000 - 0x4a7c90 ] ## Flattened Device Tree blob at 88000000 Booting using the fdt blob at 0x88000000 Loading Device Tree to 8fff5000, end 8ffffbbb ... OK Starting kernel ... [ 0.000000] Booting Linux on physical CPU 0x0 [ 0.000000] Linux version 3.14.19 (dsueiro@dsueiro-N46VM) (gcc version 4.8.2 (GCC) ) #1 Tue Oct 21 10:27:29 BRST 2014 [ 0.000000] CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=10c5387d [ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache [ 0.000000] Machine model: TI AM335x BeagleBone [ 0.000000] cma: CMA: reserved 24 MiB at 9e000000 [ 0.000000] Memory policy: 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: 129792 [ 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: 478672K/523264K available (6491K kernel code, 436K rwdata, 2520K rodata, 327K init, 5513K bss, 44592K 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 - 0xc08d5198 (9013 kB) [ 0.000000] .init : 0xc08d6000 - 0xc0927e8c ( 328 kB) [ 0.000000] .data : 0xc0928000 - 0xc0995350 ( 437 kB) [ 0.000000] .bss : 0xc0995350 - 0xc0ef79a8 (5514 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.000011] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 178956969942ns [ 0.000051] OMAP clocksource: timer1 at 24000000 Hz [ 0.000705] Console: colour dummy device 80x30 [ 0.000751] Lock dependency validator: Copyright (c) 2006 Red Hat, Inc., Ingo Molnar [ 0.000758] ... MAX_LOCKDEP_SUBCLASSES: 8 [ 0.000764] ... MAX_LOCK_DEPTH: 48 [ 0.000770] ... MAX_LOCKDEP_KEYS: 8191 [ 0.000776] ... CLASSHASH_SIZE: 4096 [ 0.000782] ... MAX_LOCKDEP_ENTRIES: 16384 [ 0.000788] ... MAX_LOCKDEP_CHAINS: 32768 [ 0.000794] ... CHAINHASH_SIZE: 16384 [ 0.000800] memory used by lock dependency info: 3695 kB [ 0.000806] per task-struct memory footprint: 1152 bytes [ 0.000847] Calibrating delay loop... 996.14 BogoMIPS (lpj=4980736) [ 0.079199] pid_max: default: 32768 minimum: 301 [ 0.079416] Security Framework initialized [ 0.079493] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes) [ 0.079505] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes) [ 0.096475] CPU: Testing write buffer coherency: ok [ 0.097588] Setting up static identity map for 0x80628ce8 - 0x80628d58 [ 0.101484] devtmpfs: initialized [ 0.105081] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 3 [ 0.133556] omap_hwmod: tptc0 using broken dt data from edma [ 0.133851] omap_hwmod: tptc1 using broken dt data from edma [ 0.134132] omap_hwmod: tptc2 using broken dt data from edma [ 0.141047] omap_hwmod: debugss: _wait_target_disable failed [ 0.199476] pinctrl core: initialized pinctrl subsystem [ 0.203700] regulator-dummy: no parameters [ 0.207293] NET: Registered protocol family 16 [ 0.211911] DMA: preallocated 256 KiB pool for atomic coherent allocations [ 0.218313] cpuidle: using governor ladder [ 0.218336] cpuidle: using governor menu [ 0.229828] platform 49000000.edma: alias fck already exists [ 0.229861] platform 49000000.edma: alias fck already exists [ 0.229878] platform 49000000.edma: alias fck already exists [ 0.233687] OMAP GPIO hardware version 0.1 [ 0.263501] No ATAGs? [ 0.263527] hw-breakpoint: debug architecture 0x4 unsupported. [ 0.326186] bio: create slab <bio-0> at 0 [ 0.361117] edma-dma-engine edma-dma-engine.0: TI EDMA DMA engine driver [ 0.363290] vmmcsd_fixed: 3300 mV [ 0.369485] vgaarb: loaded [ 0.370795] i2c-core: driver [palmas] using legacy suspend method [ 0.370808] i2c-core: driver [palmas] using legacy resume method [ 0.372233] SCSI subsystem initialized [ 0.375713] usbcore: registered new interface driver usbfs [ 0.376111] usbcore: registered new interface driver hub [ 0.376678] usbcore: registered new device driver usb [ 0.378876] omap_i2c 44e0b000.i2c: could not find pctldev for node /pinmux@44e10800/pinmux_i2c0_pins, deferring probe [ 0.378917] platform 44e0b000.i2c: Driver omap_i2c requests probe deferral [ 0.379876] pps_core: LinuxPPS API ver. 1 registered [ 0.379890] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it> [ 0.380207] PTP clock support registered [ 0.384987] omap-mailbox 480c8000.mailbox: omap mailbox rev 0x400 [ 0.386934] Advanced Linux Sound Architecture Driver Initialized. [ 0.391545] Switched to clocksource timer1 [ 0.532780] NET: Registered protocol family 2 [ 0.534641] TCP established hash table entries: 4096 (order: 2, 16384 bytes) [ 0.534813] TCP bind hash table entries: 4096 (order: 5, 147456 bytes) [ 0.536162] TCP: Hash tables configured (established 4096 bind 4096) [ 0.536303] TCP: reno registered [ 0.536323] UDP hash table entries: 256 (order: 2, 20480 bytes) [ 0.536510] UDP-Lite hash table entries: 256 (order: 2, 20480 bytes) [ 0.537450] NET: Registered protocol family 1 [ 0.538691] RPC: Registered named UNIX socket transport module. [ 0.538711] RPC: Registered udp transport module. [ 0.538719] RPC: Registered tcp transport module. [ 0.538727] RPC: Registered tcp NFSv4.1 backchannel transport module. [ 0.540920] hw perfevents: enabled with ARMv7 Cortex-A8 PMU driver, 5 counters available [ 0.547400] futex hash table entries: 256 (order: 1, 11264 bytes) [ 0.704375] VFS: Disk quotas dquot_6.5.2[13] [ 0.704458] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes) [ 0.706080] NFS: Registering the id_resolver key type [ 0.706449] Key type id_resolver registered [ 0.706466] Key type id_legacy registered [ 0.706566] jffs2: version 2.2. (NAND) (SUMMARY) �© 2001-2006 Red Hat, Inc. [ 0.706923] msgmni has been set to 982 [ 0.711182] NET: Registered protocol family 38 [ 0.711429] io scheduler noop registered [ 0.711442] io scheduler deadline registered [ 0.711483] io scheduler cfq registered (default) [ 0.714949] pinctrl-single 44e10800.pinmux: 142 pins at pa f9e10800 size 568 [ 0.725645] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled [ 0.733414] omap_uart 44e09000.serial: no wakeirq for uart0 [ 0.734200] 44e09000.serial: ttyO0 at MMIO 0x44e09000 (irq = 88, base_baud = 3000000) is a OMAP UART0 [ 1.406657] console [ttyO0] enabled [ 1.414244] omap_rng 48310000.rng: OMAP Random Number Generator ver. 20 [ 1.422154] [drm] Initialized drm 1.1.0 20060810 [ 1.452066] brd: module loaded [ 1.469875] loop: module loaded [ 1.473922] (hci_tty): inside hci_tty_init [ 1.479395] (hci_tty): allocated 249, 0 [ 1.489631] mtdoops: mtd device (mtddev=name/number) must be supplied [ 1.505239] usbcore: registered new interface driver asix [ 1.511338] usbcore: registered new interface driver ax88179_178a [ 1.518076] usbcore: registered new interface driver cdc_ether [ 1.524613] usbcore: registered new interface driver smsc95xx [ 1.531032] usbcore: registered new interface driver net1080 [ 1.537282] usbcore: registered new interface driver cdc_subset [ 1.543867] usbcore: registered new interface driver zaurus[13] [ 1.550193] usbcore: registered new interface driver cdc_ncm [ 1.557454] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 1.564342] ehci-pci: EHCI PCI platform driver [ 1.569496] ehci-omap: OMAP-EHCI Host Controller driver [ 1.576030] usbcore: registered new interface driver cdc_wdm [ 1.582466] usbcore: registered new interface driver usb-storage [ 1.591754] mousedev: PS/2 mouse device common for all mice [ 1.602468] i2c-core: driver [rtc-ds1307] using legacy suspend method [ 1.609205] i2c-core: driver [rtc-ds1307] using legacy resume method [ 1.617976] omap_rtc 44e3e000.rtc: rtc core: registered 44e3e000.rtc as rtc0 [ 1.625608] 44e3e000.rtc: already running [ 1.631481] i2c /dev entries driver [ 1.635561] Driver for 1-wire Dallas network protocol. [ 1.646205] omap_wdt: OMAP Watchdog Timer Rev 0x01: initial timeout 60 sec [ 1.729031] mmc0: host does not support reading read-only switch. assuming write-enable. [ 1.741024] mmc0: new high speed SDHC card at address b368 [ 1.751186] mmcblk0: mmc0:b368 SD8GB 7.48 GiB [ 1.762402] mmcblk0: p1 p2 [ 1.766131] ledtrig-cpu: registered to indicate activity on CPUs [ 1.775032] omap-aes 53500000.aes: OMAP AES hw accel rev: 3.2 [ 1.789398] omap-sham 53100000.sham: hw accel on OMAP rev 4.3 [ 1.803188] usbcore: registered new interface driver usbhid [ 1.809018] usbhid: USB HID core driver [ 1.814101] remoteproc0: wkup_m3 is available [ 1.818752] remoteproc0: Note: remoteproc is still under development and considered experimental. [ 1.828395] remoteproc0: THE BINARY FORMAT IS NOT YET FINALIZED, and backward compatibility isn't yet guaranteed. [ 1.839977] remoteproc0: Direct firmware load failed with error -2 [ 1.846577] remoteproc0: Falling back to user helper [ 1.863515] oprofile: using arm/armv7 [ 1.867529] nf_conntrack version 0.5.0 (7863 buckets, 31452 max) [ 1.873962] mmc1: BKOPS_EN bit is not set [ 1.879903] ip_tables: (C) 2000-2006 Netfilter Core Team [ 1.886729] TCP: cubic registered [ 1.890200] Initializing XFRM netlink socket [ 1.894876] NET: Registered protocol family 17 [ 1.899582] NET: Registered protocol family 15 [ 1.904761] mmc1: new high speed MMC card at address 0001 [ 1.911413] Key type dns_resolver registered [ 1.916903] mmcblk1: mmc1:0001 MMC02G 1.78 GiB [ 1.923174] cpu cpu0: of_pm_voltdm_notifier_register: Failed to get cpu0 regulator/voltdm: -517 [ 1.932363] cpu cpu0: cpu0 clock notifier not ready, retry [ 1.938580] mmcblk1boot0: mmc1:0001 MMC02G partition 1 1.00 MiB [ 1.945098] mmcblk1boot1: mmc1:0001 MMC02G partition 2 1.00 MiB [ 1.951783] platform cpufreq-cpu0.0: Driver cpufreq-cpu0 requests probe deferral [ 1.962762] mmcblk1: p1 p2 p3 p4 [ 1.966539] PM: bootloader does not support rtc-only! [ 1.974537] ThumbEE CPU extension supported. [ 1.979050] Registering SWP/SWPB emulation handler [ 1.987906] mmcblk1boot1: unknown partition table [ 1.997478] regulator-dummy: disabling [ 2.004335] mmcblk1boot0: unknown partition table [ 2.012015] slave hdmi.6: could not get i2c [ 2.016519] platform hdmi.6: Driver slave requests probe deferral [ 2.024278] platform 4830e000.lcdc: Driver tilcdc requests probe deferral [ 2.043171] DCDC1: at 1500 mV [ 2.048663] vdd_mpu: 925 <--> 1375 mV at 1325 mV [ 2.055593] vdd_core: 925 <--> 1150 mV at 1125 mV [ 2.062573] LDO1: at 1800 mV [ 2.067633] LDO2: at 3300 mV [ 2.072656] LDO3: 1800 mV [ 2.077376] LDO4: at 3300 mV [ 2.082803] tps65217 0-0024: TPS65217 ID 0xe version 1.2 [ 2.088440] omap_i2c 44e0b000.i2c: bus 0 rev0.11 at 400 kHz [ 2.095493] cpu cpu0: of_pm_voltdm_notifier_register: Fail calculating voltage latency[950000<->1260000]:-22 [ 2.245072] tilcdc 4830e000.lcdc: found TDA19988 [ 2.252136] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013). [ 2.259059] [drm] No driver support for vblank timestamp query. [ 2.510594] Console: switching to colour frame buffer device 240x67 [ 2.510721] tilcdc 4830e000.lcdc: timeout waiting for framedone [ 2.566940] tilcdc 4830e000.lcdc: fb0: frame buffer device [ 2.573968] tilcdc 4830e000.lcdc: registered panic notifier [ 2.580631] [drm] Initialized tilcdc 1.0.0 20121205 on minor 0 [ 2.661756] davinci_mdio 4a101000.mdio: davinci mdio revision 1.6 [ 2.668274] davinci_mdio 4a101000.mdio: detected phy mask fffffffe [ 2.681223] libphy: 4a101000.mdio: probed [ 2.685711] davinci_mdio 4a101000.mdio: phy[0]: device 4a101000.mdio:00, driver SMSC LAN8710/LAN8720 [ 2.699631] cpsw 4a100000.ethernet: Detected MACID = c8:a0:30:b3:d5:d7 [ 2.718150] omap_rtc 44e3e000.rtc: setting system clock to 2014-10-29 15:13:44 UTC (1414595624) [ 2.776183] ALSA device list: [ 2.779379] No soundcards found. [ 2.825345] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null) [ 2.834487] VFS: Mounted root (ext4 filesystem) readonly on device 179:2. [ 2.846624] devtmpfs: mounted [ 2.851287] Freeing unused kernel memory: 324K (c08d6000 - c0927000) INIT: version 2.88 booting Starting udev [ 3.603009] udevd[836]: starting version 182 [ 4.320186] 47401300.usb-phy supply vcc not found, using dummy regulator [ 4.491004] 47401b00.usb-phy supply vcc not found, using dummy regulator [ 4.590836] remoteproc0: powering up wkup_m3 [ 4.625520] remoteproc0: Booting fw image am335x-pm-firmware.elf, size 150796 [ 4.759117] PM: CM3 Firmware Version = 0x189 [ 4.882198] remoteproc0: remote processor wkup_m3 is now up [ 4.903847] EXT4-fs (mmcblk0p2): re-mounted. Opts: data=ordered Starting Bootlog daemon: bootlogd: cannot allocate pseudo tty: No such file or directory bootlogd. [ 5.641639] random: nonblocking pool is initialized [ 6.188882] davinci_evm sound.10: hdmi-hifi <-> 48038000.mcasp mapping ok [ 6.854319] musb-hdrc musb-hdrc.0.auto: MUSB HDRC host driver [ 6.943030] musb-hdrc musb-hdrc.0.auto: new USB bus registered, assigned bus number 1 [ 7.014042] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002 [ 7.021211] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1 [ 7.028850] usb usb1: Product: MUSB HDRC host driver [ 7.034080] usb usb1: Manufacturer: Linux 3.14.19 musb-hcd [ 7.039826] usb usb1: SerialNumber: musb-hdrc.0.auto [ 7.188277] hub 1-0:1.0: USB hub found [ 7.208579] hub 1-0:1.0: 1 port detected [ 7.265627] musb-hdrc musb-hdrc.1.auto: MUSB HDRC host driver [ 7.302013] musb-hdrc musb-hdrc.1.auto: new USB bus registered, assigned bus number 2 [ 7.332183] usb usb2: New USB device found, idVendor=1d6b, idProduct=0002 [ 7.339318] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1 [ 7.346934] usb usb2: Product: MUSB HDRC host driver [ 7.352187] usb usb2: Manufacturer: Linux 3.14.19 musb-hcd [ 7.357955] usb usb2: SerialNumber: musb-hdrc.1.auto [ 7.395561] hub 2-0:1.0: USB hub found [ 7.409686] hub 2-0:1.0: 1 port detected ALSA: Restoring mixer settings... INIT: Entering runlevel: 5 Configuring network interfaces... [ 8.328746] net eth0: initializing cpsw version 1.12 (0) [ 8.412395] net eth0: phy found : id is : 0x7c0f1 [ 8.417460] libphy: PHY 4a101000.mdio:01 not found [ 8.422527] net eth0: phy 4a101000.mdio:01 not found on slave 1 udhcpc (v1.22.1) started Sending discover... Sending discover... Sending discover... No lease, failing Starting system message bus: dbus. Starting rpcbind daemon...rpcbind: cannot create socket for udp6 rpcbind: cannot create socket for tcp6 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 [ 18.591008] Bluetooth: Core ver 2.18 [ 18.599622] NET: Registered protocol family 31 [ 18.604447] Bluetooth: HCI device and connection manager initialized [ 18.620685] Bluetooth: HCI socket layer initialized [ 18.630830] Bluetooth: L2CAP socket layer initialized [ 18.659019] Bluetooth: SCO socket layer initialized Starting PVR Starting Linux NFC daemon Stopping Bootlog daemon: bootlogd. Poky (Yocto Project Reference Distro) 1.6.1 beaglebone /dev/ttyO0 beaglebone 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:
1 |
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.
Agora vamos rodar o exemplo do QtSmartHome:
1 2 |
cd /usr/share/qtsmarthome-1.0/ ./smarthome -platform eglfs |
A figura 2 mostra um screenshot do QtSmartHome:
Agora vamos rodar o exemplo Qt5EveryWhereDemo:
1 2 |
cd /usr/share/qt5everywheredemo-1.0 ./QtDemo -platform eglfs |
A figura 3 mostra um screenshot do 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:
1 |
echo 0 > /sys/class/graphics/fbcon/cursor_blink |
Para desabilitar o desligamento da saída de vídeo rode o comando:
1 |
echo -e '\033[9;0]' > /dev/tty1 |
A aceleração gráfica tem uma melhor performance na resolução HD (1280×720) e caso sua TV ou monitor seja FULL-HD (1920×1080) você pode alterar a resolução para HD com os seguintes comandos:
1 2 3 |
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
Beaglebone Black + Qt Embedded + Yocto – parte 1
Desvendando Yocto Project – Primeiros passos
Referências
Is there any way to do this build with 4.14 kernel, this build is bind to 3.14 kernel ? Thanks
Sueiro, eu gostaria de entender um pouco mais sobre a questao do Yocto, falaste sobre conectar um mause na USB da mesma, fiquei me perguntando como eu faria para por exemplo, adicionar um touch screen via USB. Em qual parte do cozimento eu defino isso?
Gabriel,
Este tipo de característica é manipulada pelo Yocto através da variável MACHINE_FEATURES:
http://www.yoctoproject.org/docs/current/mega-manual/mega-manual.html#ref-features-machine
Muitos Warnings pos o bitbake 🙁
WARNING: Failed to fetch URL http://zlib.net/pigz/pigz-2.3.1.tar.gz, attempting MIRRORS if available
WARNING: Failed to fetch URL ftp://ftp.astron.com/pub/file/file-5.16.tar.gz, attempting MIRRORS if available
WARNING: Failed to fetch URL ftp://ftp.debian.org/debian/pool/main/b/base-passwd/base-passwd_3.5.29.tar.gz, attempting MIRRORS if available
WARNING: Failed to fetch URL ftp://sourceware.org/pub/libffi/libffi-3.0.13.tar.gz, attempting MIRRORS if available
Sera que existe algo mais atualizado que esse tutorial?
obrigado!!!
Não que eu saiba.
Recebeu algum erro?
Diego Sueiro, muito obrigado pela atencao, nao sabia que voces eram tao atenciosos dessa maneira.
Bem, ate o momento nenhum erro, porem estou achando estranho que o processo esteja demorando tanto, eu rodei o comando bitbake e ate o momento ja foram 8 horas ( 760 de 2581 ), fiquei imaginando que poderia ser por contas desses warnings.
Olá Gabriel,
A primeira vez que você roda o construção da imagem demora um pouco mesmo.
O Yocto vai baixar uma infinidade de código e compilar as ferramentas do host.
Dependendo da configuração da tua máquina esse processo será bastante lento.
Obrigado! vou ficar no aguardo!
Hi Diego I tried following your instructions but using poky dizzy version and Qt 5.3.2 but I’m getting a compile error. Here is my configuration : http://pastebin.com/jnvKJCDD And here is the compilation error : http://pastebin.com/i3np03Ey The problem seem to an internal compiler error while compiling QtTools module recpipes. Could it be the internal compiler of Yocto toolchain being not enough recent ? Also, you mention that using Yocto Dizzy 1.7 will not correctly handle 3d hardware on Beaglebone, does it mean we have to wait for meta-ti release their dizzy version ? Thank for sharing your work with us, it… Leia mais »
Martin, Note that I used the dizzy branch for meta-qt5 and daisy branch for the others. Unfortunately I don’t have enough time now to build in the same configuration as you. You can try ti use the same configuration as me and try to reproduce the issue, but do this delete your “tmp” folder. You can also try to send an e-mail to openembedded-devel mailing list (http://lists.openembedded.org/mailman/listinfo/openembedded-devel) asking for some help on this. Where did I mention that using Yocto Dizzy 1.7 will not correctly handle 3d hardware on Beaglebone? Actually I didn’t tested it yet. Sorry for not helping… Leia mais »
Hi Diego, First of all thank for you quick response. I have sent detail of the problem to the Yocto and OpenEmbedded list. Hope they will find what wrong. Maybe I misread about Hardware Acceleration, I’m not talking Spanish so I translated your instructions to English that is my second language. I’m talking french. I though I was read that using the Dizzy version was using a kernel that is not handling correctly all the beaglebone hardware. Do we still need to use your meta-bbb if we use meta-yocoto-bsp ? Is Dizzy offering GPU hardware acceleration (qt over elgfs ?)… Leia mais »
Martin,
The hardware graphics acceleration comes from meta-ti, so you have to it instead of meta-yocto-bsp (which doesn’t provides the hw accel).
I used Daisy because Dizzy was not available when I wrote the article. But the main differences are related to the package versions.
The meta-bbb is needed to correct set libgles libraries and configure qt-base package.
Did you tried to use all layers on daisy branch and only meta-qt5 on dizzy branch?
No I did not tried, but I will now.
But will I applied some changes on your meta-embarcados ?
Will I have to rename 5.3.% to 5.4.% on this file (meta-embarcados/meta-bbb/recipes-qt/qt5/qtbase_5.3.%.bbappend) ?
Best regards,
Martin,
Since meta-qt5 on dizzy branch uses qt-5.3.2 you don’t have to change the filename.
Oups sorry, I was talking abou the “otavio/master” branch of meta-qt5 ?
Because I would like to use Qt5.4 or newest if possible.
In this case you will have to rename this recipe.
I tried with your advise —————————————————————– Build Configuration: BB_VERSION = “1.22.0” BUILD_SYS = “x86_64-linux” NATIVELSBSTRING = “Ubuntu-14.10” TARGET_SYS = “arm-poky-linux-gnueabi” MACHINE = “beaglebone” DISTRO = “poky” DISTRO_VERSION = “1.6.2” TUNE_FEATURES = “armv7a vfp thumb neon callconvention-hard cortexa8” TARGET_FPU = “vfp-neon” meta meta-yocto = “daisy:02e603e48c6e0b0492f596890adadf6590fa692c” meta-oe = “daisy:d3d14d3fcca7fcde362cf0b31411dc4eea6d20aa” meta-ti = “daisy:d63fd7691e99f9d8dfb9704f634a970b8e44dffd” meta-qt5 = “otavio/master:d02ea33262489f6892db857f9674d14a08f7ca54” meta-embarcados meta-bbb = “daisy:60ea816afabce0ab85a974a6c8b60683ccdab4bc” ——————————————————————– But I get error while fetching Qt from (qt.gitorious.org/qt/qt3d) —————————————————– 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/test/poky/beaglebone/tmp/work/cortexa8t2hf-vfp-neon-poky-linux-gnueabi/qt3d/5.4.0+gitAUTOINC+8a9723d742-r0/temp/log.do_fetch.27984 ERROR: Task 284 (/home/test/poky/beaglebone/../meta-qt5/recipes-qt/qt5/qt3d_git.bb, do_fetch) failed with exit code ‘1’… Leia mais »
I finally succeed with this configuration :
Build Configuration:
BB_VERSION = “1.22.0”
BUILD_SYS = “x86_64-linux”
NATIVELSBSTRING = “Ubuntu-14.10”
TARGET_SYS = “arm-poky-linux-gnueabi”
MACHINE = “beaglebone”
DISTRO = “poky”
DISTRO_VERSION = “1.6.2”
TUNE_FEATURES = “armv7a vfp thumb neon callconvention-hard cortexa8”
TARGET_FPU = “vfp-neon”
meta
meta-yocto = “daisy:02e603e48c6e0b0492f596890adadf6590fa692c”
meta-oe = “daisy:d3d14d3fcca7fcde362cf0b31411dc4eea6d20aa”
meta-ti = “daisy:3a95559c124d3ce8c076b3fae5859435977d1ac2”
meta-qt5 = “master:87235825459d376bf4537c9523eb2496e15893aa”
meta-embarcados
meta-bbb = “daisy:60ea816afabce0ab85a974a6c8b60683ccdab4bc”.
But no success with yocto dizzy 🙁 Hope you will have some time to test it. If you find some time to test it, please post me a message here.
Best regards,
Martin,
Why are you using otavio/master branch for meta-qt5? I realized that it is not up to date with Qt repo source URL. Please use master branch instead.
I’m going to investigate the libgles error.
Hi Diego, I realize too so I decide to use the master branch. I though I have to use the same branch as yocto (daisy) to get less trouble. But I got a successful build using the master branch. Now I’m having another problem with the LCD (Topway : LMT070DICFWD). I’m using your qt5-image-demo layer. I used the dtb-rebuilder of Robert C Nelson (https://github.com/RobertCNelson/dtb-rebuilder/tree/3.14-ti), build the file (am335x-bone-4dcape-70t.dts) to dtb. I have copy this file to the /boot partition and then add the following to the uEnv.txt (dtb=am335x-bone-4dcape-70t.dtb). When Beaglebone booting I notice this error in console tilcdc 4830e000.lcdc: No… Leia mais »
Martin,
The TI’s kernel doesn’t have the “capemgr” and “bone-pinmux-helper” support, and I don’t think that this dts is going to work.
You can try to create a kernel recipe for Robert’s kernel and use it instead of TI’s kernel, or you can use am335x-evmsk.dts as a reference to create the am335x-bone-4dcape-70t.dts :
http://git.ti.com/ti-linux-kernel/ti-linux-kernel/blobs/ti-linux-3.14.y/arch/arm/boot/dts/am335x-evmsk.dts
I guess that cape manager is not implemented in the meta-ti as it is specific too BEAGLEBONE ? Maybe I misread but DTS is only required with kernel > 3.10 ? The meta-ti kernel is 3.14 so it is not supposed to handle the dts ? Is the cape manager is only available to kernel <=3.8 ? Anyway I don't think I will need the cape manager. Unless you tell me that I NEED the cape manager to get my LCD working ? If there no need of the cape manager, why my LCD is not working ? It is… Leia mais »
Martin,
The capemgr is implemented by beagleboard community and that’s why it is not presented on the TI’s kernel. The same applies to bone-pinmux-helper.
I think that on this case the problem is related to the bone-pinmux-helper. If you look at the dtsi files included on the am335x-bone-4dcape-70t.dts it invokes the pinmux-helper and since it’s not implemented on TI’s kernel, its not going to work.
All the ARM kernels above 3.8 suppose to work only with device-tree implementation.
you can use am335x-evmsk.dts as a reference to create the am335x-bone-4dcape-70t.dts :
http://git.ti.com/ti-linux-kernel/ti-linux-kernel/blobs/ti-linux-3.14.y/arch/arm/boot/dts/am335x-evmsk.dts
Diego, First thank you for you patience. I’ll come to understand… I took a look to the Robert Nelson config (https://github.com/beagleboard/linux/blob/3.14/arch/arm/configs/bb.org_defconfig) and then I notice this flag : CONFIG_BEAGLEBONE_PINMUX_HELPER=y If I well understand, the uBoot is supporting reading the DTB file but the ti kernel can’t handle it. Is it right ? Some other question to help me understand : 1) Robert C Nelson kernel is a fork of the meta-ti kernel ? 2) But he add patch and different kernel configuration to support more specific uses of the beaglebone, right ? As probably the cape manager (pixmux, dts). 3)… Leia mais »
Martin, Checkout my answers bellow: If I well understand, the uBoot is supporting reading the DTB file but the ti kernel can’t handle it. Is it right ? Diego: No, both kernel (from Robert and TI) and u-boot supports the DTB. As I told you before all the ARM kernels above 3.8 suppose to work only with device-tree implementation. 1) Robert C Nelson kernel is a fork of the meta-ti kernel ? Diego: I do think so. 2) But he add patch and different kernel configuration to support more specific uses of the beaglebone, right ? As probably the cape… Leia mais »
Diego, Nice, now I understand. So I have 2 options : The first one is keeping the yocto + meta-ti and trying to find how works the DTS to get my LCD working without pixmux (based on am335x-evmsk.dts from TI) ? I think that the road will be really long because I really don’t understand much about the device tree. The am335x-evmsk.dts is a based configuration ? I need to add HDMI + LCD cape functionality according the schematic of the beaglebone black ? The second one could be using yocto + meta-ti + applying patch from Robert C Nelson… Leia mais »
Martin, The dts to get LCD working is not to difficult to implement. It’s just a matter of inserting and adjusting the “panel” parameter. This values you can copy from Robert’s dts. There is a lots of materials explaining the device tree and how to use it. Yes, you can apply the Robert’s patches to get the bone-pinmux-helper on TI’s kernel (but I don’t if it is going to be applied cleanly), or you can create a kernel recipe to build the Robert’s kernel. I didn’t looked at the code, but I think that the bone-pinumux-helper is on the top… Leia mais »
Hi Diego, Thank you again for supporting me, it’s very nice. Ok I will try to adapt the DTS. What I have learn from now is that I have to based my DTS from the TI starter kit (http://git.ti.com/ti-linux-kernel/ti-linux-kernel/blobs/ti-linux-3.14.y/arch/arm/boot/dts/am335x-evmsk.dts) Now when looking to Robert C Nelson dts, I saw the following files that could help me : https://github.com/RobertCNelson/dtb-rebuilder/blob/3.14-ti/src/arm/am335x-evmsk.dts (Starter kit) https://github.com/RobertCNelson/dtb-rebuilder/blob/3.14-ti/src/arm/am335x-bone-lcd7-01-00a3.dtsi (Recipes to get LCD + touchscreen) Now each part : https://github.com/RobertCNelson/dtb-rebuilder/blob/3.14-ti/src/arm/am335x-bone-bl-gpio1-18.dtsi (Backlight) https://github.com/RobertCNelson/dtb-rebuilder/blob/3.14-ti/src/arm/am335x-bone-panel-800×480.dtsi (LCD) https://github.com/RobertCNelson/dtb-rebuilder/blob/3.14-ti/src/arm/am335x-bone-ti-tscadc-4-wire.dtsi (TouchScreen) What I have to do is to append or merge this to my am335x-evmsk.dts ? I produce my final DTS by helping me… Leia mais »
Martin,
Glad to hear that you got it working.
To include your custom dts you will have to create a bbappend file for the kernel recipe (for example: meta-embarcados/meta-bbb/recipes-kernel/linux/linux-ti-staging_3.14.bbappend). With the following content:
http://pastebin.com/swJAQNMY
Put your am335-custom-dts.dts file on the following path: meta-embarcados/meta-bbb/recipes-kernel/linux/linux-ti-staging/am335-custom-dts.dts
HI Diego,
I am following your tutorial to get “qt5-image-demo” working on TI AM335x EVM Kit.
I have added a kernel recipe to use am335x-evm.dts file.
Wanted to know whether I need a recipe for u-boot or not ?
If yes, then how to do so ?
Also, if I want to use latest meta-qt5 (master) instead of dizzy, what shall I change in my qt5 recipe ?
I am new to Yocto so any explanation to above questions will be highly appreciated.
Thanks
Ankur,
You don’t have to create kernel, u-boot or other recipes to build to am335x-evm. You just have to set your machine in the local.conf file. Make sure that you have:
MACHINE = “am335x-evm”
If you want to use meta-qt5 in “master” branch I suggest you to use all the other branches on “master” too, this way you are going to minimize software compatibility problems.
Note that meta-embarcados is only developed to work with “daisy” and “dizzy” branch of meta-qt5.
Hi Diego,
Thanks for your response.
If I don’t use meta-embarcados, will I still get graphic acceleration ?
As you said in comments above, meta-bbb is needed for libgles and qt5
Diego,
I added PACKAGECONFIG_append_pn-qtbase = ” tslib” in my local.conf but during device booting stage, it doesn’t ask for TS calibration. I also cannot find ts_calibrate in rootfs
How to enable that ?
Ankur,
To get ts_calibrate installed add the following on your IMAGE_INSTALL variable:
tslib-calibrate
I don’t kown if it’s going to be launched at the first boot. You can take this recipe as reference to achieve this:
http://arago-project.org/git/?p=meta-arago.git;a=blob;f=meta-arago-extras/recipes-graphics/tslib/ts-calibrate-init_1.0.bb;hb=master
Hi Diego,
Thanks for your response.
I have now done following changes and re-launched above steps:
1) MACHINE = “am335x-evm”
2) created am335x-evm.conf in meta-bbb
bitbake qt5-image-demo on going, lets wait for results 🙂
It compiled and created a package.
But when I boot my Am335x Kit and try to run qt5 smart home demo, it fails with error “libGLESv2.so No such file or directory”
I missed bundling of these in file system. Can you please help ?
Did you included “libgles-omap3” and “omap3-sgx-modules” packages on your IMAGE_INSTALL?
hmm, I checked that in file meta-embarcados/meta-bbb/recipes-qt/packagegroups/packagegroup-qt5.bbappend, they are added only for beaglebone Machine. Now I have created another entry for am335x-evm Machine.
Let’ see how it goes.
thanks
It’s working with above change.
I added tslib-calibrate in IMAGE_INSTALL inside qt5-image-demo.bb but still no success.
What else can I do ?
The ts_calibrate binary were installed?
Did you tried to create a recipe for the tool to be launched on the first boot as I told you before?
no ts_calibrate binary on target
Hi Diego,
I made a clean build with all above changes intact i.e
1) MACHINE = am335x-evm
2) Added entry for am335x-evm MACHINE in qt5 packagegroup recipe
3) created am335x-evm.conf file
4) tslib-calibrate added in IMAGE_INSTALL in qt5-image-demo.bb
With this, I am able to build image for AM335x-EVM Kit.
Once the card bootsup, export following:
export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=”rotate=180″
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_TSDEVICE=/dev/input/touchscreen0
export TSLIB_PLUGINDIR=/usr/lib/ts
And demo runs smooth 🙂
Many thanks for your support, really appreciate it.
Now I am trying to build meta-qt “master” and might bug you again 🙂
cheers
Ankur,
Thanks for the feedback. Glad to know that you managed to get it working.
Hi Diego,
Above steps doesn’t include qtwebkit. How can I include qtwebkit ?
thanks
Ankur
Ankur,
On the file “meta-embarcados / recipes-core / images / qt5-image-demo.bb” put “qtwebkit” in IMAGE_INSTALL variable.
Thanks Diego, I want to use latest qt-5.4, so I am using meta-qt5 “master”. When I issue bitbake, I get this error : [email protected]:~/poky-yocto/build-daisy$ bitbake qt5-image-demo NOTE: Error during finalise of /home/ankur/poky-yocto/build-daisy/../poky-daisy/meta-qt5/recipes-qt/qt5/qtmultimedia_git.bb | ETA: 00:01:09 ERROR: ExpansionError during parsing /home/ankur/poky-yocto/build-daisy/../poky-daisy/meta-qt5/recipes-qt/qt5/qtmultimedia_git.bb: Failure expanding variable qmake5_base_do_configure: ExpansionError: Failure expanding variable EXTRA_QMAKEVARS_PRE, expression was ${@bb.utils.contains(‘PACKAGECONFIG’, ‘alsa’, ”, ‘CONFIG+=done_config_alsa’, d)} ${@bb.utils.contains(‘PACKAGECONFIG’, ‘pulseaudio’, ”, ‘CONFIG+=done_config_pulseaudio’, d)} ${@bb.utils.contains(‘PACKAGECONFIG’, ‘openal’, ”, ‘CONFIG+=done_config_openal’, d)} ${@bb.utils.contains(‘PACKAGECONFIG’, ‘gstreamer’, ‘GST_VERSION=1.0’, ”, d)} ${@bb.utils.contains(‘PACKAGECONFIG’, ‘gstreamer010’, ‘GST_VERSION=0.10’, ”, d)} ${@bb.utils.contains_any(‘PACKAGECONFIG’, ‘gstreamer gstreamer010’, ”, ‘CONFIG+=done_config_gstreamer’, d)} which triggered exception AttributeError: ‘module’ object has no attribute ‘contains_any’ I then started to use bitbake “master” branch,… Leia mais »
I reverted back to meta-qt “dizzy” but I am getting this error : [email protected]:~/poky-yocto/build-daisy$ bitbake -k qt5-image-demo Parsing recipes: 100% |######################################################################################################################################################################| ETA: 00:00:00 Parsing of 1515 .bb files complete (0 cached, 1515 parsed). 1941 targets, 198 skipped, 0 masked, 0 errors. NOTE: Resolving any missing task queue dependencies NOTE: multiple providers are available for jpeg (jpeg, libjpeg-turbo) NOTE: consider defining a PREFERRED_PROVIDER entry to match jpeg ERROR: Nothing PROVIDES ‘ruby-native’ (but /home/ankur/poky-yocto/build-daisy/../poky-daisy/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 ‘qtwebkit’ is unbuildable, removing… Missing or unbuildable dependency chain was: [‘qtwebkit’, ‘ruby-native’] ERROR: Nothing… Leia mais »
Ankur,
Mixing layers in different branches is not a good practice and can be error prone, as you are having now.
Try to use meta-embarcados in “daisy” branch and all the others in “fido” and see what happens.
Hi Diego,
Sure, will try all others in “fido”.
What about error coming when I included “qtwidget” ? As stated in comment below.
thanks
Ankur,
It seems to be related to Qt multimedia, and I didn’t had time to investigate this.
Maybe using fido branch this error will not be raised
Hi Diego,
I followed these two procedures with no success so far
1) kept all branches as “daisy” and add “qtwebkit” in IMAGE_INSTALL variable. This gave error qtwebkit-dev not found
2) update all to “fido” , meta-qt to “master” and kept meta-embarcados and meta-ti in “diasy” (no fido for meta-ti) and this gave me error :
Parsing recipes: 100% |#############################################################| Time: 00:01:28
Parsing of 1677 .bb files complete (0 cached, 1677 parsed). 2155 targets, 356 skipped, 0 masked, 0 errors.
ERROR: No recipes available for:
/home/ankur/poky-yocto/build-fido/../poky-fido/meta-embarcados/meta-bbb/recipes-qt/qt5/qtbase_5.3.%.bbappend
Summary: There was 1 ERROR message shown, returning a non-zero exit code.
[email protected]:~/poky-yocto/build-fido$
Ankur,
For the second scenario, please rename the recipe “meta-embarcados/meta-bbb/recipes-qt/qt5/qtbase_5.3.%.bbappend” to
“meta-embarcados/meta-bbb/recipes-qt/qt5/qtbase_%.bbappend”
After renaming, i get these errors : [email protected]:~/poky-yocto/build-fido$ mv /home/ankur/poky-yocto/build-fido/../poky-fido/meta-embarcados/meta-bbb/recipes-qt/qt5/qtbase_5.3.%.bbappend /home/ankur/poky-yocto/build-fido/../poky-fido/meta-embarcados/meta-bbb/recipes-qt/qt5/qtbase_%.bbappend [email protected]:~/poky-yocto/build-fido$ vim ../changes/0001-am335x-evm-changes.patch [email protected]:~/poky-yocto/build-fido$ bitbake -k qt5-image-demo Loading cache: 100% |########################################################################################################################################################################| ETA: 00:00:00 Loaded 2156 entries from dependency cache. Parsing recipes: 100% |######################################################################################################################################################################| Time: 00:00:00 Parsing of 1677 .bb files complete (1675 cached, 2 parsed). 2155 targets, 356 skipped, 0 masked, 0 errors. NOTE: Resolving any missing task queue dependencies NOTE: multiple providers are available for jpeg (jpeg, libjpeg-turbo) NOTE: consider defining a PREFERRED_PROVIDER entry to match jpeg ERROR: Nothing PROVIDES ‘ruby-native’ (but /home/ankur/poky-yocto/build-fido/../poky-fido/meta-qt5/recipes-qt/qt5/qtwebkit_5.4.1.bb DEPENDS on or otherwise requires it). Close matches: db-native bc-native byacc-native NOTE: Runtime target ‘qtwebkit’… Leia mais »
Ankur,
You need to add meta-ruby:
http://layers.openembedded.org/layerindex/recipe/5212/
Hi Diego, So finally I have this configuration: Build Configuration: BB_VERSION = “1.26.0” BUILD_SYS = “i686-linux” NATIVELSBSTRING = “Ubuntu-14.04” TARGET_SYS = “arm-poky-linux-gnueabi” MACHINE = “am335x-evm” DISTRO = “poky” DISTRO_VERSION = “1.8” TUNE_FEATURES = “arm armv7a vfp thumb neon callconvention-hard cortexa8” TARGET_FPU = “vfp-neon” meta-embarcados meta-bbb = “daisy:d8e5d8f728a51db44750d4f43d66d51c89dd8a20” meta-ti = “daisy:efc3f4a7687c0ba959dca2b75a99ba8efac94507” meta-qt5 = “master:bb20ed60fc596098940f18bd2418a8bdc866bec3” meta-ruby meta-oe = “fido:5b0305d9efa4b5692cd942586fb7aa92dba42d59” meta meta-yocto = “fido:e2e522a6ede3165f63ad81c72f8ac6d3903f8296” I added – meta-ruby in bblayers.conf – qtwebkit, qtwebkit-examples in IMAGE_INSTALL When I issue bitbake qt5-image-demo, during last step i get this error : Configuring qt3d-examples. Configuring packagegroup-qt5-base. Collected errors: * opkg_install_cmd: Cannot install package qtwebkit-examples. ERROR: Function failed:… Leia mais »
Diego,
I figured out what the problem was.
its qtwebit-examples-examples, not qtwebkit-examples.
Ankur,
You can try to use meta-bbb on daisy branch and see if it works.
But basically, meta-bbb set some packages on beaglebone.conf:
PREFERRED_VERSION_libgles-omap3 = “5.01.01.01”
PREFERRED_PROVIDER_virtual/egl = “libgles-omap3”
PREFERRED_PROVIDER_virtual/libgles1 = “libgles-omap3”
PREFERRED_PROVIDER_virtual/libgles2 = “libgles-omap3”
And forces the installations of “libgles-omap3” and “omap3-sgx-modules” packages via meta-embarcados/meta-bbb/recipes-qt/packagegroups/packagegroup-qt5.bbappend.
Hi Diego,
In case if I set MACHINE = “am335x-evm”, then I doubt beaglebone.conf will be used. Correct ?
So even if I stay on “daisy” branch, unless I use MACHINE = “beaglebone”, meta-bbb won’t work.
Is my understanding correct ?
If yes, then I have to create am335x-evm.conf to get egl packages for it.
Ankur,
Yes you are right. In this case you have to create a am335x-evm.conf file.
Use meta-ti/tree/conf/machine/am335x-evm.conf as a reference.
hi Thanks for this tutorial.
i m from iran , We can not do these steps
Because ,TI site (git://git.yoctoproject.org/meta-ti) Blocked ip my counter and we can’t download driver for yocto project
plzzzzzzzzz If possible for you ,share this files
qt5-image-demo (beaglebone Black and Raspberry PI B )
my email : [email protected]
mercccccccccccccccccccc
Qasem,
This repo (meta-ti) is hosted by Yocto Project, not TI. You could download this repository?
What driver are you talking about?
You can clone meta-ti from here too: git://arago-project.org/git/meta-ti.git
Regards
Hi
When yocto project is downloading Graphics_SDK_setuplinux_hardfp_5_01_01_01.bin the 403 forbidden is thrown in do_fetch state indeed. It would be appreciated if you could share beaglebone black and raspberry pi B images via dropbox or google drive.
Unfortunatly we have many access limitation to the resources which be hosted in usa.
Regards
Qasem,
You can try to download from here:
https://gitorious.org/ti-sdk-am335x-evm-07-00-00-00/ti-sdk-am335x-evm-07-00-00-00/source/0ca4011cef77118f4adca8662371da4e2fc19e8e:
Hi Diego,
I came across this thread in yocto mailing list https://lists.yoctoproject.org/pipermail/yocto/2014-April/019335.html which is the exact issue i am getting while running weston from bbb (yocto based). And I see that no solution was given so far. How did you fix this ?
Thanks,
Ramesh
Ramesh,
No didn’t managed to get this working and I did not investigate a lot.
Sorry.
Dear Diego, I am from Indonesia. I am interested to your project in building qt5 image for Pi. I have followed all the steps above and success. Now I am trying to build qt5 image for “a13 allwinner/olinuxino a13” using meta-sunxi and everything got failed. Could you help me to solve my problem?
Thank you
Best regards.
Hi Grangsang,
What kind of errors?
Send me your bblayers.conf and local.conf files (use pastebin).
Hi Diego,
Thank you for your reply.
here are bblayers.conf and local.conf
http://pastebin.com/raw.php?i=NssYfg8Z
http://pastebin.com/FLYHRnTw
please help me.
Best regards.
Please,
Send me the erros messages too. (via pastebin)
Sorry Diego, I forget to send you the error log.
Here is the last error I got after I try to force adding “vc-graphics”
http://pastebin.com/raw.php?i=cRmLm6H9
I don’t really sure what is actually wrong. I think I am wrong for forcing your “meta-rpi” to be used with meta sunxi.
It seems that the error caused by the eglfs
Here are my another configuration that also give an error output:
http://pastebin.com/raw.php?i=VHDncvvj
http://pastebin.com/raw.php?i=EDv9FX1r
once again, thank you so much.
Olá Diego,
quando eu emitir “Qt5_CinematicExperience -platform eglfs” Eu estou recebendo mensagem como
“Could not initialize egl display
Aborted ”
Não tenho a certeza por que, também eu estou usando uma TV HDMI como um display.
– Ramesh
Ramesh,
Please make sure that your local repo of meta-ti is updated.
If it’s already updated, please send me the result of “lsmod” command.
Hello Deigo,
I tried to checkout latest version of the sources and build fresh, but now i am seeing this error while doing ‘bitbake -k qt5-image-demo’
“ERROR: Nothing RPROVIDES ‘packagegroup-qt5’
ERROR: No eligible RPROVIDERs exist for ‘packagegroup-qt5′”
Ramesh,
All repos are on daisy branch? Except meta-qt5 that should be at dizzy branch.
Please send me your Build Configuration info which is printed out when you run bitbake command.
Olá, eu segui o tutorial, gravei o cartão SSD, e ao dar boot na placa, ele informa o seguinte erro:
File not found /boot/uImage
Olhando na partição rootfs do cartão, não tem o arquivo uImage, somente um chamado zImage. Eu errei alguma coisa na configuração? Ou devo simplesmente renomear o arquivo?
Obrigado
Xultz,
Siga as instruções descritas na nota da seção Testando a imagem.
Olá, consegui resolver o problema seguindo as instruções do tutorial do Henrique. Ao copiar o arquivo uEnv.txt, o mesmo instrui o u-boot a carregar um arquivo do tipo zImage. Porém ele espera que esteja na partição de boot, e copiei os dois arquivos conforme o tutorial informa, e a placa bootou certinho. Não consegui rodar a aplicação pelo mesmo problema do Lucas Lui Motta, vou seguir as instruções citadas abaixo e tentar novamente.
Xultz,
Atualize sua cópia do repositório da meta-ti pois esse problema já foi resolvido.
Olá Diego, muito obrigado por este artigo. Eu espero que você possa me ajudar.
Segui todos os passos para gerar a imagem mas eu tenho alguns erros:
Victor,
Mude a versão do kernel com os comandos:
“cd ~/yocto/poky-daisy/meta-ti; git checkout 31348244882a8defb640af75119ba275d9915f09”
E construa a imagem novamente.
Olá Diego,
Depois de fazer o checkout, eu tenho esta resposta, mas eu não entendo.
Não obstante, eu posso construir a imagem novamente?.
Para construir novamente a imagen não é necessário eliminar alguns dos arquivos gerados pela construção anterio, ou só é necessário fazer:
cd ~/yocto
. poky-daisy/oe-init-build-env build-daisy
bitbake qt5-image-demo
Victor,
Não precisa fazer nada.
Pode executar os comandos que vc mencionou.
Olá Diego,
Depois de constuir a imagem novamente eu não tinha erros mas eu tive vários “Warnings”: http://pastebin.com/eh3tLhAx.
É necessário reconstruir a imagem ou eu posso gravar o cartão SSD?
Outra questão que eu tenho, ¿esta imagem funciona em uma placa com LCD7 CAPE?
muito obrigado pela vossa ajuda.
Victor,
Não precisa se preocupar com esses warnings.
Vc terá que alterar o Device Tree com as configurações necessárias para o funcionamento do LCD.
Segue como referência:
https://github.com/beagleboard/linux/blob/3.14/arch/arm/boot/dts/am335x-bone-lcd7-01-00a3.dts
Note que existem vários includes também.
Se você não estiver muito familiarizado com Device Tree essa tarefa será um tanto árdua. 🙁
Olá Diego,
Eu não tenho nenhuma experiência com Device Tree e eu não sei por onde começar.
Eu procurei todo dia na internet, mas não encontrou nada claro. Por favor, você pode me guiar?.
Muito obrigado pela sua paciência
Victor,
Comece com os artigos do Sergio Prado sobre o tema:
http://sergioprado.org/?s=Device+Tree+
Na presentação dele sobre Linux Device Drivers no Seminário Programação para Sistemas Embarcados 2014 tem uma parte sobre Device Tree:
http://embarcados.com.br/apresentacoes-seminario-programacao-para-sistemas-embarcados-2014/
Olá Diego,
Eu não sou capaz alterar o Device Tree com as configurações necessárias para o funcionamento do LCD. Esta é uma tarefa impossível para mim
Eu encontrei este LCD com “Ubuntu with Kernel 3.15, 3.17, 3.18 support” http://elinux.org/Nh7Cape
Pode ser compatível com Kernel 3.14.25 de Yocto?.
Obrigado.
Victor,
Sim ele será compatível sem problemas.
Infelizmente não tenho um exemplar desse comigo para fazer as alterações necessárias e testar.
Não desista meu amigo. Você vai conseguir. 😉
Victor, Como não sei qual a versão da cape LCD7 que você está usando, compilei esses dois dtbs disponíveis: https://github.com/beagleboard/linux/blob/3.14/arch/arm/boot/dts/am335x-bone-lcd7-01-00a3.dts https://github.com/beagleboard/linux/blob/3.14/arch/arm/boot/dts/am335x-bone-lcd7-01-00a2.dts Baixe os dtbs nesses links: https://drive.google.com/file/d/0Byvkmnfcr5auV1hyMkNhcHk4cnM/view?usp=sharing https://drive.google.com/file/d/0Byvkmnfcr5auZk01STVua2pUOWM/view?usp=sharing Agora você tem que apontar o dtb que o bootloader deve carregar. Para isso insira o cartão uSD no computador e copie os dtbs para a pasta /boot do uSD e crie um link simbólico para o arquivo am335x-boneblack.dtb. Siga esses comandos (altere o caminho do ponto de montagem o uSD): “sudo cp am335x-boneblack-lcd7-01-00a2.dtb /media/rootfs/boot” “sudo cp am335x-boneblack-lcd7-01-00a3.dtb /media/rootfs/boot” “cd /media/rootfs/boot” (digite o comando abaixo para usar a versão a3 da cape)… Leia mais »
Muito, muito obrigado.
Eu tenho a cape LCD7 versâo A3. Eu fiz o que você me disse mas o display ainda não funciona. Agora, também não tenho salida HDMI.
Eu tenho no /media/pc2/rootfs/boot http://pastebin.com/5pEuh69v
Eu tenho no /media/pc2/boot http://pastebin.com/9QmdHrJS
Abraços.
Victor,
Esse dtb eu compilei do repositório do projeto beagleboard (veja o link que mandei anteriormente).
Porém o kernel compilado é do repositório da Texas. Então pode ser que eles sejam incompatíveis. 🙁
Vc terá que criar o dts do LCD e compilar o dtb com o kernel da Texas.
No meu comentário anterior eu listei o comando para voltar ao dtb original, pois o LCD e a saída HDMI não funcionam ao mesmo tempo.