Embedded Linux Kernel Make With Compressed Boot PDF
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