LusoRobótica - Robótica em Português

Sistemas específicos => ARM => Tópico iniciado por: MAntunes em 20 de Dezembro de 2014, 23:55

Título: BeagleBone Black vs Raspberry Pi
Enviado por: MAntunes em 20 de Dezembro de 2014, 23:55
Boas pessoal, estou interessado em iniciar-me numa nova plataforma e estou indeciso entre a BeagleBone Black e o Raspberry Pi (B+).

Já tenho algumas bases de programação (C/C++) e a razão para comprar uma destas boards é aumentar ainda mais esse conhecimento e gostava também de aprender um pouco mais sobre Linux. Usei um pouco (CentOS) nas aulas de programação, mas apenas para compilar e executar os programas feitos. Tenho também alguma experiencia com ARM (ando a programar o Tiva C da TI, com TivaWare) e também de sistemas digitais e microprocessadores (cadeiras do primeiro ano). Gostava também de aprender outras linguagens, como por exemplo o Python.

Já andei a ver comparativos e a BeagleBone parece-me ligeiramente melhor em tudo menos na gráfica. O que penso que não me interessará pois não penso converter nenhuma destas boards num media center. A comunidade é sem dúvida maior no Raspberry Pi. O preço não será grande problema, pois após comprar o cartão de memória para o RPi, os preços ficarão equivalentes.

Venho aqui por isso pedir a vossa opinião sobre qual destas boards será melhor.

Cumprimentos,
Miguel Antunes
Título: Re: BeagleBone Black vs Raspberry Pie
Enviado por: metRo_ em 21 de Dezembro de 2014, 01:51
Acabaste por não indicar o o mais importante que é saber o que pretendes fazer:) se é para ligar um ecrã e ter aplicações gráficas então rpi se é  mais para afirmação /controlo  então beaglebone, mas sinceramente acho que seja qual for a que optares não vais notar diferença. A verdade é que para tirares o melhor partido e qualquer uma das duas é necessário muito conhecimento sobre ambas.
Título: Re: BeagleBone Black vs Raspberry Pie
Enviado por: MAntunes em 21 de Dezembro de 2014, 02:18
Tens razão, peço desculpa!
Não sei o que queres dizer com aplicações gráficas, mas sim, seria mais para a segunda opção.
Obrigado!
Título: Re: BeagleBone Black vs Raspberry Pie
Enviado por: Hugu em 21 de Dezembro de 2014, 10:13
e é Raspberry Pi "3.14" e nao pie "tarte"

alem das caracteristicas referidas, ha o preço...o RPI B custa à volta dos 38€ (http://www.g7electronica.net/pt/raspberry-pi/1338-raspberry-pi-b.html) entqo que o BBB (http://www.g7electronica.net/pt/boards/1290-beaglebone-black.html) custa cerca de quase o dobro...
Título: Re: BeagleBone Black vs Raspberry Pi
Enviado por: MAntunes em 21 de Dezembro de 2014, 12:00
Claro Hugu, mas tendo em conta que teria que comprar um cartão de memória para o RPi a diferença de preços atenua-se um pouco.
Em termos de programação há alguma linguagem necessária ou posso por enquanto usar o C/C++ e mais tarde aprender outras?
Não gostei muito da biblioteca Python da Adafuit, parece-me demasiado simples e dá pouca liberdade..

A parte da tarte já está corrigida :)
Título: Re: BeagleBone Black vs Raspberry Pi
Enviado por: metRo_ em 21 de Dezembro de 2014, 18:08
Claro Hugu, mas tendo em conta que teria que comprar um cartão de memória para o RPi a diferença de preços atenua-se um pouco.
Em termos de programação há alguma linguagem necessária ou posso por enquanto usar o C/C++ e mais tarde aprender outras?
Não gostei muito da biblioteca Python da Adafuit, parece-me demasiado simples e dá pouca liberdade..

A parte da tarte já está corrigida :)

Se é simples é boa!

O que queria dizer com aplicações gráficas, é aplicações que requerem um LCD para interface ou algo do género.
Título: Re: BeagleBone Black vs Raspberry Pi
Enviado por: MAntunes em 21 de Dezembro de 2014, 18:32
Sim, já percebi :)

Com simples quis dizer como o Arduino. Depois de começar com o Tiva Ware e de aprender mais sobre microcontroladores: GPIO, Timers, Interrupts, etc, sinto que o Arduino dá pouca liberdade.

