5 Comentários

Beaglebone Black + Yocto Dizzy (Versão 1.7)

yocto

A nova versão 1.7 (dizzy) do Yocto Project foi lançada recentemente e desde a versão 1.6 (daisy) a Beaglebone Black é oficialmente suportada pelo projeto.

Sendo assim, não precisamos utilizar a camada de BSP da Texas Instruments (meta-ti) para adicionarmos suporte a Beaglebone Black no Yocto. Porém se você deseja usar a aceleração 3D por hardware do processador AM3359 (presente na Beaglebone Black) você terá de recorrer a meta-ti.

Desde a versão 3.12 mainline do Kernel Linux a Beaglebone Black é suportada e nesta versão do Yocto o Kernel Linux construído é o 3.14, ou seja, uma versão bem recente. Mas existe uma limitação para a Beaglebone Black no mainline Linux Kernel: o suporte às capes não foi integrado ainda. Se você deseja usar as capes em seu projeto terá que usar o BSP da placa disponibilizado pela meta-beagleboard e a versão do Kernel Linux utilizada é a 3.8. 

Se você é novo no mundo do Yocto sugiro que dê uma lida na seção "O que é o Yocto" no artigo "Beaglebone Black + Yocto" escrito pelo Henrique Rossi.

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:

Fedora:

openSUSE:

CentOS:

Montando o ambiente de construção

Após instalar os pacotes para o Host, vamos criar os diretórios e baixar os fontes necessários:

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

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

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 adicionamos os módulos e dtb nas imagens que iremos gerar.

Construindo as imagens

Vamos gerar uma imagem mínima sem suporte à interface gráfica (core-image-mininal) com o comando:

Esta é a configuração de build utilizada:

Vamos construir também uma imagem com suporte à interface gráfica (core-image-sato):

Gravando as imagens

Este procedimento é praticamente o mesmo utilizado no tutorial [5] 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:

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:

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

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 :

Este último comando é importante, pois sem ele os dispositivos conectados a USB não serão reconhecidos pelo kernel.

Testando as imagens

Remova o microSD do computador e insira-o na Beaglebone Black, 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 [7].

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.

A imagem core-image-minimal (sem interface gráfica) possui o seguinte log de boot:

Initialized drm 1.1.0 20060810 brd: module loaded mtdoops: mtd device (mtddev=name/number) must be supplied usbcore: registered new interface driver kaweth pegasus: v0.9.3 (2013/04/25), Pegasus/Pegasus II USB Ethernet driver usbcore: registered new interface driver pegasus usbcore: registered new interface driver rtl8150 usbcore: registered new interface driver asix usbcore: registered new interface driver ax88179_178a usbcore: registered new interface driver cdc_ether usbcore: registered new interface driver dm9601 usbcore: registered new interface driver smsc75xx usbcore: registered new interface driver smsc95xx usbcore: registered new interface driver net1080 usbcore: registered new interface driver cdc_subset usbcore: registered new interface driver zaurus usbcore: registered new interface driver MOSCHIP usb-ethernet driver usbcore: registered new interface driver int51x1 usbcore: registered new interface driver cdc_ncm ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver ehci-omap: OMAP-EHCI Host Controller driver usbcore: registered new interface driver usb-storage mousedev: PS/2 mouse device common for all mice omap_rtc 44e3e000.rtc: rtc core: registered 44e3e000.rtc as rtc0 i2c /dev entries driver omap_wdt: OMAP Watchdog Timer Rev 0x01: initial timeout 60 sec 48060000.mmc supply vmmc_aux not found, using dummy regulator 481d8000.mmc supply vmmc_aux not found, using dummy regulator mmc0: host does not support reading read-only switch. assuming write-enable. usbcore: registered new interface driver usbhid usbhid: USB HID core driver oprofile: using arm/armv7 mmc0: new high speed SDHC card at address b368 u32 classifier Actions configured TCP: cubic registered NET: Registered protocol family 10 mmcblk0: mmc0:b368 SD8GB 7.48 GiB mmcblk0: p1 p2 sit: IPv6 over IPv4 tunneling driver NET: Registered protocol family 17 Key type dns_resolver registered ThumbEE CPU extension supported. bio: create slab <bio-1> at 1 Btrfs loaded regulator-dummy: disabling slave hdmi.6: could not get i2c platform hdmi.6: Driver slave requests probe deferral platform 4830e000.lcdc: Driver tilcdc requests probe deferral DCDC1: at 1500 mV vdd_mpu: 925 <--> 1325 mV at 1100 mV vdd_core: 925 <--> 1150 mV at 1100 mV LDO1: at 1800 mV LDO2: at 3300 mV LDO3: 1800 mV LDO4: at 3300 mV tps65217 0-0024: TPS65217 ID 0xe version 1.2 omap_i2c 44e0b000.i2c: bus 0 rev0.11 at 400 kHz tilcdc 4830e000.lcdc: found TDA19988

