How Many Lines Of Code Does Linux Kernel 4.X Have ARM Linux Booting Process

You are searching about How Many Lines Of Code Does Linux Kernel 4.X Have, today we will share with you article about How Many Lines Of Code Does Linux Kernel 4.X Have was compiled and edited by our team from many sources on the internet. Hope this article on the topic How Many Lines Of Code Does Linux Kernel 4.X Have is useful to you.

ARM Linux Booting Process

Kini usa ka serye sa mga artikulo nga nagpatin-aw kung giunsa ang pag-boot sa Linux kernel sa arkitektura sa ARM. Kini usa ka bahin.

Proseso sa Boot sa ARM Linux:

Atong ipasabut ang proseso sa boot sa AT91RM9200 system-on-chip, nga gitukod sa palibot sa ARM920T ARM Thumb processor. Ang Kwickbyte nagtukod og usa ka embedded board nga gitawag og kb9202 base sa AT91RM9200. Atong kuhaon kini nga board isip usa ka pananglitan ug tan-awon kung giunsa ang pag-boot sa Linux niini nga board.

Sa dili ka pa magsugod sa pagbasa niini kinahanglan nimo nga basahon ang AT91RM9200 data sheet (specification).

Kinahanglan usab nimo nga basahon ang ARM Architecture Reference Manual para mas masabtan ang proseso sa boot.

Mga component sa Linux Boot Process:

Ang proseso sa pag-boot sa Linux naglakip sa mosunod nga mga sangkap.

Bootloader

Imahe sa Kernel

Root Filesystem

Sa wala pa naton makita kung giunsa ang paglihok sa mga sangkap sa ibabaw, ang mosunud mao ang dagan sa tawag sa proseso sa boot sa Linux Kernel alang sa arkitektura sa bukton. Naghatag kini usa ka dako nga litrato sa tibuuk nga proseso sa boot sa Linux. Gigamit namon ang U-boot bootloader.

Proseso sa Boot sa ARM Linux: Dakong Hulagway

U-boot:

_pagsugod (cpu/arm920t/start.S)

start_code (cpu/arm920t/start.S)

start_armboot (lib_arm/board.c)

board_init (board/kb9202/kb9202.c)

timer_init (cpu/arm920t/at91/timer.c)

serial_init (mga drayber/serial/at91rm9200_usart.c)

main_loop (lib_arm/board.c)

Karon ang u-boot nagdagan ug naa sa u-boot prompt ug andam nga modawat sa mga sugo. Hunahunaa nga ang imahe sa kernel gikarga sa RAM ug gi-isyu ang bootm command.

do_bootm (komon/cmd_bootm.c)

bootm_start (komon/cmd_bootm.c)

bootm_load_os (komon/cmd_bootm.c)

do_bootm_linux (lib_arm/bootm.c)

stext (linux/arch/arm/kernel/head.S)

Ang kontrol gihatag sa linux.

Linux Kernel:

stext (arch/arm/kernel/head.S:78)

__lookup_processor_type (arch/arm/kernel/head-common.S:160)

__lookup_machine_type (arch/arm/kernel/head-common.S:211)

__create_page_tables (arch/arm/kernel/head.S:219)

__arm920_setup (arch/arm/mm/proc-arm920.S:389)

__enable_mmu (arch/arm/kernel/head.S:160)

__turn_mmu_on (arch/arm/kernel/head.S:205)

__switch_data (arch/arm/kernel/head-common.S:20)

start_kernel (init/main.c:529)

start_kernel (init/main.c:529)

tick_init(kernel/time/tick-common.c:413)

setup_arch (arch/arm/kernel/setup.c:666)

setup_machine (arch/arm/kernel/setup.c:369)

lookup_machine_type ( )

setup_command_line (init/main.c:408)

build_all_zonelists (mm/page_alloc.c:3031)

parse_args (kernel/params.c:129)

mm_init (init/main.c:516)

mem_init (arch/arm/mm/init.c:528)

kmem_cache_init (mm/slab.c, mm/slob.c, mm/slub.c)

sched_init (kernel/sched.c)

init_IRQ (arch/arm/kernel/irq.c)