Tenho que pesquisar mais sobre o assunto.
Cumps!
Título: Re: BeagleBone Black vs Raspberry Pi
Enviado por: senso em 21 de Dezembro de 2014, 19:09
Usa C com o Arduino e tambem tens tudo e mais alguma coisa á disposição.
Usar RPi's e BBB's para piscar leds e servos em 90% dos casos é overkill 9000.
Título: Re: BeagleBone Black vs Raspberry Pi
Enviado por: LuísR.A. em 22 de Dezembro de 2014, 00:31
Usa C com o Arduino e tambem tens tudo e mais alguma coisa á disposição.

Isso é o que parece que alguns se esquecem - o arduino é um atmega e pode ser programado com tanta liberdade como outro MCU (já agora senso, ha tipo bibliotecas da AVR como o Tivaware?)

Ou se quiseres te manter na texas instruments usa o MSP430 (16 bits em vez de 8bits como os atmegas mais usados nos arduinos).

Se queres algo assim mais pequeno e barato que um ARM-M4 mas ainda assim queres te manter com os ARM tens ARM-M0 noutras marcas tipo ST.


Quanto ao BBB vs RPI o RPI li que é melhor a fazer cenas multimédia como já foi referido. O BBB parece ter mais perifericos para controlo.
Outra coisa é ,corrijam-me se estou errado, o RPI não sabes exatamente o processador certo?
No BBB podes saber tudo sobre o processador, é um ferramenta mais proxima de uma empresa (é da texas instruments +-) e tipo assim já aprendes a usar um processador mais provavel a ser usado num produto/por uma empresa. Isto foi alguns argumentos que pessoal já me deu antes noutro forum, claro que para brincadeiras provavelmente o RPI é melhor, maior comunidade e tal e estás a aprender em linux na mesma se quiseres se não me engano
Título: Re: BeagleBone Black vs Raspberry Pi
Enviado por: senso em 22 de Dezembro de 2014, 00:59
Claro que sabes qual é o processador da RPi, é um Soc da Broadcom, com RAM por cima do die do SoC, dai estarem algo limitados no que toca a mudanças de RAM, implica mudar muita coisa ao nivel do wirebonding antes de o chip em si levar o epoxy preto que nós tão bem conheços.
A RPi tem muito mais capacidades do que aquelas que estão á disposição dos utilizadores, porque a Broadcom não fala para ninguem sem NDA's e encomendas de milhões de chips, dai não existir datasheets detalhadas, vai contra as politicas da empresa, por isso é que o driver gráfico é um blob binário, a RPi tem o que se pode chamar de uma gráfica dual core, o interface DSI(usado pela camera) é extremamente interessante, só que mais uma vez, blob binário, não o podes usar como quiseres, e como esses dois componentes tens muito mais coisas, a RPi assim como o Sitara da TI que tem dois PRU's, tambem tem dois cores estilo micro-controlador, mas não existe datasheet nem compilador para isso na rua(penso eu, porque já apanhei pessoal a falar disso em fóruns).

A TI é muito mais aberta nesse aspecto e tens acesso a todas as datasheets, empresas assim abertas e que apelam um bocado ao lado hobby é a Freescale que disponibiliza inclusive designs de referência para os iMX(usados no Olimexino) e imagens linux de vários sabores pré-configuradas para teres um sistema a correr out of the box.