Supports vblank timestamp caching Rev 2 (21.10.2013).

No driver support for vblank timestamp query. Console: switching to colour frame buffer device 240x67 tilcdc 4830e000.lcdc: fb0: frame buffer device tilcdc 4830e000.lcdc: registered panic notifier

Initialized tilcdc 1.0.0 20121205 on minor 0 console [netcon0] enabled netconsole: network logging started mmc1: BKOPS_EN bit is not set mmc1: new high speed MMC card at address 0001 mmcblk1: mmc1:0001 MMC02G 1.78 GiB mmcblk1boot0: mmc1:0001 MMC02G partition 1 1.00 MiB davinci_mdio 4a101000.mdio: davinci mdio revision 1.6 davinci_mdio 4a101000.mdio: detected phy mask fffffffe mmcblk1boot1: mmc1:0001 MMC02G partition 2 1.00 MiB libphy: 4a101000.mdio: probed mmcblk1: p1 p2 p3 p4 davinci_mdio 4a101000.mdio: phy[0]: device 4a101000.mdio:00, driver SMSC LAN8710/LAN8720 mmcblk1boot1: unknown partition table Detected MACID = c8:a0:30:b3:d5:d7 omap_rtc 44e3e000.rtc: setting system clock to 2000-01-01 00:00:01 UTC (946684801) mmcblk1boot0: unknown partition table EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null) VFS: Mounted root (ext4 filesystem) readonly on device 179:2. devtmpfs: mounted Freeing unused kernel memory: 488K (c09ed000 - c0a67000) INIT: version 2.88 booting Starting udev udevd[78]: starting version 182 47401300.usb-phy supply vcc not found, using dummy regulator 47401b00.usb-phy supply vcc not found, using dummy regulator omap_rng 48310000.rng: OMAP Random Number Generator ver. 20 random: nonblocking pool is initialized musb-hdrc musb-hdrc.0.auto: MUSB HDRC host driver musb-hdrc musb-hdrc.0.auto: new USB bus registered, assigned bus number 1 hub 1-0:1.0: USB hub found hub 1-0:1.0: 1 port detected musb-hdrc musb-hdrc.1.auto: MUSB HDRC host driver musb-hdrc musb-hdrc.1.auto: new USB bus registered, assigned bus number 2 hub 2-0:1.0: USB hub found hub 2-0:1.0: 1 port detected EXT4-fs (mmcblk0p2): re-mounted. Opts: data=ordered Populating dev cache Sun Nov 2 10:41:07 UTC 2014 INIT: Entering runlevel: 5 Configuring network interfaces... net eth0: initializing cpsw version 1.12 (0) net eth0: phy found : id is : 0x7c0f1 libphy: PHY 4a101000.mdio:01 not found net eth0: phy 4a101000.mdio:01 not found on slave 1 IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready udhcpc (v1.22.1) started Sending discover... Sending discover... Sending discover... No lease, forking to background done. Starting syslogd/klogd: done Poky (Yocto Project Reference Distro) 1.7 beaglebone /dev/ttyO0 beaglebone login:

Para a imagem core-image-sato (com interface gráfica), temos o seguinte log de boot: 