init_timer (kernel/timer.c:1713)

hrtimers_init (kernel/hrtimer.c:1741)

softirq_init (kernel/softirq.c:674)

console_init (mga drayber/char/tty_io.c:3084)

vfs_caches_init (fs/dcache.c:2352)

mnt_init (fs/namespace.c:2308)

init_rootfs ()

init_mount_tree (fs/namespace.c:2285)

do_kern_mount (fs/namespace.c:1053)

set_fs_pwd(fs/fs_struct.c:29)

set_fs_root(fs/fs_struct.c:12)

bdev_cache_init (fs/block_dev.c:465)

chrdev_init (fs/char_dev.c:566)

signals_init (kernel/signal.c:2737)

rest_init (init/main.c:425)

kernel_thread (431, arch/arm/kernel/process.c:388)

kernel_thread() nagmugna ug kernel thread ug kontrol gihatag sa kernel_init().

kernel_init (431, init/main.c:856)

do_basic_setup (888, init/main.c:787)

init_workqueues (789, kernel/workqueue.c:1204)

driver_init (793, drivers/base/init.c:20)

do_initcalls (796, init/main.c:769) /* Nagtawag sa tanang subsytem init functions */

prepare_namespace (906, init/do_mounts.c:366)

initrd_load (399, init/do_mounts_initrd.c:107)

rd_load_image (117, init/do_mounts_rd.c:158) /* kon initrd gihatag */

identify_ramdisk_image (179, init/do_mounts_rd.c:53)

handle_initrd (119, init/do_mounts_initrd.c:37) /*kon malampuson ang rd_load_image */

mount_block_root (45, init/do_mounts.c:233)

do_mount_root (247, init/do_mounts.:218)

mount_root (417, init/do_mounts.c:334) /* kung wala gihatag ang initrd */

mount_block_root (359, init/do_mounts.c:233)

do_mount_root (247, init/do_mounts.c:218)

init_post (915, init/main.c:816)

run_init_process (847, init/main.c:807)

kernel_execve (810, arch/arm/kernel/sys_arm.c:81)

User Space

init() /*userspace /sbin/init */

Bootloader:

Ang usa ka bootloader usa ka gamay nga programa nga magkarga sa imahe sa kernel sa RAM ug mag-boot sa imahe sa kernel. Gitawag usab kini nga bootstrap tungod kay nagdala kini (pagbira) sa sistema pinaagi sa pagkarga sa usa ka operating system. Ang bootloader magsugod sa dili pa magsugod ang bisan unsa nga software ug magsugod sa processor ug maghimo sa cpu nga andam sa pagpatuman sa usa ka programa sama sa usa ka operating system. Kadaghanan sa mga processor adunay default nga adres diin ang unang mga byte sa code makuha kung magamit ang gahum o ang board gi-reset. Gigamit sa mga tigdesinyo sa hardware kini nga kasayuran aron tipigan ang code sa bootloader sa kana nga adres sa ROM o flash. Tungod kay kini kinahanglan nga magsugod sa cpu ug kinahanglan nga magpadagan sa usa ka programa nga nahimutang sa arkitektura nga piho nga address nga mga bootloader labi ka espesipiko sa processor ug espesipiko sa board. Ang matag naka-embed nga board adunay usa ka bootstrap aron ma-download ang imahe sa kernel o standalone nga aplikasyon sa board ug magsugod sa pagpatuman sa imahe sa kernel o aplikasyon. Ang bootloader ipatuman kung ang gahum magamit sa usa ka processor board. Sa panguna kini adunay gamay nga mga bahin aron ma-load ang imahe ug i-boot kini.

