borgware-2d/README.md

123 lines
4.1 KiB
Markdown
Raw Normal View History

Borgware-2D
===========
Firmware for AVR based two-dimensional LED matrices, especially the
[Blinken Borgs](http://www.das-labor.org/wiki/Blinken_Borgs) from
[Das LABOR](http://das-labor.org/index.en.php).
Main platform is the [Borg16](http://www.das-labor.org/wiki/Borg16) construction
kit. Other supported platforms are the
[LED Brett](http://www.hackerspace-ffm.de/wiki/index.php?title=LedBrett)
projector from [Hackerspace FFM](http://www.hackerspace-ffm.de) or the
[ELO Ping-Pong Board](http://www.elo-web.de/elo/mikrocontroller-und-programmierung/ping-pong/das-franzis-pingpong).
2014-03-06 23:59:05 +00:00
![Small Borg16](/doc/img/Borg16-small.jpg)
![Glow Lamp Borg](/doc/img/Glow_Lamp_Borg.jpg)
Animations
----------
2013-09-25 15:29:17 +00:00
2014-03-06 23:59:05 +00:00
![Matrix](/doc/img/anim-matrix.png)
![Fire](/doc/img/anim-feuer.png)
![Scrolling Text](/doc/img/anim-scroll.png)
2014-03-10 03:22:13 +00:00
[Animated GIF (3.5 MB)](/doc/img/borg_anim.gif)
Games
-----
2013-09-25 15:29:17 +00:00
2014-03-06 23:59:05 +00:00
![Snake](/doc/img/game-snake.png)
![Tetris](/doc/img/game-tetris.png)
2013-09-25 15:29:17 +00:00
2014-03-06 23:59:05 +00:00
* Tetris
* Classic: Standard Tetris Clone
* First Person Tetris: Rotate the bucket instead of the Tetromino.
* Bastet: Dices the worst the possible Tetromino the whole time.
2014-03-06 23:59:05 +00:00
* Snake
2014-03-07 21:43:21 +00:00
* Breakout
2014-03-06 23:59:05 +00:00
* Space Invaders
2013-09-25 15:29:17 +00:00
Build
=====
Supported build platforms are Linux, FreeBSD and Windows (via Cygwin). Due to
customized linker scripts, simulator support is currently limited to x86 and
x86_64 archs. Following dependencies have to be met:
2014-03-07 21:43:21 +00:00
Linux / FreeBSD
---------------
2014-03-07 21:43:21 +00:00
Package names are based on Debian/Ubuntu repositories. Please adapt the names
according to your Linux distribution (or FreeBSD for that matter).
* build-essential (pulls in an ordinary gcc build tool chain for the host)
2014-03-25 10:37:05 +00:00
* bc
* make (gmake on FreeBSD)
* libncurses5-dev
* gcc-avr
* avr-libc
* binutils-avr
* avrdude
* freeglut3-dev
2014-03-07 21:43:21 +00:00
Windows
-------
2014-03-25 10:37:05 +00:00
* AVR GCC toolchain for Windows, choose your poison:
* [WinAVR](http://winavr.sourceforge.net)
* already includes [avrdude](http://www.nongnu.org/avrdude/)
* installer offers to add the toolchain to the system path
* straight forward download from SourceForge
* project abandoned in 2010, therefore heavily outdated (avr-gcc 4.3.3)
* [Atmel AVR Toolchain for Windows](http://www.atmel.com/tools/atmelavrtoolchainforwindows.aspx)
* actively maintained, therefore fairly up to date
* homepage nags you with rather akward registration process before download
* you have to add the toolchain to the system path manually
* avrdude is not included (but it is possible to install WinAVR in parallel)
* [Cygwin(64)](http://www.cygwin.com/)
2014-03-25 10:37:05 +00:00
* bc
2014-03-06 23:59:05 +00:00
* make
* gcc-core
2014-03-25 10:37:05 +00:00
* gdb (in case you want to debug your code in the simulator)
2014-03-06 23:59:05 +00:00
* libncurses-devel (Cygwin)
2014-03-07 00:16:19 +00:00
* libncursesw-devel (Cygwin64)
2014-03-25 10:37:05 +00:00
* [libusb-win32](http://sourceforge.net/apps/trac/libusb-win32/wiki) in case you
want to use an USBasp programmer device with avrdude
Configure
---------
2014-03-07 21:43:21 +00:00
Open a (Cygwin) terminal, change to your checkout directory and type:
> make menuconfig
2014-03-07 21:43:21 +00:00
This starts a curses based text interface for configuring certain aspects of
your target platform. Be careful if you use an IDE like Eclipse to manage the
build, as integrated terminal emulators tend to choke on curses generated shell
output. Make sure that 'make menuconfig' has been run at least once in an
ordinary terminal emulator after a fresh checkout or after issuing 'make
mrproper'.
Compile
-------
To build for the actual target platform, just type:
> make
2014-03-07 00:16:19 +00:00
If you want to test and debug your code within a GUI application, you can use
the simulator:
> make simulator
2014-03-07 21:43:21 +00:00
In case you build on FreeBSD, just use 'gmake' instead of 'make'.
You can start the simulator by typing ./borgsim(.exe)
Simulator Handling
------------------
Please keep in mind that the simulator is NOT an emulator. All it does is
2014-03-25 10:37:05 +00:00
compile the source code to a native host application so you can step through
your C-Code. The GUI thread reads the simulated frame buffer every 40ms and
draws its contents.
2014-03-07 21:43:21 +00:00
Joystick directions are simulated by the WASD keys and SPACE acts as the fire
button. The OpenGL based simulator (Linux/FreeBSD) enables you to adjust the
viewing angle of the LED matrix via the arrow keys (not available on Windows).