Competição: Acelerador Blokus Duo
XV Jornadas Sobre Sistemas Reconfiguráveis, Fevereiro 2019
Sistema de arbitragem Blokus Duo
O sistema de arbitragem pode correr de 2 formas: usando o código fonte a compilar e uma imagem com sistema operativo para os testes finais. Os ficheiros necessários encontram-se em baixo:
- Código fonte do árbitro !!! Versão actualizada blokus-host.c (10-02-2018) !!!
- Imagem com o sistema de arbitragem para unidade USB
- Sketch Arduino "ultra-minimalista" para testar a interacção com o árbitro.
Platforma
O sistema de arbitragem foi desenvolvido em FreeBSD 8.3 (amd64). Deverá funcionar em qualquer sistema baseado em POSIX (eventualmente com pequenas modificações relacionadas com a comunicação série). Utilizador/palavra-passe: blokus/blokus.
O código fonte compila e corre em Cygwin (serial_dev[] deverá ser modificado). É necessário executar o comando mode.com com2 BAUD=115200 PARITY=n DATA=8 STOP=1
antes de blokus-host.exe
Para outras platformas, é necessário modificar as entradas /dev em serial_dev[]. O init_serial()
poderá ter que ser também modificado.
Instruções para configuração do sistema de arbitragem numa unidade USB
- Descompactar blokus-1202.zip (apx. 748 MB) e obter o ficheiro blokus-1202.img (apx. 4GB)
- Usar uma pen/disco USB com capacidade superior a 3.7GB (4GB devem ser suficientes)
- Ligar a unidade USB a um computador com BSD/Linux, e procurar o dispositivo (/dev/daX ou /dev/sdX)
- Gravar a imagem na unidade USB:
dd if=blokus-1202.img of=/dev/daX bs=1048576 count=4096 conv=sync
- Unidade USB pronta para arrancar com o sistema.
dd pode dar um erro em algumas unidades USB com 4GB porque a imagem é ligeiramente maior que 4GB.
Linux
- Descompactar blokus-1202.zip (apx. 748 MB) e obter o ficheiro blokus-1202.img (apx. 4GB)
- Gravar a imagem (blokus-1202.img ) na unidade USB usando a aplicação Win32DiskImager.
Windows
Teste de comunicação
A interface USB-UART aparece como /dev/cuaUx (x é o número de dispositivo no ficheiro blokus-host.c). Alguns sistemas ocupam /dev/cuaU0 e /dev/cuaU1, mas o programa do árbitro detecta a UART automáticamente.
Certifique-se que o seu sistema funciona com todos os 4 comandos:
% ./blokus-host -a 1 -1 (para jogar com uma placa vs computador) % ./blokus-host -a 1 -1 -r (idem, mas player2 joga primeiro) % ./blokus-host -a 1 -2 (troca player1 com player2) % ./blokus-host -a 1 -2 -r
Teste ao Árbitro
Abra um navegador de Internet no endereço:
http://localhost:11000
Compile os programas do árbitro num terminal Cygwin:
% make
Sem qualquer sistema ligado, para colocar o árbitro a jogar sozinho:
% ./blokus-host.exe -a 1 | ./blokus-httpd.exe
Sem qualquer sistema ligado, para o utilizador jogar iterativamente pelas duas equipas:
% ./blokus-host.exe -a -1 | ./blokus-httpd.exeExemplo de um jogo:
Player 1: 53e0 Player 2: a8e0 Player 1: 21k7 Player 2: 94j0 Player 1: 61a0 Player 2: 71b3 Player 1: 72b0 Player 2: a1a0 Player 1: 23d2 Player 2: c1i1 Player 1: 75i1 Player 2: 63c0 Player 1: 16c0 Player 2: d3d2 Player 1: 36f1 Player 2: b5f1 Player 1: 87h0 Player 2: d7h0 Player 1: a4j0 Player 2: 8al6 Player 1: b8g0 Player 2: 57k5 Player 1: 19l4 Player 2: 39p0 Player 1: caq2 Player 2: 4cr2 Player 1: 2cr2 Player 2: bcg1 Player 1: edm0 Player 2: 7dm0jogo_demo.txt
Ligue os dois sistemas via portos USB, e corra o árbitro:
% ./blokus-host.exe -3 | ./blokus-httpd.exe
Outras versões
Pentobi win/linux/android. Instalador automático para v.12 em Windows aqui.
Competições anteriores
- REC 2018 - Caparica
- HEART 2015 - Boston
- ICFPT 2014 - Shanghai
- HEART 2014 - Sendai
- ICFPT 2013 - Kyoto (pre-finals).
Agradecimentos / Acknowledgements
Yasunori Osana por facultar os ficheiros de suporte / for giving permission to use the support files