Posible usab nga kontrolon ang sistema gamit ang interface sa hardware debug sama sa JTAG. Kini nga interface mahimong gamiton sa pagsulat sa boot loader program ngadto sa bootable non-volatile memory (eg flash) pinaagi sa pagtudlo sa processor core sa paghimo sa gikinahanglan nga mga aksyon sa pagprograma sa non-volatile memory. Kasagaran gibuhat sa unang higayon sa pag-download sa batakang bootloader ug alang sa pipila ka proseso sa pagbawi. Ang JTAG usa ka sumbanan ug sikat nga interface nga gihatag sa daghang mga board vendor. Ang ubang mga micro controllers naghatag og espesyal nga mga interface sa hardware nga dili magamit sa pagkuha sa arbitraryong pagkontrol sa usa ka sistema o direkta nga pagpadagan sa code, apan sa baylo gitugotan nila ang pagsal-ot sa boot code ngadto sa bootable non-volatile memory (sama sa flash memory) pinaagi sa yano nga mga protocol. Unya sa yugto sa paggama, ang ingon nga mga interface gigamit sa pag-inject sa boot code (ug posible nga uban pang code) sa dili dali nga panumduman. Human sa pag-reset sa sistema, ang micro controller magsugod sa pag-execute sa code nga giprograma ngadto sa non-volatile memory niini, sama sa naandan nga mga processor nga naggamit og ROMs para sa booting. Sa daghang mga kaso ang ingon nga mga interface gipatuman pinaagi sa hardwired logic. Sa ubang mga kaso ang ingon nga mga interface mahimo’g mahimo pinaagi sa software nga nagdagan sa integrated on-chip boot ROM gikan sa mga GPIO pin.

Adunay pipila ka uban pang mga third party bootloader nga magamit nga naghatag daghang hugpong sa mga bahin ug dali nga interface sa gumagamit. Mahimo nimong i-download kini nga mga third party bootloader sa board ug mahimo silang mga default nga bootloader alang sa imong board. Kasagaran ang mga bootloader nga gihatag sa mga board vendor gipulihan niining mga third party bootloader. Adunay pipila ka mga ikatulo nga partido nga boolader nga magamit ug ang uban niini bukas nga gigikanan (o libre nga mga bootloader) ug ang uban komersyal. Ang uban niini mao ang Das U-Boot, Pula nga boot, GRUB (para sa mga desktop), LILO, Loadlin,, bootsect-loader, SYSLINUX, EtherBoot, ELILO.

Atong kuhaon ang U-boot boot loader isip atong boot loader. Ang U-boot mao ang kaylap nga gigamit nga boot loader sa mga naka-embed nga sistema. Atong ipatin-aw ang code gikan sa u-boot-2010.03 nga tinubdan. Mahimo nimong i-download ang U-boot gikan sa mosunod nga site. http://www.denx.de/wiki/U-Boot

Giunsa paghimo ang U-boot:

Base sa configuration sa U-boot, ang tanang assembly files (.S) ug C files (.c) gihugpong gamit ang cross compiler nga gitukod para sa usa ka partikular nga architecture ug object files(.o) ang mamugna. Kining tanan nga mga object file gisumpay sa linker ug usa ka executable file ang pagabuhaton. Ang object file o executable file usa ka koleksyon sa mga seksyon sama sa.text,.data,.bss ug uban pa. Object files ug executable files adunay file format sama sa elf. Ang tanan nga mga seksyon sa mga file sa butang gihan-ay sa executable file base sa usa ka script nga gitawag linker script. Kini nga script nagsulti kung asa ang tanan nga mga seksyon ikarga sa memorya kung kini modagan. Ang pagsabut niini nga script importante kaayo aron mahibal-an kung giunsa paghimo ang boot loader ug kernel ug kung giunsa ang lainlaing mga seksyon sa boot loader o kernel gikarga sa memorya.

Kasagaran, kung ang usa ka programa gipadagan (gipatuman) ang usa ka loader nagbasa sa executable file ug nagkarga sa lainlaing mga seksyon sa executable file sa gitakda nga lokasyon sa memorya ug nagsugod sa pagpatuman sa function sa pagsugod (entry point) nga gitakda sa script sa linker. Apan, kung gusto nimo nga modagan (load) ang usa ka boot loader wala’y bisan unsang loader nga i-load (sa panguna aron masabtan ang format sa file) lainlaing mga seksyon sa executable file sa panumduman. Unya kinahanglan nimo nga mogamit usa ka himan nga gitawag objcopy nga magkuha sa tanan nga mga seksyon gikan sa executable file ug maghimo usa ka binary file nga wala’y bisan unsang format sa file. Kini nga binary file mahimong i-load sa memorya ug ipatuman o mahimong isulat sa ROM sa usa ka partikular nga adres (espesipiko sa arkitektura) nga ipatuman sa cpu kung ang gahum magamit sa board.

