Embedded Linux Kernel Make With Compressed Boot PDF
Embedded Linux Kernel Make With Compressed Boot PDF
Kernel Make
(compressed with boot)
kernel
in $(TOPDIR)
% make
-- $(TOPDIR)
linux
(
vmlinux)
.
% file linux
ELF 32-bit LSB executable, Advanced RISC Machines ARM, version 1,
statically linked, not stripped
kernel
: File sequence
head-armv.S
or
head-arm-dsc21.S
main.c
arch/armnommu/kernel
init/
.
.
.
.
http://network.hanbat.ac.kr
Embedded Linux
arch/arm/kernel/head-armv.S
Set
bl __lookup_processor_type
bl __lookup_architecture_type
goto SYMBOL_NAME(start_kernel)
http://network.hanbat.ac.kr
Embedded Linux
Refer
http://www.linuxdoc.org/HOWTO/Linux-Init-HOWTO-5.html
main.c/start_kernel()
setup_arch()
setup_processor()
setup_architecture(machine_arch_type)
init_bootmem_node(), free_bootmem(), paging_init(),
cpu_idle();
http://network.hanbat.ac.kr
Embedded Linux
kernel
(not completed)
* (.text.init)
x16
.init
x 4096
* (.proc .info)
* (.arc h.info)
_stext, __init_begin
__proc_info_begin
__proc_info_end, __arch_info_begin
* (.data.init)
__arch_info_end
* (.setup.init)
__setup_start
* (.initc all.init)
* (.text)
__setup_end, __initcall_start
_text
...
.text
* (__ex_table)
* (__ksymtab)
* (__kallsyms)
* (.got)
http://network.hanbat.ac.kr
Embedded Linux
__start___ex_table
__stop___ex_table, __start___ksymtab
__stop___ksymtab, __start___kallsyms
__stop___kallsyms,
_etext
boot/compressed/vmlinux
boot/zImage
$(TOPDIR)/arch/
armnommu/boot/
compressed/vmlinux
head.o
misc.o
,
in ...boot/c ompressed/
head-armv.S
or
head-arm-dsc21.S
main.c
.
.
.
y
objcop
gzip, ld
http://network.hanbat.ac.kr
$(TOPDIR)/arch/
armnommu/boot/
zImage
y
objcop
zImage
kernel
(piggy.o)
Embedded Linux
$(TOPDIR)/arch/armnommu/boot/compressed/vmlinux
text
*(.start)
*(.text)
*(.fixup)
*(.gnu.warning)
*(.rodata)
*(.rodata.*)
*(.glue_7)
*(.glue_7t)
piggy.o
data
bss
stack
http://network.hanbat.ac.kr
*(.data)
*(.bss)
*(.stack)
Embedded Linux
LOAD_ADDR, _load_addr,
TEXT_START, _text, _start
input_data
input_data_end, _etext
_edata, BSS_START, __bss_start
_end
user_stack, sp (initially)
7
Flash Image
...boot/bootp/bootp
(Flash
)
init.o
zImage
ld
kernel.o
flash
kernel.o initrd.o
RAM
,
kernel.o
in .../boot/bootp/
initrd.o
ld
initrd
http://network.hanbat.ac.kr
Embedded Linux
,
in .. .boot/ c ompressed/
init.o
head.o
misc.o
head-armv.S
or
head-arm-dsc21.S
main.c
.
.
.
http://network.hanbat.ac.kr
flash
kernel.o initrd.o
RAM
,
kernel.o
in .../ boot/bootp/
kernel.o
kernel
( piggy.o)
initrd.o
Embedded Linux
,
in ...boot /c ompressed/
Flash
init.o
head.o
misc.o
flash kernel.o
initrd.o
RAM
,
kernel.o
in .../boot/bootp/
kernel.o
(1)
kernel
( piggy.o)
http://network.hanbat.ac.kr
head-armv.S
or
head-arm-dsc21.S
main.c
.
.
.
initrd.o
boot
block
RAM
(1) power-on
boot block pc
flash
init.o
.
(pc
r0=0, r1="unique
architecture #, MMU off, D-cache
off
.
head-armv.S
.)
Embedded Linux
10
,
in ... boot/ c ompressed/
Flash
init.o
head.o
misc.o
(2 )
kernel.o
kernel
( piggy.o)
.
.
.
(2) Flash
http://network.hanbat.ac.kr
head-armv.S
or
head-arm-dsc21.S
main.c
initrd.o
boot
block
RAM
head.o
misc.o
initrd.o
,
Embedded Linux
kernel
( piggy.o)
initrd.o
init.o
, kernel.o
RAM
kernel.o
.
11
,
in . ..boot/c ompressed/
Flash
init.o
head.o
misc.o
head-armv.S
or
head-arm-dsc21.S
kernel.o
kernel
( piggy.o)
main.c
kernel
( piggy.o)
.
.
.
http://network.hanbat.ac.kr
(3)
initrd.o
initrd.o
boot
block
RAM
head.o
misc.o
(3) head.o
.
kernel
Embedded Linux
12