Initialized drm 1.1.0 20060810 brd: module loaded mtdoops: mtd device (mtddev=name/number) must be supplied usbcore: registered new interface driver kaweth pegasus: v0.9.3 (2013/04/25), Pegasus/Pegasus II USB Ethernet driver usbcore: registered new interface driver pegasus usbcore: registered new interface driver rtl8150 usbcore: registered new interface driver asix usbcore: registered new interface driver ax88179_178a usbcore: registered new interface driver cdc_ether usbcore: registered new interface driver dm9601 usbcore: registered new interface driver smsc75xx usbcore: registered new interface driver smsc95xx usbcore: registered new interface driver net1080 usbcore: registered new interface driver cdc_subset usbcore: registered new interface driver zaurus usbcore: registered new interface driver MOSCHIP usb-ethernet driver usbcore: registered new interface driver int51x1 usbcore: registered new interface driver cdc_ncm ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver ehci-omap: OMAP-EHCI Host Controller driver usbcore: registered new interface driver usb-storage mousedev: PS/2 mouse device common for all mice omap_rtc 44e3e000.rtc: rtc core: registered 44e3e000.rtc as rtc0 i2c /dev entries driver omap_wdt: OMAP Watchdog Timer Rev 0x01: initial timeout 60 sec 48060000.mmc supply vmmc_aux not found, using dummy regulator 481d8000.mmc supply vmmc_aux not found, using dummy regulator mmc0: host does not support reading read-only switch. assuming write-enable. usbcore: registered new interface driver usbhid usbhid: USB HID core driver oprofile: using arm/armv7 mmc0: new high speed SDHC card at address b368 u32 classifier Actions configured TCP: cubic registered NET: Registered protocol family 10 mmcblk0: mmc0:b368 SD8GB 7.48 GiB mmcblk0: p1 p2 sit: IPv6 over IPv4 tunneling driver NET: Registered protocol family 17 Key type dns_resolver registered ThumbEE CPU extension supported. bio: create slab <bio-1> at 1 Btrfs loaded regulator-dummy: disabling slave hdmi.6: could not get i2c platform hdmi.6: Driver slave requests probe deferral platform 4830e000.lcdc: Driver tilcdc requests probe deferral DCDC1: at 1500 mV vdd_mpu: 925 <--> 1325 mV at 1100 mV vdd_core: 925 <--> 1150 mV at 1100 mV LDO1: at 1800 mV LDO2: at 3300 mV LDO3: 1800 mV LDO4: at 3300 mV tps65217 0-0024: TPS65217 ID 0xe version 1.2 omap_i2c 44e0b000.i2c: bus 0 rev0.11 at 400 kHz tilcdc 4830e000.lcdc: found TDA19988

Supports vblank timestamp caching Rev 2 (21.10.2013).

No driver support for vblank timestamp query. Console: switching to colour frame buffer device 240x67 tilcdc 4830e000.lcdc: fb0: frame buffer device tilcdc 4830e000.lcdc: registered panic notifier

