You are on page 1of 2

These are the basic steps you would follow for any embedded project upto the

board bring up stage. Board bring up stage means all the devices embedded in the
system should have their drivers installed and working properly. It would typically
also include a basic OS running on the system.
1) You would develop the system software typically on a PC. This is called cross
platform development. For example, for the calendar project our target
system is based on Philips 89v51rd2 microcontroller which is 8bit 8051 type
microcontroller. But the entire object code generation was done on the PC
which is a totally different CPU. This means that the minimum you would
require for cross platform development would be a cross compiler (running on
a host system different from the target but producing object code for the
target CPU), a cross linker for linking together various object module
produced and loader to download the target executable code to the target.
This downloading can be through a serial interface like RS 232, USB etc or
parallel interface (rare nowadays). Another critical requirement would be
debugging the downloaded code. Microcontrollers nowadays come with inbuilt hardware facility for debugging from a host system. Most popular is the
JTAG interface for higher end microcontrollers (Philips 89v51 does not have it)
or some sort of single step control through hardware lines from the host
processor.
2) Typically all these steps, producing source code (editor), compiling (producing
OBJect modules), linking OBJ modules together (producing executable BINary
files), loading and debugging come packaged in a single program called IDE
(Integrated Development Environment) running on the host platform. In our
case we used the Keil 8051 IDE running on the PC but we could have used
any other IDE running on any other host system like Linux or Mac but meant
for the required target platform.
3) The Philips 89V51rd2 has a few built-in versatile timers/counter but no realtime clock. We used an external Maxim DS1307 RTC (realtime clock) which
has a battery backed 56-byte RAM and interfaces with the 89V51rd2 by the
I2C (I square c) serial bus interface. Serial Interface means there is a serial
clock line and a serial data line (2 lines are all that is required and the
protocol for communication between chips using I 2C is defined by the I2C
protocol specifications). We implemented the I2C protocol in software on the
89V51. This is called bit-banging. This means that we generated the clock
and shifted out and in the data using 8051 instructions. The other alternative
is chips come with built-in I2C interface.
4) We also used a 2-line 16 character alphanumeric display using
Hitachi HD44780 LCD chip. We interfaced with the LCD controller using four
dedicated I/O lines for data (writing or read a byte as 2 nibbles) and couple of
handshaking signals R/W and Enable.
5) We also used 4 seven segment LED digits. We used up 8 i/o lines for that but
used a software multiplexing scheme to handle four digits using 8-lines
instead of 32 lines you would normally require. Basically, we connected the 8
lines to one digit at a time for a period of 10 milliseconds. The persistence of
vision property ensured that the eye would see all four segments glowing
whereas in fact only one was glowing at a time. We used periodic interrupts
provided by the timer system to achieve the multiplexing.

6) We also used 16 button key pad and did the debouncing and scanning in
software and interfaced the keypad to the 89V51 through eight i/o lines.
7) Finally, we used the real-time OS RTX51 tiny provided by Keil for our system
as well as application development.

You might also like