Hi,

    Essentially, you need to know the science/art of firmware development.
There is no *standard* way of going about it: it all depends on the hardware
platform/microprocessor you are stating off with.

In any board, on reset, all register values and data pointer assume
pre-defined values. (Only you, the h/w designer knows these values). The
first instruction that is fetched by the uP (always written in assebly) is
of the type JMP xxxx. After jumping, the uP executes the "startup" code
(again written in assembly). The start-up code finally points to the rest of
the application, which is usually written in C.


Since you want to develop a board from absolute scratch, the best way to go
about it would be by reading the processor's datasheet. Generally speaking,
the more customized your board is, the more difficult it gets to find
information on the API's for firmware development: it eventually degenerates
to a black art.

It might be useful to do a google book search on topics like "embedded linux
development", "embedded firmware development", etc. Most firmware today is
written in assembly and C. It might be worth looking at the "Forth"
programming language. Bootloaders for a wide veriety of platforms have been
developed in Forth.

I too want to know more about how one goes about developing boards from
scratch. Please post any additional info you come across.

Thank you.

-Regards,
Shankar.


On Wed, Jul 2, 2008 at 1:44 PM, Aurelien Francillon <
[EMAIL PROTECTED]> wrote:

> Le Tuesday 01 July 2008 08:13:21 dum dummy, vous avez écrit :
> > Hi,
> >
> > I have a basic question; not sure it belongs to which list, if it belongs
> > here at all. But I think some of you can give me some pointers.
> >
> > How do I go about designing a hardware platform that would run software?
>
> well I really can't explain you how to design a platform from scratch, my
> first guess would be to look how the similar ones are working in deep
> details ... and read the datasheets ...
>
> > Now what? How does the
> > "cold-start" work? How do I configure the system (both my board and the
> PC)
> > so that I can download codes? There must be some software running on the
> > board that would download the code via a USB/serial cable. How is *that*
> > code first downloaded (kind of a chichen-and-egg problem :) )? Do the
> > processors "come" with such a code?
>
> JTAG is one of the more widespread way to program "cold" hardware, most of
> the
> existing cpu/microcontrollers have one.
> Other than that (disclaimer not all info here has been checked) some
> hardware
> can come with it's own protocol/bus in hardware i.e.  :
> - AVR parallel/serial/spi programming ( see the section called "memory
> programming" p288 of Atmega128 datasheet)
>
> or present as software in some dedicated place such as  :
> - bsl in the msp430 (telosb)
> - sam bootloader in some arm7 CPU by Atmel
>
>
> > Next, how is the 802.11g chip "recognized"?
>
> well the simplest is to design the software according to the platform
> otherwise if you have no idea run linux, but then you are completely out of
> topic from this list ...
>
> Aurélien
>
> _______________________________________________
> Tinyos-help mailing list
> [email protected]
> https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
>
_______________________________________________
Tinyos-help mailing list
[email protected]
https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help

Reply via email to