Initialized tilcdc 1.0.0 20121205 on minor 0 console [netcon0] enabled netconsole: network logging started mmc1: BKOPS_EN bit is not set mmc1: new high speed MMC card at address 0001 mmcblk1: mmc1:0001 MMC02G 1.78 GiB mmcblk1boot0: mmc1:0001 MMC02G partition 1 1.00 MiB davinci_mdio 4a101000.mdio: davinci mdio revision 1.6 davinci_mdio 4a101000.mdio: detected phy mask fffffffe mmcblk1boot1: mmc1:0001 MMC02G partition 2 1.00 MiB libphy: 4a101000.mdio: probed mmcblk1: p1 p2 p3 p4 davinci_mdio 4a101000.mdio: phy[0]: device 4a101000.mdio:00, driver SMSC LAN8710/LAN8720 mmcblk1boot1: unknown partition table Detected MACID = c8:a0:30:b3:d5:d7 omap_rtc 44e3e000.rtc: setting system clock to 2000-01-01 00:00:01 UTC (946684801) mmcblk1boot0: unknown partition table EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null) VFS: Mounted root (ext4 filesystem) readonly on device 179:2. devtmpfs: mounted Freeing unused kernel memory: 488K (c09ed000 - c0a67000) INIT: version 2.88 booting Starting udev udevd[81]: starting version 182 47401300.usb-phy supply vcc not found, using dummy regulator 47401b00.usb-phy supply vcc not found, using dummy regulator omap_rng 48310000.rng: OMAP Random Number Generator ver. 20 random: nonblocking pool is initialized EXT4-fs (mmcblk1p4): recovery complete FAT-fs (mmcblk0p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck. EXT4-fs (mmcblk1p4): mounted filesystem with ordered data mode. Opts: (null) musb-hdrc musb-hdrc.0.auto: MUSB HDRC host driver musb-hdrc musb-hdrc.0.auto: new USB bus registered, assigned bus number 1 hub 1-0:1.0: USB hub found hub 1-0:1.0: 1 port detected musb-hdrc musb-hdrc.1.auto: MUSB HDRC host driver musb-hdrc musb-hdrc.1.auto: new USB bus registered, assigned bus number 2 hub 2-0:1.0: USB hub found hub 2-0:1.0: 1 port detected EXT4-fs (mmcblk1p3): recovery complete EXT4-fs (mmcblk1p3): mounted filesystem with ordered data mode. Opts: (null) usb 2-1: new low-speed USB device number 2 using musb-hdrc input: Areson USB Device as /devices/ocp.3/47400000.usb/47401c00.usb/musb-hdrc.1.auto/usb2/2-1/2-1:1.0/0003:04B4:0060.0001/input/input0 hid-generic 0003:04B4:0060.0001: input: USB HID v1.00 Mouse [Areson USB Device] on usb-musb-hdrc.1.auto-1/input0 hid-generic 0003:04B4:0060.0002: device has no listeners, quitting EXT4-fs (mmcblk1p2): recovery complete EXT4-fs (mmcblk1p2): mounted filesystem with ordered data mode. Opts: (null) EXT4-fs (mmcblk0p2): re-mounted. Opts: data=ordered Populating dev cache ALSA: Restoring mixer settings... /usr/sbin/alsactl: load_state:1729: No soundcards found... Sun Nov 2 11:26:54 UTC 2014 INIT: Entering runlevel: 5 Configuring network interfaces... net eth0: initializing cpsw version 1.12 (0) net eth0: phy found : id is : 0x7c0f1 libphy: PHY 4a101000.mdio:01 not found net eth0: phy 4a101000.mdio:01 not found on slave 1 IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready done. Starting system message bus: dbus. Starting Connection Manager Starting Xserver Starting Dropbear SSH server: Generating key, this may take a while... X.Org X Server 1.15.1 Release Date: 2014-04-13 X Protocol Version 11, Revision 0 Build Operating System: Linux 3.13.0-29-generic x86_64 Current Operating System: Linux beaglebone 3.14.19-yocto-standard #1 PREEMPT Sun Nov 2 08:10:58 BRST 2014 armv7l Kernel command line: console=ttyO0,115200n8 root=/dev/mmcblk0p2 ro rootfstype=ext4 rootwait Build Date: 02 November 2014 09:07:29AM Current version of pixman: 0.32.6 Before reporting problems, check http://wiki.x.org to make sure that you have the latest version. Markers: (--) probed, (**) from config file, (==) default setting, (++) from command line, (!!) notice, (II) informational, (WW) warning, (EE) error, (NI) not implemented, (??) unknown. (==) Log file: "/var/log/Xorg.0.log", Time: Sun Nov 2 11:26:55 2014 (==) Using system config directory "/usr/share/X11/xorg.conf.d" Initializing built-in extension Generic Event Extension Initializing built-in extension SHAPE Initializing built-in extension MIT-SHM Initializing built-in extension XInputExtension Initializing built-in extension XTEST Initializing built-in extension BIG-REQUESTS Initializing built-in extension SYNC Initializing built-in extension XKEYBOARD Initializing built-in extension XC-MISC Initializing built-in extension XFIXES Initializing built-in extension RENDER Initializing built-in extension RANDR Initializing built-in extension COMPOSITE Initializing built-in extension DAMAGE Initializing built-in extension MIT-SCREEN-SAVER Initializing built-in extension DOUBLE-BUFFER Initializing built-in extension DPMS Initializing built-in extension Present Initializing built-in extension X-Resource Initializing built-in extension XVideo Initializing built-in extension XVideo-MotionCompensation Initializing built-in extension XFree86-VidModeExtension Initializing built-in extension XFree86-DGA Initializing built-in extension XFree86-DRI Initializing built-in extension DRI2 tilcdc 4830e000.lcdc: timeout waiting for framedone D-BUS per-session daemon address is: unix:abstract=/tmp/dbus-o4klvcTnFA,guid=264da5d515f2d0ff5810b95f54561501 matchbox: Cant find a keycode for keysym 269025056 matchbox: ignoring key shortcut XF86Calendar=!$contacts matchbox: Cant find a keycode for keysym 2809 matchbox: ignoring key shortcut telephone=!$dates matchbox: Cant find a keycode for keysym 269025050 matchbox: ignoring key shortcut XF86Start=!matchbox-remote -desktop

Forking. run with -n to prevent fork ** (matchbox-panel:832): WARNING **: Failed to load applet "battery" (/usr/lib/matchbox-panel/libbattery.so: cannot open shared object file: No . Public key portion is: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCiUfu/dtU5S1006LGmsyQq2ipfKJ5UZ2OwyFMtI7g7+xyhyFtGONG+slzuHDqcdwTkQ5Kqjxzs+2I0FJq9wkKkrbjxC/6RvRWIq8HzDHase Fingerprint: md5 e3:f9:c0:21:8e:68:e7:0b:02:27:99:1a:1a:16:8b:46 dropbear. Starting rpcbind daemon...done. Starting syslogd/klogd: done * Starting Avahi mDNS/DNS-SD Daemon: avahi-daemon ...done. Starting Telephony daemon Starting Linux NFC daemon Poky (Yocto Project Reference Distro) 1.7 beaglebone /dev/ttyO0 beaglebone login:

E as seguintes imagens saindo pelo HDMI temos as seguintes telas (imagens):

bbb-daisy-boot

Figura 1

bbb-daisy-desktop

Figura 2

Para aprender mais

Embedded Linux Build Systems

Cozinhando com o Yocto Project

Desvendando Yocto Project – Primeiros passos

Pronto! Agora você já tem um ponto de partida para construir  e customizar as suas distribuições Linux embarcado com o Yocto Project.

Referências

https://www.embarcados.com.br/lancada-nova-versao-1-7-dizzy-yocto-project
https://www.embarcados.com.br/beaglebone-black-yocto-daisy/
http://elinux.org/Beagleboard:BeagleBone_Capes
https://github.com/beagleboard/meta-beagleboard
https://www.embarcados.com.br/beaglebone-black-yocto/
https://www.embarcados.com.br/author/henriqueprossi/
http://elinux.org/Beagleboard:BeagleBone_Black_Serial
Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

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

Beaglebone Black » Beaglebone Black + Yocto Dizzy (Versão 1.7)
Comentários:
Notificações
Notificar
guest
5 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Christian Schultz
Xultz
20/01/2015 20:35

Olá! Muito obrigado pelo texto! Eu segui o processo para gerar a imagem core-image-minimal, e a compilação ocorreu sem problemas. Porém, como resultado ele gerou imagens do tipo uImage ao invés de zImage, eu errei em algum ponto da configuração? Por este motivo eu copiei somente o MLO e u-boot.img para a partição boot. Ao dar boot na placa, ele carrega o kernel, porém o mesmo fica travado, conforme mostra a seguir: SD/MMC found on device 0 reading uEnv.txt ** Unable to read file uEnv.txt ** gpio: pin 55 (gpio 55) value is 1 5067360 bytes read in 875 ms… Leia mais »

Diego Sueiro
Diego Sueiro
Reply to  Xultz
21/01/2015 14:39

Xultz, Acabei de atualizar minha cópia local do poky (no branch dizzy) e gerei o sistema de novo e não tive nenhum problema. As mensagens de boot são: U-Boot SPL 2013.07 (Jan 21 2015 - 14:58:33) musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, HB-ISO Rx, HB-ISO Tx, SoftConn) musb-hdrc: MHDRC RTL version 2.0 musb-hdrc: setup fifo_mode 4 musb-hdrc: 28/31 max ep, 16384/16384 memory USB Peripheral mode controller at 47401000 using PIO, IRQ 0 musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, HB-ISO Rx, HB-ISO Tx, SoftConn) musb-hdrc: MHDRC RTL version 2.0 musb-hdrc: setup fifo_mode 4 musb-hdrc: 28/31 max ep, 16384/16384 memory USB Host mode controller… Leia mais »

