Microprocessors didn't always have Gigabytes of memory, and Microcontrollers didn't always have hundreds of kB of flash. The Hackaday 1kB challenge is a contest where entrants must create a device which uses 1kB or less of executable program code. The contest is open to any microcontroller or microprocessor architecture. Anything from Arduino board with AtMega328's to ARM and beyond. External hardware such as leds, switches, and 74 series logic chips are allowed and encouraged - but the machine code must be less than 1kB.
Official Rules:
- Contest entry deadline is Thursday, January 5, 2017 09:00 pm PST (+8 UTC)
- This contest is open to any microcontroller or microprocessor architecture.
- Projects must use 1 kB or less of code, including any initialized data tables, bootloaders, and executable code.
- <UPDATE> Unavoidable Hardcoded bootloaders such as propeller, ESP8266, or i.mx series don't count toward the 1 kB limit. Entrants can use the bootloader code to start their processor up and get their own code executing. Once things are running though, any calls into bootloader or ROM tables count against you.
- Entrants must show how they came to the 1 kB calculation (map files, assembler/linker output, etc)
- Existing computer systems can be used (Example - Atari 2600) however, the size of any rom routines or data tables must be included in the 1 kB calculation.
- Mask Rom: If you are using a chip with masked rom code, you must include the size of any ROM routines you call in your final executable size calculation. If you wanted to write a program in SPIN for the Parallax Propeller, you’d need to include the SPIN interpreter ROM, which would put you over the 1 kB limit.
- Projects can use multiple processors as long as they are running the same 1 kB binary, or if the total size of the ROM being run is less than 1 kB. (Example - two micros running different binaries which are 512 bytes long each)
- Projects must fill out the description, details, components, and project logs.
- Projects must be open source. Source code, schematics, and board layouts for the project software must be either posted in the files section, or include a link to a public repository such as Github.
- Projects must use publicly accessible toolchains. Closed source toolchains (example - IAR or Keil) can be used as long as the demo versions will compile/assemble the contest code.
- All entries will be judged by Hackaday staff.
- Winners will be announced on or around Monday, January 16th
- Hackaday Staff, Employees of SupplyFrame, Judges or the family of any of the preceding are not eligible to take part in this contest. Everyone is still encouraged to build awesome stuff and show it off though.
Judging Criteria:
- Does the entry fit within the 1 kB size constraint?
- How novel or interesting is the entry?
- Does the documentation explain the project?
- Are any novel techniques (example: Self modifying code) explained?
- How complete is the entry? Projects don’t have to be complete or working to enter, however those which are finished and working by the deadline may be judged higher.
Prizes:
Any Hackaday contest needs some awesome prizes, and this one is no different.
- Grand prize is a Digi-Comp II kit from EMSL
- First prize is a Maker Select 3D printer V2
- Second Prize is a Bulbdial Clock kit from EMSL
- Third Prize is a Blinkytile kit from Blinkinlabs
If the source code has a
#define HACKADAY_1K
that when commented out causes a whole lot more features to be available... That's ok, right? As long as the version that does compile down to 1K is (minimally) functional?