O que o PRU permite é acesso directo á memória, e por exemplo controlar uma duzia de strings de leds estilo WS2812 a ler dados de um array que é preenchido no lado do OS em C, python, seja o que for, porque o PRU é um core 32 bits a correr a 200Mhz com acesso directo a IO, memória(DMA's eheh), e mais umas coisas, permite deixar o Cortex A8 a descansar por assim dizer.

A ideia de programar bare-bones é precisamente deixar de parte bibliotecas supérfluas, mas existe muita coisa, desde da própria Atmel que te disponibiliza a ASF(mais forte para os ATxmega e os SAM que propriamente os atmega e attiny), depois tens bibliotecas como a Procyon AVRlib, que dá para abstrair muita coisa, mas eu sou um bocado troglodita e acho uma parvoíce fazer 10 chamadas de funções para meter um pino como saída e mudar-lhe o estado.

Mas eu não percebo nada dessas coisas, nunca usei nada de RPi's, BBB's e afins, a nivel de ARM's Cortex tenho andado a brincar com os PSoC e acho-os bastante interessantes, para mim ponto positivo é ter um IDE que é instalar e usar, nada de andar 15 dias de volta de toolchains, para mim micros são uma ferramenta, compilar compiladores são guerras que prefiro passar ao lado.
Título: Re: BeagleBone Black vs Raspberry Pi
Enviado por: LuísR.A. em 22 de Dezembro de 2014, 01:11
Senso experimenta os ARM da ST, vê o STM32CubeMX.
 Aquilo permite-te fazer graficamente todas as inicializações e a parte melhor é que te faz logo o projecto com tudo certinho. Assim não tens problemas com as toolchains.
Eu para o que vou dar uso obrigam-me a usar a antiga biblioteca que não tem isso :(

Aquilo do STM32Cube é novito demais para tipo empresas logo preferem a antiga biblioteca mt mais testada. Mas experimenta se queres entrar em ARM. A placa discovery F0 custa uns 9 euros no máximo e vem com placa de pontos extra.

Tenho um videozito a demostrar mas tirei porque tinha erros de escrita e ainda não me dei ao trabalho de editar. Se quiseres ver.



Obrigado pelo info extra, não sabia. Era mais isso da maior informação do processador do BBB que me estava a referir
Título: Re: BeagleBone Black vs Raspberry Pi
Enviado por: senso em 22 de Dezembro de 2014, 01:15
Dev-boards não me faltam em casa, tenho uma discovery com o STM32F4 que já usei qualquer coisa, os PSoC são arm, no caso do que tenho é um M0 com uns extras, tenho lá 3 MSP430, fora pcb's que eu fiz com micros.

ARM não me parece ser o be all end all, é mais um core no meio de tantos, até hoje os AVR's têm servido.

Sim, eu já conheço esse code generator, mas eu não gosto muito dessas coisas, muita coisa feita por trás de cortinas, prefiro entender o que se está a passar, continuo a não gostar de ARM's por usarem quantidades estupidas de RAM para um blinky, 400-500 bytes de ram para piscar um led?
Mesmo depois de andar de volta de heaps e stacks, é desperdicio demais.
Título: Re: BeagleBone Black vs Raspberry Pi
Enviado por: LuísR.A. em 22 de Dezembro de 2014, 01:20
Mas faz como eu. Mete os configs vazios. A ideia é so configurar o toolchain (coisa mais chata) e deixa o código vazio.


Isso é de terem tanta RAM, o pessoal costuma cagar em optimizações comparado com quem faz as cenas para os 8/16bits mais pequenos.

Gosto de ARM pelos periféricos, não é tanto pelo core. Quando se quer coisas simples ya, exagero completo. Já agora deixa ver ca o tamanho do programa e ram usada do blinky aqui do meu ST.
Título: Re: BeagleBone Black vs Raspberry Pi
Enviado por: LuísR.A. em 22 de Dezembro de 2014, 01:25
Bem, aqui está:

  1 650 bytes of readonly  code memory
     38 bytes of readonly  data memory
  1 040 bytes of readwrite data memory


Sabes o que é tambem neste caso? A biblioteca usa várias structs para configurar tudo logo usa bue memoria.
Este programa pisca um LED de 1 em 1 segundo.
Tem o system tick a fazer um interrupt a cada milisegundo e uma função delay.
Tem tambem todos o busses configurados

Isto realmente faz bue código e gasta bue RAM.
Se fizer no MSP430 só em registos nem se compara :p
Título: Re: BeagleBone Black vs Raspberry Pi
Enviado por: senso em 22 de Dezembro de 2014, 01:54
Blinky com delays no atmega é 380 ou 390 bytes de flash e 0 bytes de ram, ligeiras diferenças, com um timer, são 500 bytes se tanto e 1 ou 2 bytes de ram.

Tecnicamente se são coisas só usadas uma vez o compilador acaba por optimizar isso tudo, essa ram vem do uso de heap e stack, reduz os dois para 128 bytes e vais ver o uso de memória alocada(não é utilizada, é alocada, porque o compilador reporta como RAM usada aquela que é alocada em declarações globais e pouco mais, sei que variáveis locais(não static) não são contabilizadas porque o compilador não sabe quantas vezes vais chamar a função(por exemplo recursividades de afins)).

Acho que usei parêntesis a mais.
Título: Re: BeagleBone Black vs Raspberry Pi
Enviado por: StarRider em 22 de Dezembro de 2014, 04:03
Não se pode comparar o que não tem comparação ...

Uma coisa é uma arquitectura outra coisa é o código gerado por um qualquer compilador para um
determinado MCU, um compilador pode gerar 20K de código para fazer um blink num AVR e outro
pode gerar 3K ... da mesma forma que uma outra toolchain cria um blink com 700 bytes de código
para um ARM (O Keil por exemplo) e outra pode gastar 10k, tudo depende do uso que de libs e afins.

Da mesma forma, comparar um AVR de 8 bits com um processador de 32 bits deita logo à partida
por terra qualquer conclusão, até porque cada instrução do ARM trabalha com operadores de 32
bits e os AVR com operadores de 8  bits, só por ai o tamanho do código tem que mesmo que ser
diferente, um INT .

Depois, é tudo proporcional, da mesma forma que é esperado um Ferrari gastar mais que um
Corsa, por isso mesmo é que um AVR pode ter até 256KB de flash e existem ARMs com 2MB de
flash ... e em termos de preço então nem se fala, um ATMEGA256 custa uns 14 euros e um ARM
com 1024KB custa uns 12 euros ... é não existe comparação possível em termos de desempenho,
performance, capacidade,periféricos, etc, entre os dois.

E relação à arquitectura, a ARM está ao mesmo nível do SPARC, sendo superior à MIPS, pelo que
gostava de saber porque é que o LuísR.A. não "gosta" dos cores ARM, e quais as desvantagens que
aponta em relação a outros.

...mas se querem fazer um blink usem um 555, é quanto basta ;)
Título: Re: BeagleBone Black vs Raspberry Pi
Enviado por: LuísR.A. em 22 de Dezembro de 2014, 04:13

E relação à arquitectura, a ARM está ao mesmo nível do SPARC, sendo superior à MIPS, pelo que
gostava de saber porque é que o LuísR.A. não "gosta" dos cores ARM, e quais as desvantagens que
aponta em relação a outros.



Quem disse que não gosto ARM? :P
É a unica coisa que uso agora. Antes extra só usava o MSP430 com o Energia.
Agora ando-me a meter nos ARM e já não tenho a queixa que um ARM-M4 como o Tiva é caro para algumas aplicações - a ST tem ARM-M0 mais baratos.

AH! já percebi. Eu não disse que "não gostava". Tambem me exprimi mal, claro que gosto do poder de processamento superior mas gosto muito é da quantidade de periféricos que tem

Título: Re: BeagleBone Black vs Raspberry Pi
Enviado por: senso em 22 de Dezembro de 2014, 11:41
Tudo relativo, se usares por exemplo um M0(que são os ARM's feitos para competir com o mercado 8 bits), a correr código Thumb2, cada instrução são 16 bits, e o avr, 16 bits.

Isto não é nenhuma guerra nem fanboyismo(lol), nem tão pouco falar mal de A ou B, simplesmente acho que existem compiladores/toolchains/bibliotecas que não passam de gigantescos montes de redundância e código não optimizado, porque é o que cada vez se vê mais, meh, tem 1MB de flash não é preciso perder tempo com isto, ou possivelmente é a procura das pessoas por código arduinês.
Título: Re: BeagleBone Black vs Raspberry Pi
Enviado por: StarRider em 22 de Dezembro de 2014, 14:39
Boas,

Sim, concordo e era essa a ideia que queria passar, a "Standard Peripheral Library" da ST é um
bom exemplo disso mesmo ... mas bem pior ainda é o que se passa com o mbed que sobre o
mesmo problema de encadeamento de libs que acontece no arduino.

Abraços,
PA
Título: Re: BeagleBone Black vs Raspberry Pi
Enviado por: LuísR.A. em 22 de Dezembro de 2014, 15:20
Bem mas agora com tanta RAM e Flash acham que não se justifica as bibliotecas?

Facilitam muito mais e tambem se evita andar a fazer asneira com os registos quando se está a começar, afinal em programação directa de registos podem fazer o que quiserem e não ha avisos. Se usar uma função para controlar os GPIO ela só me deixa mesmo fazer isso (se tiver bem feita a biblioteca neh?).

Claro que nenhuma biblioteca dispensa saber programar em registos, algumas coisas precisam de ser mais eficientes e/ou não são possiveis com a biblioteca.
Quando preciso de usar algo em registos no Tiva basta ir consultar as funções, facilmente troco para só registos.

Uma das vantagens de ter tanta RAM e Flash é mesmo poder ter estas bibliotecas e funcionarem para a maior parte das aplicações - acho que concordam que são mais faceis e tambem na ST um código de um STM32F0 funciona no STM32F4. Claro que assim não podem tirar mesmo todo o proveito do MCU, mas assim se calhar era melhor programar em assembly? :p

Isto digo eu...
Título: Re: BeagleBone Black vs Raspberry Pi
Enviado por: MAntunes em 22 de Dezembro de 2014, 16:49
Depois de tanta conversa acho que vou guardar esta compra para mais tarde..
Vou-me dedicar agora ao Tiva e a explorar todos os perifericos e depois logo pensarei se avanço para outra plataforma.
Obrigado a todos pela ajuda!
Se ninguém se importar podem continuar a conversa, estou a acha-la bastante interessante e já aprendi algumas coisas :)
Título: Re: BeagleBone Black vs Raspberry Pi
Enviado por: senso em 22 de Dezembro de 2014, 17:08
É o tal argumento, a biblioteca é pesada, ocupa RAM e flash com fartura, mudar o estado de um pino são 20 instruções, mas para quê preocupar-me com isso se o core core a 80 ou 100 ou 180Mhz, por enquanto é tudo muito nessa base, acredito(ou melhor espero, lol, quem é que quero enganar, é tudo feito a despachar, não há tempo para optimizações) que em ambiente empresarial se tome mais atenção a isso, mas regra geral é bloat por todo o lado, faz-me confusão um telemovel actual ter dois cores gráficos, suporte nativo para descodificação H.264, gráficas dual core, processadores dual/quad core com extensões NEON, e o telemóvel é lento, empanca, encrava, crasha(só me falta ver um kernel panic no android) e no caso do meu chaço, usa 550MB de RAM para me mostrar um ecrã com uma duzia de icones, como é que tanto bloat é possivel?

Eu sei a resposta á pergunta, suporte para mil e um chipsets, no entanto "só" isso para mim não serve como desculpa para usos extravagantes de RAM, a falta de optimização de código actualmente é algo de muito comum e um dado adquirido.
Título: Re: BeagleBone Black vs Raspberry Pi
Enviado por: LuísR.A. em 22 de Dezembro de 2014, 17:13
Ai nem é problema das bibliotecas de mais baixo nivel. Não são assim tão pesadas.

É mesmo usarem tipo cenas de mais alto nivel para tudo e nunca meterem as mão a bibliotecas de mais baixo nivel ou mesmo registos. Isso e má programação...

É mais o pessoal a querer se despachar do que outra coisa... se vires as bibliotecas de baixo nivel da TI e da ST (falo so dessas que é as que mexi) até tão porreiras. Mas noto mesmo assim que registo directo (não assembly) faz uma differença significativa.
Título: Re: BeagleBone Black vs Raspberry Pi
Enviado por: Njay em 22 de Dezembro de 2014, 17:48
Hoje em dia consegue-se programar em C quase quase quase com a mesma performance de Assembly, se conhecermos bem o compilador e este for um bom compilador. O software é cada vez mais complexo (tem cada vez mais funcionalidade) e portanto começa-se a programar cada vez a mais alto nível, por um lado por questões de produtividade e por outro por questões de legibilidade, manutenção e extensibilidade da aplicação.

Excepto em casos muito, mas mesmo muito muito especiais (e não me lembro de nenhum desses casos), fazer uma aplicação comercial toda em Assembly é praticamente dar um tiro no pé. Eu digo isto e sou um grande fã de performance, inclusivé o Assembly já foi das minhas linguagens preferidas. Já programei em ASM de Z80 (cheguei a fazer um "semi"-compilador de C para as famosas calculadoras TI-8x), x86 16 e 32 bits, AVR, PIC, uma beliscadela num RISC load/store penso que da Freescale e cheguei a fazer 1 ou 2 intros de 4KB em Assembly para PC. No entanto, para quem quer e gosta de saber, aprender um bocado de Assembly é essencial, porque é a única linguagem que dá uma visão muito pouco ou nada filtrada da máquina. E se quiserem tirar o máximo partido da máquina, mesmo programando em C ou C++ ou noutra linguagem de mais alto nível, isso será útil, ajuda-vos a não serem surpreendidos pelos limites e a tomarem as melhores opções de implementação.

Sabem qual é a minha linguagem favorita hoje em dia? TCL (com TK para os grafismos). É praticamente tão flexível como LISP, e com a velocidade dos PCs de hoje (na verdade, mesmo com a dos de há 10 anos) não há diferenças relevantes para a generalidade das minhas aplicações. Nada bate a produtividade que tenho com isto, especialmente porque já pratico regularmente há mais de 10 anos. Se eu precisar de algo especialmente rápido, faço uma extensão em C para o TCL. Isto não implica que não goste e não pegue em C para alguma aplicação num microcontrolador (pegar em Assembly já é mais dificil, porque de facto não acho que justifique, pelas razões que descrevi atrás); não vou tentar arranjar um interpretador de TCL nessa plataforma, a cada aplicação a sua ferramenta. Cabe mesmo muita coisa em 2KB de flash se soubermos o que estamos a fazer.

Contudo, e independentemente da linguagem que utilizem, convém saber programar :) . Programar é um exercício conceptual e independente de qualquer plataforma. Quem programar mal numa linguagem vai programar mal em todas, e o mesmo para o inverso.