全部博文(47)
分类: LINUX
2006-05-18 10:09:23
If you're using a compressed kernel (aka zImage), the startup code
in arch/arm/boot/compressed/head.S runs (and maybe some other architectur=
e
specific code in other head-*.S files in that directory). We then move
on to the decompressor proper (via decompress_kernel) in
arch/arm/boot/compressed/misc.c which gunzips the kernel. We then
relocate the kernel if required, and call it.
This is where we join the uncompressed kernel (aka Image) startup.
arch/arm/kernel/head-armv.S describes this, and includes such things
as page table initialisation and processor cache initialisation
(via support stuff in arch/arm/mm/proc-*.S).
We then proceed to start_kernel in init/main.c, and everything follows
from that point on. The only other thing to note is that the various
drivers are initialised via a table built by the linker from the
__initcall() and module_init() statements scattered throughout the
kernel source. The code which calls them can be found in init/main.c:
do_initcalls().
> If anyone has any experience in booting a bare EP7312 (i.e. not on a
> eval board) I'd appreciate some info (and code) on that too.
It should work without problem in the latest 2.4-rmk kernels - the
EP7312 support is quite basic at the moment, with very few external
devices.