current code: ninjabadgedist-20100803220827
datasheet archive: datasheets/
README is below. Questions/flames/comments are encouraged; email cstone at pobox dot com
Have fun!
Brandon 'cstone' Creighton / Ninja Networks
Hello! The code in this tarball is the source to the final image flashed to the Ninja Networks 2010 party badges. It's in a pretty rough state and will be cleaned up eventually, but I wanted to get it out there as soon as possible. To build everything, first set up an armv4t toolchain. I used OpenEmbedded GCC. You can find instructions on how to do this here: http://mc1322x.devl.org/ubuntu.html (I hear the CodeSourcery toolchain works as well.) Then, set up paths properly (nearly everything's in the Makefile) and run: % make kernel.bin from this directory. Main directories: - src/: mostly ARM-compiled ISRs and low-level stuff. Some code incorporated - kernel/: most of the badge code lives here. - lib/: a modified/stripped down version of Mariano Alvira's libmc1322x; this is statically linked in with the kernel - secret/: the unique data for each badge, including boss badges - openocd/: a ready-to-go (for linux/x86_64) openocd build plus the scripts I used - tests/: a set of test programs; includes source and binaries for flashing internal/external flash (dflash/eflash) Flash layout: kernel.bin is flashed to MCU flash, starting at flash address 8 (the first 4 bytes are a magic value and the second 4 bytes are the length to read at boot; see MC1322xRM 3.11 for details on the boot process.). A badge's unique ID and other decsriptive information such as item-grant/level-bump nonces are located at 0x18000 in flash. Choose a secret file from Boss badges (including black badges) were flashed with the table of all nonces. This goes into the external SPI flash IC; badge ID table starts at EXT_BADGEIDS_ADDR (0x4000), and the item tables follow. See the procedures in openocd/mcutils.cfg for details. Flashing/JTAG: We used Olimex ARM-USB-OCD and ARM-USB-TINYH programmers to flash the badges. I've also connected with a bus Pirate, although it's significantly slower than the Olimexes.