Page 1 of 1

simplified hardware details

PostPosted: Tue Apr 01, 2014 2:17 pm
by hrangan
What's a good place to get the high level hardware specs? Things like how much memory, processing power I have to work with, the most important hardware caveats, things to know before development, etc. Is the atmega 328 datasheet my point of reference, or is there a more readable version for someone new to embedded development?

Re: simplified hardware details

PostPosted: Tue Apr 01, 2014 3:01 pm
by rodot
It will be in the "hardware" page of the wiki, but I didn't write yet.
Gamebuino is running on an atmega328:
- 32KB ROM (extendable using the SD card)
- 2KB RAM (of which 500B are taken by the screen buffer)
- 16Mhz clock (about 20% of CPU time is taken by the library: screen refreshing, button reading, music playing etc.)
The most important hardware caveat is the small amount of RAM, and the lack of stack overflow detection (in my opinion). Oh, and as it's a 8bit CPU, it's super quick with 8bit variables, 16 bit variables are okay, and floats are terrible.
What else would you like to know?

Re: simplified hardware details

PostPosted: Tue Apr 01, 2014 3:20 pm
by hrangan
That answers most of my questions, thanks! This seems like enough that I can focus on the code instead of the hardware. I'm very new to embedded development and would like to play to my strengths, at least at first.

Is there anything I need to keep in mind to not overwrite the boot loader accidently? Or does that go into a different memory space. I recall Myndale working on storing global system settings outside of the bootloader.

Re: simplified hardware details

PostPosted: Tue Apr 01, 2014 4:22 pm
by rodot
Yep, Myndale did a really clever piece of code which allows you to store data in the program memory (but the version he uploaded doesn't seem to work... hem...). The Arduino IDE is set (in boards.txt) to limit your program's size (32768B - 2048B - 128B = 30592B) to avoid overwriting bootloader/settings accidently. So you don't have to worry about that ;)