Christian Schultz
Xultz
Reply to  Diego Sueiro
21/01/2015 15:16

Obrigado pela resposta, Diego.
Eu vou tentar o processo novamente, anotando com cuidado todos os passos tomados, e se tiver dificuldade novamente, eu coloco as informações que você solicitou. Mas isto só deve acontecer depois de amanhã, meu pobre computador demora quase 12 horas prá gerar a imagem 🙂

Christian Schultz
Xultz
Reply to  Diego Sueiro
22/01/2015 08:00

Olá, consegui fazer a imagem minimal rodar, eu liguei a BBB e não pressionei o botão user, assim pelo jeito o bootloader ficou confuso 🙂
Eu optei por apagar a mmc com os comandos
mmc dev 1
mmc erase 0 512

e desta forma ela está bootando sem precisar pressionar o botão.
Obrigado pela ajuda!
No momento estou procurando instruções de como instalo a imagem da SD Card para a mmc da BBB, mas não estou encontrando as informações, se tiver alguma dica a respeito, seria bem interessante!

Talvez você goste:

Séries

Menu

WEBINAR
 

Soluções inteligentes para acionamento de MOSFETs/IGBTs com família STDRIVE

Data: 08/10 às 15:00h - Apoio: STMicroelectronics
 
INSCREVA-SE AGORA »



 
close-link