Slides

Hackeando um SmartBOX (com android) e instalando Linux & JAVA & OpenDevice

Description
Slides da apresentação de como Instalar o Linux e JAVA em um mini-pc com Android. Algumas dicas de como Debugar quando as coisas dão errado. A introdução a Biblioteca OpenDevice.
Categories
Published
of 58
All materials on our website are shared by users. If you have any questions about copyright issues, please report us to resolve them. We are always happy to assist you.
Related Documents
Share
Transcript
  • 1. Hardware Free Hackeando um SmartBOX e instalando Linux & JAVA gráfico Ricardo JL Rufino rjlr@cin.ufpe.br ricardo@criativasoft.com.br
  • 2. AgendaApresentação Ricardo JL Rufino ➔ Esp. em Engenharia de Software ➔ Mestrando em Gestão de TI (UFPE) ➔ Sócio fundador da CriativaSoft. ➔ Atuo no desenvolvimento de Software desde 2007, focado em soluções empresariais sobre plataforma JavaEE. Desenvolvedor de softwares open-source como Framework Web MVC Mentawai, ProjectNCode e instrutor de cursos de Java.
  • 3. Qual o Alvo ?
  • 4. Qual o Alvo ? ● ANDROID TELEVISION BOX – DealExtreme: AT-758 Box de TV Smart Android 4.2.2 ● Fabricante: Sunchip ● SoC A20 @ 1Ghz ( ARM Cortex-A7) ● 512MiB DDR3 @ 384MHz ● FLASH (NAND) - 4 GB ● HDMI ● WiFi 802.11 b/g/n ● Ethernet ● Micro-SD ● 1 USB2.0 Host, 1 USB2.0 OTG ● IRDA (Infra-Vermelho) ● VALOR: ~ $45 / R$128 http://linux-sunxi.org/Sunchip_SDK-758
  • 5. SoC (A20) – Visão Geral
  • 6. Outros Similares ● Olinuxino Micro
  • 7. Outros Similares ● Cubietruck (Cubieboard) http://www.cnx-software.com/2013/06/25/cubietruck-development-board-features-allwinner-a20- soc-2gb-ram-and-gb-ethernet/
  • 8. Instalação do Linux ● Fácil e a Difícil ● Fácil: Usando uma imagem já pronta: – http://linux-sunxi.org/Bootable_OS_images – LOGO DISPONIBILIZAREI A MINHA ! ● Difícil: Compilando e extraindo as informações do dispositivo.
  • 9. Instalação do Linux (Fácil) ● Existem já algumas distribuições prontas para vários dispositivos. ● Se não encontrar a imagem para o dispositivo idêntico, procura um do mesmo processador – Foi o que eu fiz !! Usando o Debian para A20 – http://linux-sunxi.org/Bootable_OS_images
  • 10. Gravação da Imagem ● Linux: Usando DD – dd bs=4M sd.img of=/dev/sdX – CUIDADO COM O X !! ● Windows – http://www.raspberrypi.org/documentation/installatio n/installing-images/windows.md
  • 11. Estrutura do SD ● O SD tem duas partições: – 1 – BOOT (64 MB – FAT) ● uEnv.txt : Parâmetros de Configuração ● script.bin : Configurações do Hardware (binário) ● uimage : Kernel ● SETOR onde fica o u-boot (não visível) – 2 – LINUX FS / ROOTFS (> 2GB EXT4) ● Sistema de Arquivos do LINUX ● No caso estamos usando o Debian
  • 12. Entendendo o Processo de BOOT ● Principais envolvidos – U-BOOT (u-boot-sunxi) – Kernel / Linux – (linux-sunxi) ● Etapas – O Processador inicia um chip com software de boot (Boot ROM) / BIOS – Segundo verifica se tem um SD e a partição de boot (u-boot) – O u-boot é configurado usando o uEnv.txt e script.bin – U-boot carrega o kernel(uImage) e passa o comando pra ele. – Kernel faz todo o processo normal do linux
  • 13. BOOT pela USB ● É mais rápido (empírica e teoricamente) ● Pode usar a mesma imagem para o SD ● Alterar arquivo uEnv.txt na partição de Boot do SD: – root=/dev/sda2 ro rootwait No caso sda2, porque a imagem tem duas partições e o linux tá na segunda, mas você pode usar só uma partição (tem que ser EXT4)
  • 14. Algumas coisas mais avançadas ● Quando não se tem o mesmo modelo é preciso extrair algumas informações do dispositivo. – Script.bin – Alguns links referentes a isso: ● http://linux-sunxi.org/Identification_guide ● http://linux-sunxi.org/Retrieving_device_information
  • 15. Script.bin ● É um arquivo que guarda as informações do hardware ● Ele pode ser capturado e descompilado (FEX) usando o Sunxi- tools ● Quando for usar uma imagem feita para outro equipamento você deve usar o Script.bin do seu equipamento. – NOTA: É bom desativar a partição NAND no A20, pois a minha corrompeu por algum motivo e perdi o S.O original... – Setar: nand_used = 0 ● Guida de Configuração: – http://linux-sunxi.org/Script.bin – http://linux-sunxi.org/Fex_Guide
  • 16. Infra-RED Deve ser habilitado no Script.bin (fex) ● Carregar módulo – modprobe sunxi-ir ● Verificar se foi inicializado corretamente – cat /proc/bus/input/devices – dmesg | grep IR ● Teste: – apt-get install input-utils – Input-events 0 ● Aparentemente funciona apenas com protocolo NEC [ir_para] ir_used = 1 ir0_rx = port:PB04<2><default><default><default>
  • 17. WIFI Deve ser habilitado no Script.bin (fex) Verificar se tem: [wifi_para] wifi_used = 1 wifi_sdc_id = 3 wifi_usbc_id = 2 wifi_usbc_type = 1 Etc... [usb_wifi_para] usb_wifi_used = 1 usb_wifi_usbc_num = 2 NOTA: Internamente é ligado em um barramento USB
  • 18. GPIO ● Deve ser habilitado no Script.bin (fex) – http://linux-sunxi.org/GPIO ● Carregar módulo – modprobe gpio-sunxi ● Programação Basica – # Exportar pino para o usarspace – echo 1 > /sys/class/gpio/export – # Configurar direção (Output) – echo out > /sys/class/gpio/gpio1_ph20/direction – # Alterar Valores – echo 1 > /sys/class/gpio/gpio1_ph20/value – echo 0 > /sys/class/gpio/gpio1_ph20/value [gpio_para] gpio_used = 1 gpio_num = 2 gpio_pin_1 = port:PH20<1><default><default><0> gpio_pin_2 = port:PH10<0><default><default><0>
  • 19. JAVA
  • 20. JAVA 8 ARM wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept- securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u6-b23/jdk-8u6-linux-arm-vfp-hflt.tar.gz tar zxvf jdk-8u6-linux-arm-vfp-hflt.tar.gz -C /opt mv jdk1.8.0_XX jdk1.8.0 update-alternatives --install /usr/bin/javac javac /opt/jdk1.8.0/bin/javac 1 update-alternatives --install /usr/bin/java java /opt/jdk1.8.0/bin/java 1 update-alternatives --config javac update-alternatives --config java ● Verificar se foi instalado corretamente java -version
  • 21. JAVA 8 ARM - interface gráfica Não precisamos de um ambiente gráfico completo como: GNOME , KDE, LXDE Podemos rodar diretamente no 'X' sem nenhuma coisa no monitor (nem o relógio) ● Você pode usar a API da Swing e AWT – Ainda não funciona o JAVA FX !!! = ( – Precisa fazer o driver da GPU MALI400 funcionar !! ● Instalar o X – # apt-get install xorg ● Configurar o script: ~/.xsession ● Startar o Servidor gŕafico – # startx
  • 22. ~/.xsession xrandr --output VGA1 --mode 1280x720 #For setting a video mode xrandr --fb 1280x720 #Not always required, sets the framebuffer size xset -dpms s off # Sua aplicação ! java -jar /opt/jdk1.8.0/demo/jfc/SwingSet2/SwingSet2.jar
  • 23. E quando as coisas NÃO dão CERTO ?
  • 24. Debugar pela UART ● É possível monitorar o processo de BOOT e saber o que está acontecendo pela porta UART ● Usei um ARDUINO UNO pra isso !! PS: No Leonardo acho que não da certo ! Tem que ter um chip separado de USB
  • 25. Placa
  • 26. Debugando usando o Arduino
  • 27. Debugando usando o Arduino ● Nessa configuração o arduino está em RESET, ou seja, ele está funcionando apenas o CHIP USB (Atmega16U2) para fazer a conversão: – Serial UART → USB ● Plugue o arduino no seu computador ● Abra um terminal serial (pode ser o putty) ● No Linux: – # screen /dev/ttyACM{X} 115200
  • 28. Melhor que Raspberry ?!?! ● Bonitinho (vem com “case”) ● Mais rápido (1Ghz sem overclock) – FALAR MAIS.. ● Micro-SD ● WiFI ● Memória Interna (FLASH) ● MAAAAAsss não tem GPIO !!
  • 29. Dúvidas ?
  • 30. OpenDevice Open IoT (Internet Of Things) Platform and Framework. “Conjunto de ferramentas e APIs para construção de soluções de Internet das Coisas”
  • 31. OpenDevice ● Apis e Ferramentas que permitem construir sistemas de: – Automação Residencial – Monitoramento de Sensores – Monitoramento de Energia – Controle de Robôs – Smart City
  • 32. OpenDevice ● Objetivo: O principal objetivo é monitorar e controlar hardwares baratos como Arduino, RaspberryPI e plataformas semelhantes, local (offline) ou sobre a nuvem usando linguagens de programação de alto nível e com a abstração de protocolos e detalhes de baixo nível.
  • 33. Foco no que é importante ! Isso permite que você se concentre em seu projeto e na inovação, deixar os detalhes obscuros de protocolos de comunicação e especificações com OpenDevice, você vai dar um passo importante para o sucesso de seu projeto.
  • 34. Tecnologias Envolvidas
  • 35. Funcionalidades ● Open API (for: REST, JavaScript, Java, Android, Arduino, EnergiaIDE) ● Real-time (WebSockets) ● Event-Based ● Async & non-blocking ● Multi-protocolo (Usb, Bluetooth, TCP) ● Independente de Linguagem ● Independente de Plataforma (Windows, Linux, Mac, MIPs on OpenWRT) ● Lightweight/Built-in Servers (não precisa do tomcat ou glassfish)
  • 36. Visão Geral
  • 37. Event-driven and Real-Time Você não precisa consultar a informação, ela vem até você quando os dados estiverem disponíveis
  • 38. Hands-On/Of Uma pitada de java...
  • 39. Blink - Arduino * C / Arduino
  • 40. Blink - Java
  • 41. Blink Java (mais livre)
  • 42. Blink Java (Comandos)
  • 43. Incrementando no Arduino * C / Arduino
  • 44. Incrementando no JAVA Definição de Dispositivos Definição das Conexões * JAVA
  • 45. Adicionando Rest ! Adicione essa linha e seja feliz !!! Você pode acessar pelo navegador … ou com JavaScript !
  • 46. Agora ficou sério ! WebSockets ! Adicione essas linhas e fique Real-Time e de quebra servidor http ! Biblioteca de Rest e WebSocket ! (adicione no pom.xml) Ao adicionar o servidor de W.S automaticamente já é adicionado o servidor de REST
  • 47. Api JavaScript para WebSocket
  • 48. Instalação ● Usamos o Maven (arquivo pom.xml) Substitua: ${opendevice-version} pela ultima versão, atualmente: 0.1.2-SNAPSHOT. Qualquer dúvida consulte: https://opendevice.atlassian.net/wiki/display/DOC/A.+First+Steps+with+OpenDevice
  • 49. Instalação ● Adicionar o repositório da Sonatype
  • 50. Instalação (lib arduino/similar) ● Baixar ou Clonar o repositório do GIT – opendevice-hardware-libraries ● Copiar a pasta: arduino/OpenDevice – Para pasta /libraries da IDE do Arduino ● Reinicie a IDE do Arduino Github / Sources: https://github.com/OpenDevice
  • 51. HORÁRIO RESERVADO À PROGRAMAÇÃO E MÃO NA MASSA
  • 52. Postura ! Nós somos desenvolvedores, não somos “normais” ACEITE ISSO.. !!! Devemos ser agentes de Transformação e Criação.
  • 53. Atitude ! Não espere a ideia brilhante ! Execute a ideia que você gosta. Descubra o que você gosta Não escute os outros ● Muita gente vai dizer que você não consegue ● Muita gente vai dizer que já existe
  • 54. Dúvidas ?
  • 55. Contatos ● E-mail: – ricardo@criativasoft.com.br – rjlr@cin.ufpe.br ● Facebook – /ricardojlrufino
  • 56. Link's ● OpenDevice: – http://opendevice.io – https://github.com/OpenDevice – https://opendevice.atlassian.net/wiki – http://opendevice.criativasoft.com.br ● Facebook – /opendevice
  • 57. Link's ● Onde Comprar ? (Gringos): – www.adafruit.com – www.sparkfun.com – www.seeedstudio.com – imall.iteadstudio.com – www.dx.com (mercado livre – demora....) ● Brasil – Lab de Garagem (http://www.labdegaragem.org – Multilógica Shop (http://multilogica-shop.com/); – Rlrobotics (http://www.rlrobotics.ind.br/arduino); – Webtronico (http://www.webtronico.com/)
  • 58. Obrigado pela sua atenção.
  • Search
    Related Search
    We Need Your Support
    Thank you for visiting our website and your interest in our free products and services. We are nonprofit website to share and download documents. To the running of this website, we need your help to support us.

    Thanks to everyone for your continued support.

    No, Thanks