Hunahunaa nga base sa U-boot configuration ang tanan nga mga file gihugpong ug ang mga object file gimugna. Ang U-boot makefile naggamit sa mosunod nga linker script (espesipiko sa arkitektura) sa paghimo og executable file.

File: cpu/arm920t/u-boot.lds

32 OUTPUT_FORMAT(“elf32-littlearm”, “elf32-littlearm”, “elf32-littlearm”)

33 OUTPUT_ARCH(bukton)

34 ENTRY(_pagsugod)

35 MGA SEKSYON

36

37. = 0x00000000;

38

39. = ALIGN(4);

40. teksto:

41

42 cpu/arm920t/start.o (.text)

43 *(.teksto)

44

4546. = ALGN(4);

47.rodata: *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))

48

49. = ALIGN(4);

50.data: *(.data)

51

52. = ALIGN(4);

53. nakuha: *(.nakuha)

54

55. =.;

56 __u_boot_cmd_start =.;

57.u_boot_cmd: *(.u_boot_cmd)

58 __u_boot_cmd_end =.;

59

60. = ALIGN(4);

61 __bss_sugod =.;

62.bss (NOLOAD): *(.bss). = ALIGN(4);

63 _katapusan =.;

64

OUTPUT_FORMAT sa linya #32 ipiho ang format sa file sa executable file. Dinhi ang executable file format mao ang elf32 ug ang endianness gamay nga endian. OUTPUT_ARCH sa linya # 33 ipiho ang arkitektura kung diin kini nga code nagdagan. Ang ENTRY sa linya #34 nagtino sa pagsugod function(entry point) sa u-boot program. Dinhi ang entry point mao ang _start.

Ang mga SEKSYON sa linya #35 naghubit kung giunsa ang lainlaing mga seksyon nga gimapa sa executable file. Gigamit sa loader ang mga adres nga gitakda sa kini nga seksyon aron makarga ang lainlaing seksyon sa programa sa memorya.

‘.’ sa linya #37 nagtino sa pagsugod nga adres diin ang mga mosunod nga mga seksyon kinahanglan ikarga. Sa kini nga kaso ang pagsugod nga adres mao ang 0x00000000. Pagkahuman niini sa linya #39 ang memorya gi-align sa 4 bytes ug ang.text nga seksyon nagsunod sa linya #40.

40. teksto:

41

42 cpu/arm920t/start.o (.text)

43 *(.teksto)

44

Sa ‘.’ posisyon (0x00000000) ang code sa cpu/arm920t/start.o gimapa ug nagsunod sa code nga anaa sa.text nga mga seksyon sa tanang ubang butang (.o) nga mga file. Ang cpu/arm920t/start.o naglangkob sa _start() function(sa assembly language) nga maoy entry point niini nga programa.

Karon ang ‘.’ anaa sa 0x00000000 + gidak-on sa (.text). Sa makausa pa ang memorya gi-align sa 4 bytes ug.rodata nga seksyon nagsunod sa linya #47.

. = ALIGN(4);

47.rodata: *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))

Ang mga seksyon sa .rodata gikan sa tanan nga mga butang nga mga file gimapa sa kini nga adres. Nagsunod sa.data ug.git nga mga seksyon.

49. = ALIGN(4);

50.data: *(.data)

51

52. = ALIGN(4);

53. nakuha: *(.nakuha)

Ang matag U-boot command kay usa ka butang nga tipo nga ‘cmd_tbl_t’ nga adunay command name, help string ug function pointer nga ipatuman kung kini nga command gipadagan. Tanan kini nga mga butang sa mando gibutang sa memorya nga sunud-sunod. Ang matag usa niini nga command object gitukod sa usa ka U-boot nga gihubit nga seksyon nga gitawag.u_boot_cmd sa object file. Kining all.u_boot_cmd nga mga seksyon gibutang sa memorya human sa mga seksyon sa ibabaw(.data ug.git).

