Niren Raju wrote:
> 1) What are the minimum files requried for successful compilation of
> project in WinARM ?
Not sure what you mean or why you ask, and teh answer is not simple.
WinARM is a collection of tools, documentation and examples. Determining
just what your application needs is not straightforward. Even if I could
give you a file list, it would be long. Just take it all - why wouldn't
you? Storage is cheaper than toilet paper. Another problem is that
different releases of WinARM have included different tools in different
folders. Some parts of the tool chain provide support for different
variants of teh ARM architecture, so what you need also depends on your
target. If you do wish to cut down its footprint, do it on a folder
basis rather than a file basis.
> 2)Whether low level startup code is same for all processors ?
No. An ARM9 for example has different startup requiremts than an ARM7
since it is likely to have external SDRAM, and cache memory for example.
Even within a single ARM architecture, parts from different vendors (or
even parts from teh same vendor) have different memory organisation,
different interrupt controllers, and different clock initialisation
requirements for example. There is much in a typical ARM microcontroller
that is vendor specific and not part of the ARM core. This includes
clock hardware and interrupt controllers which are typically configured
at in the runtime startup code. Then there is teh fact that there are
multipla ARM architecture variants - ARM7, ARM9, ARM11, Cortex M3 and
M8, XScale etc. And each of these can execute alternative instruction
sets (ARM and Thumb, and recently Thumb-2 for example). You even have a
choice of big or little endian byte ordering!
> 3)Whether same low level startup code can be used for two different
> programes but both using same processor ?
Yes of course, for a particular target, start-up code is normally
designed to be application independent. If you start putting application
dependencies in your start up code you loose that benefit. On some
targets you may have teh choice to execute code form Flash or RAM, the
start-up code for each would be different.
Hardware initialisation may vary, between targets, but the C runtime
environment initialisation follows this basic sequence.
- zero uninitialised static data,
- copy static initilaizers to RAM (to initialise it),
- set the stack pointer to the top of the RAM area allocated to the
- For C++ call constructors of static objects
- Jump to main()