Embedded systems programming has been a passion of mine for a couple of years now. I really enjoy bringing a processor online and making it dance to the beat of my drum. Over the past few days I have taken an interest in writing my own linker scripts, start code and a
CRT0 (C Runtime). In this article I will give you some background as to why this is important. I will guide you through the steps that I have taken to bring an ARM processor from reset to main() and beyond.
I am using the
SAM4E16E processor on a
SAM4E-EK development board. I have the Atmel
SAM-ICE debugging tool to facilitate loading code. The steps that I am taking in this article will be very similar for other ARM processors. I did some bare metal programming on the
Raspberry Pi about a year ago and it was similar. My development host is an up to date
Linux Mint 15 system.
 |
| Debugger (front) and Evaluation Kit (back) |
 |
| SAM-ICE and SAM4E-EK |