. =.;

56 __u_boot_cmd_start =.;

57.u_boot_cmd: *(.u_boot_cmd)

58 __u_boot_cmd_end =.;

Ang __u_boot_cmd_start naglangkob sa pagsugod sa mga butang nga mga sugo ug ang __u_boot_cmd_end naglangkob sa katapusan sa mga butang nga sugo.

Ug sunod mosunod sa.bss (uninitialized global variables) nga mga seksyon.

60. = ALIGN(4);

61 __bss_sugod =.;

62.bss (NOLOAD): *(.bss). = ALIGN(4);

63 _katapusan =.;

Ang __bss_start nagpunting sa.bss start address ug ang _end naglangkob sa katapusan sa tanan nga mga seksyon.

Ang paggamit niini nga linker script linker makamugna og executable file nga gitawag og u-boot. Ang tool sa Objcopy kay gigamit para makamugna ug binary file gikan sa u-boot executable file.

u-boot.bin: u-boot

$(OBJCOPY) $OBJCFLAGS -O binary $

Video about How Many Lines Of Code Does Linux Kernel 4.X Have

You can see more content about How Many Lines Of Code Does Linux Kernel 4.X Have on our youtube channel: Click Here

Question about How Many Lines Of Code Does Linux Kernel 4.X Have

If you have any questions about How Many Lines Of Code Does Linux Kernel 4.X Have, please let us know, all your questions or suggestions will help us improve in the following articles!

The article How Many Lines Of Code Does Linux Kernel 4.X Have was compiled by me and my team from many sources. If you find the article How Many Lines Of Code Does Linux Kernel 4.X Have helpful to you, please support the team Like or Share!

Rate Articles How Many Lines Of Code Does Linux Kernel 4.X Have

Rate: 4-5 stars
Ratings: 7545
Views: 24111106

Search keywords How Many Lines Of Code Does Linux Kernel 4.X Have

How Many Lines Of Code Does Linux Kernel 4.X Have
way How Many Lines Of Code Does Linux Kernel 4.X Have
tutorial How Many Lines Of Code Does Linux Kernel 4.X Have
How Many Lines Of Code Does Linux Kernel 4.X Have free
#ARM #Linux #Booting #Process

Source: https://ezinearticles.com/?ARM-Linux-Booting-Process&id=4774950

Related Posts

default-image-feature

How Many Combinations In A 4 Digit Code Between 0-9 Beat the System – How to Win Pick 3

You are searching about How Many Combinations In A 4 Digit Code Between 0-9, today we will share with you article about How Many Combinations In A…

default-image-feature

How Many 5-Digit Zip Codes Are There In The Us Direct Mail Marketing – Sending Bulk Mail

You are searching about How Many 5-Digit Zip Codes Are There In The Us, today we will share with you article about How Many 5-Digit Zip Codes…

default-image-feature

How Many 3-Letter Codes Can Be Made From 7 Letters Open the Door to Intimacy and Power – Knowing God’s Covenant Names

You are searching about How Many 3-Letter Codes Can Be Made From 7 Letters, today we will share with you article about How Many 3-Letter Codes Can…

default-image-feature

How Long.Does It Take.For.Fb To.Rtxt Access.Code QR Codes in Craft Beer Industry Is About Something Old, Something New, Yet Innovative

You are searching about How Long.Does It Take.For.Fb To.Rtxt Access.Code, today we will share with you article about How Long.Does It Take.For.Fb To.Rtxt Access.Code was compiled and…

default-image-feature

How Long Will.An Engince Code Stay On If Not Cleared Search Engine Optimisation – Page Ranking Advice

You are searching about How Long Will.An Engince Code Stay On If Not Cleared, today we will share with you article about How Long Will.An Engince Code…

default-image-feature

How Long Does.It Take For Check Engine Code To Clear Engine Check Light On? Don’t Panic, Calm Your Nerves Here!

You are searching about How Long Does.It Take For Check Engine Code To Clear, today we will share with you article about How Long Does.It Take For…