Discuss The Three Primary Features Of An Object-Oriented Programming Language ARM Linux Booting Process

You are searching about Discuss The Three Primary Features Of An Object-Oriented Programming Language, today we will share with you article about Discuss The Three Primary Features Of An Object-Oriented Programming Language was compiled and edited by our team from many sources on the internet. Hope this article on the topic Discuss The Three Primary Features Of An Object-Oriented Programming Language is useful to you.

ARM Linux Booting Process

Questa serà una seria d’articuli chì spiegheranu cumu u kernel Linux si mette in l’architettura ARM. Questu hè a prima parte.

ARM Linux Boot Process:

Spiegheremu u prucessu di boot di AT91RM9200 system-on-chip, custruitu intornu à u processore ARM920T ARM Thumb. Kwickbyte crea una scheda integrata chjamata kb9202 basatu annantu à AT91RM9200. Piglieremu stu tavulinu cum’è un esempiu è vede cumu Linux boots up on this board.

Prima di principià à leghje questu avete bisognu di leghje a scheda di dati AT91RM9200 (specificazione).

Avete ancu bisognu di leghje ARM Architecture Reference Manual per capisce megliu u prucessu di boot.

Componenti in u prucessu di boot Linux:

U prucessu di boot di Linux implica i seguenti cumpunenti.

Bootloader

Image Kernel

Root Filesystem

Prima di vede cumu funziona i cumpunenti sopra, u seguitu hè u flussu di chjama di u prucessu di boot di Linux Kernel per l’architettura di u bracciu. Questu dà una grande stampa nantu à tuttu u prucessu di boot di Linux. Avemu aduprà u bootloader U-boot.

ARM Linux Boot Process: Big Picture

U-boot:

_start (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 (drivers/serial/at91rm9200_usart.c)

main_loop (lib_arm/board.c)

Avà u-boot hè in funzione è hè in u prompt u-boot è prontu à accettà i cumandamenti. Assumimu chì l’immagine di u kernel hè caricata in RAM è emessu u cumandimu bootm.

do_bootm (common/cmd_bootm.c)

bootm_start (common/cmd_bootm.c)

bootm_load_os (common/cmd_bootm.c)

do_bootm_linux (lib_arm/bootm.c)

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

U cuntrollu hè datu à Linux.

Kernel Linux:

stext (arcu / bracciu / kernel / testa.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_timers (kernel/timer.c:1713)

hrtimers_init (kernel/hrtimer.c:1741)

softirq_init (kernel/softirq.c:674)

console_init (drivers/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 () crea un filu di kernel è u cuntrollu hè datu à 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) /* Chjama tutti i sottosistemi init funzioni */

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) /* se initrd hè datu */

identificà_ramdisk_image (179, init/do_mounts_rd.c:53)

handle_initrd (119, init/do_mounts_initrd.c:37) /*se rd_load_image hè successu */

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) /* se initrd ùn hè micca datu */

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)

Spaziu d’utilizatori

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

Bootloader:

Un bootloader hè un picculu prugramma chì caricarà l’imaghjini di u kernel in RAM è avvia l’imaghjini di u kernel. Questu hè ancu chjamatu bootstrap, postu chì porta (tira) u sistema caricando un sistema operatore. Bootloader principia prima chì qualsiasi altru software principia è inizializza u processore è rende a CPU pronta per eseguisce un prugramma cum’è un sistema operatore. A maiò parte di i prucessori anu un indirizzu predeterminatu da quale i primi byte di codice sò ottinuti quandu u putere hè appiicatu o a scheda hè resettata. I diseggiani di hardware utilizanu sta informazione per almacenà u codice di bootloader à quellu indirizzu in ROM o flash. Siccomu duverebbe inizializà a CPU è duverebbe eseguisce un prugramma chì si trova in l’architettura, i bootloaders di l’indirizzu specifichi sò assai specifichi di processore è di bordu. Ogni bordu incrustatu vene cun un bootstrap per scaricà l’imaghjini di u kernel o l’applicazione standalone in u bordu è cumincià à eseguisce l’imaghjini di u kernel o l’applicazione. Bootloader serà eseguitu quandu u putere hè appiicatu à una scheda di processore. In fondu, avarà alcune funzioni minime per carricà l’imaghjini è avvià.

Hè ancu pussibule cuntrullà u sistema utilizendu una interfaccia di debug hardware cum’è JTAG. Questa interfaccia pò esse aduprata per scrive u prugramma di boot loader in una memoria non volatile bootable (per esempiu, flash) urdinendu à u core di u processatore per fà l’azzioni necessarii per programà a memoria non volatile. In generale hè fattu per a prima volta per scaricà u bootloader di basa è per qualchì prucessu di ricuperazione. JTAG hè una interfaccia standard è populari furnita da parechji venditori di bordu. Certi microcontrollers furniscenu interfacce hardware speciale chì ùn ponu micca esse aduprate per piglià un cuntrollu arbitrariu di un sistema o direttamente eseguite codice, ma invece permettenu l’inserimentu di u codice di boot in memoria non volatile bootable (cum’è memoria flash) via protokolli simplici. Allora in a fase di fabricazione, tali interfacce sò aduprate per inject code boot (è possibbilmente altru codice) in memoria non volatile. Dopu à u reset di u sistema, u microcontrollore cumencia à eseguisce codice programatu in a so memoria non volatile, cum’è i prucessori di solitu utilizanu ROM per l’avvio. In parechji casi, tali interfacce sò implementate da una logica cablata. In altri casi, tali interfacce puderanu esse create da u software chì funziona in una ROM di boot integrata in chip da i pin GPIO.

Ci sò altri bootloaders di terze parti dispunibuli chì furnisce un riccu set di funzioni è una interfaccia d’utilizatore faciule. Pudete scaricà sti bootloaders di terzu partitu in bordu è ponu fà li bootloaders predeterminati per u vostru bordu. In generale, i bootloaders furniti da i venditori di bordu sò rimpiazzati cù questi bootloader di terzu. Ci hè un pocu di boolader di terzu dispunibule è alcuni sò open source (o bootloaders gratuiti) è alcuni sò cummirciali. Alcune di elli sò Das U-Boot, Red boot, GRUB (per desktop), LILO, Loadlin,, bootsect-loader, SYSLINUX, EtherBoot, ELILO.

Piglieremu u boot loader U-boot cum’è u nostru boot loader. U-boot hè u boot loader largamente utilizatu in i sistemi integrati. Spiegheremu u codice da a fonte u-boot-2010.03. Pudete scaricà U-boot da u situ seguente. http://www.denx.de/wiki/U-Boot

Cumu hè custruitu U-boot:

Basatu nantu à a cunfigurazione di U-boot, tutti i schedarii di l’assemblea (.S) è i schedarii C (.c) sò compilati cù un compilatore cross chì hè custruitu per una architettura particulari è i schedarii d’ughjettu (.o) seranu generati. Tutti issi schedarii di l’ughjettu sò ligati da u linker è un schedariu eseguibile serà creatu. Un schedariu d’ughjettu o un schedariu eseguibile hè una cullizzioni di rùbbriche cum’è.text,.data,.bss etc. I fugliali d’ughjettu è i fugliali eseguibili anu un furmatu di schedariu cum’è elf. Tutte e sezzioni di i schedarii di l’ughjettu seranu disposti in u schedariu eseguibile basatu annantu à un script chjamatu linker script. Stu script dice induve tutte e rùbbriche sò da esse caricate in a memoria quandu corre. Capisce stu script hè assai impurtante per sapè cumu u boot loader è u kernel sò cumposti è cumu e diverse sezioni di boot loader o kernel sò caricate in a memoria.

In generale, quandu un prugramma hè eseguitu (eseguitu) un caricatore leghje u schedariu eseguibile è carica diverse sezioni di u schedariu eseguibile in u locu di memoria specificata è cumencia à eseguisce a funzione di partenza (puntu di entrata) specificata in u script di linker. Ma, se vulete eseguisce (caricà) un caricatore di boot, ùn ci sarà micca un caricatore per carica (in fondu per capisce u furmatu di u schedariu) diverse sezioni di u schedariu eseguibile in memoria. Allora avete bisognu di utilizà un strumentu chjamatu objcopy chì pigliarà tutte e rùbbriche da u schedariu eseguibile è creà un schedariu binariu chì ùn hà micca formatu di schedariu. Stu schedariu binariu pò esse caricatu in a memoria è eseguitu o pò esse scrittu in a ROM à un indirizzu particulari (specificu à l’architettura) chì serà eseguitu da CPU quandu u putere hè appiicatu à u bordu.

Assumimu chì basatu nantu à a cunfigurazione U-boot tutti i schedari sò compilati è i schedari d’ughjettu sò creati. U-boot makefile usa u seguente script linker (specificu à l’architettura) per custruisce un schedariu eseguibile.

File: cpu/arm920t/u-boot.lds

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

33 OUTPUT_ARCH (bracciu)

34 ENTRATA(_iniziu)

35 SECTION

36

37. = 0x00000000;

38

39. = ALIGN (4);

40.text:

41

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

43 *(.text)

44

4546. = ALIGN (4);

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

48

49. = ALIGN (4);

50.data: *(.data)

51

52. = ALIGN (4);

53.got: *(.got)

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_start =.;

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

63 _fini =.;

64

OUTPUT_FORMAT in a linea #32 specifica u furmatu di u schedariu eseguibile. Quì u furmatu di u schedariu eseguibile hè elf32 è endianness hè little endian. OUTPUT_ARCH in a linea # 33 specifica l’architettura nantu à quale u codice corre. ENTRY in a linea #34 specifica a funzione di partenza (puntu di entrata) di u prugramma u-boot. Quì u puntu di entrata hè _start.

SECTIONS in a linea #35 definisce cumu e diverse sezioni sò mappate in u schedariu eseguibile. Loader usa l’indirizzi specificati in questa sezione per carricà diverse sezioni di u prugramma in a memoria.

‘.’ in a linea #37 specifica l’indirizzu di partenza induve e seguenti rùbbriche deve esse caricate. In questu casu, l’indirizzu iniziale hè 0x00000000. Dopu questu in a linea #39, a memoria hè allinata da 4 bytes è a sezione.text seguita in a linea #40.

40.text:

41

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

43 *(.text)

44

À u ‘.’ pusizioni (0x00000000) u codice in u cpu/arm920t/start.o hè mappatu è seguita u codice chì ci hè in.text rùbbriche di tutti l ‘àutri uggettu (.o) i schedari. cpu/arm920t/start.o cuntene a funzione _start() (in lingua assemblea) chì hè u puntu di entrata di stu prugramma.

Avà u ‘.’ serà à 0x00000000 + sizeof (.text). Una volta a memoria hè allinata da 4 bytes è a sezione.rodata seguita in a linea #47.

. = ALIGN (4);

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

.rodata rùbbriche da tutti i schedari uggetti sò mapping à stu indirizzu. Segui i sezzioni.data è.git.

49. = ALIGN (4);

50.data: *(.data)

51

52. = ALIGN (4);

53.got: *(.got)

Ogni cumandamentu U-boot hè un ughjettu di tipu ‘cmd_tbl_t’ chì cuntene u nome di u cumandamentu, a stringa di l’aiutu è l’indicatore di funzione per esse eseguitu quandu questu cumanda hè esecutatu. Tutti questi ughjetti di cumanda sò posti in a memoria sequentially. Ognunu di questu ughjettu di cumanda hè custruitu in una sezione definita U-boot chjamata.u_boot_cmd in u schedariu d’ughjettu. Questi all.u_boot_cmd rùbbriche sò posti in a memoria dopu à e rùbbriche sopra (.data è.git).

. =.;

56 __u_boot_cmd_start =.;

57.u_boot_cmd: *(.u_boot_cmd)

58 __u_boot_cmd_end =.;

__u_boot_cmd_start cuntene l’iniziu di l’uggetti di cumandamenti è __u_boot_cmd_end cuntene a fine di l’uggetti di cumandamenti.

E dopu seguita i rùbbriche.bss (variabili globali uninitialized).

60. = ALIGN (4);

61 __bss_start =.;

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

63 _fini =.;

__bss_start indica l’indirizzu iniziale.bss è _end cuntene a fine di tutte e sezioni.

Utilizà stu linker script linker generà un schedariu eseguibile chjamatu u-boot. U strumentu Objcopy hè utilizatu per generà un schedariu binariu da u schedariu eseguibile u-boot.

u-boot.bin: u-boot

$(OBJCOPY) $OBJCFLAGS -O binariu $

Video about Discuss The Three Primary Features Of An Object-Oriented Programming Language

You can see more content about Discuss The Three Primary Features Of An Object-Oriented Programming Language on our youtube channel: Click Here

Question about Discuss The Three Primary Features Of An Object-Oriented Programming Language

If you have any questions about Discuss The Three Primary Features Of An Object-Oriented Programming Language, please let us know, all your questions or suggestions will help us improve in the following articles!

The article Discuss The Three Primary Features Of An Object-Oriented Programming Language was compiled by me and my team from many sources. If you find the article Discuss The Three Primary Features Of An Object-Oriented Programming Language helpful to you, please support the team Like or Share!

Rate Articles Discuss The Three Primary Features Of An Object-Oriented Programming Language

Rate: 4-5 stars
Ratings: 7066
Views: 93529143

Search keywords Discuss The Three Primary Features Of An Object-Oriented Programming Language

Discuss The Three Primary Features Of An Object-Oriented Programming Language
way Discuss The Three Primary Features Of An Object-Oriented Programming Language
tutorial Discuss The Three Primary Features Of An Object-Oriented Programming Language
Discuss The Three Primary Features Of An Object-Oriented Programming Language free
#ARM #Linux #Booting #Process

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

Related Posts

default-image-feature

Difference Between Windows 8.1 Pro And Windows 8.1 Single Language Computer Knowledge (Literacy)

You are searching about Difference Between Windows 8.1 Pro And Windows 8.1 Single Language, today we will share with you article about Difference Between Windows 8.1 Pro…

default-image-feature

Determine The Place Of English In The Indo-European Language Family Rabindranath Tagore – My Favourite Author

You are searching about Determine The Place Of English In The Indo-European Language Family, today we will share with you article about Determine The Place Of English…

default-image-feature

Currently The Three Most Studied Languages At U.S. Colleges Are: Top Colleges With Women’s Golf Programs

You are searching about Currently The Three Most Studied Languages At U.S. Colleges Are:, today we will share with you article about Currently The Three Most Studied…

default-image-feature

Coding Language That Is Considered To First Fully Use Object-Oriented Phython Course in Bangalore

You are searching about Coding Language That Is Considered To First Fully Use Object-Oriented, today we will share with you article about Coding Language That Is Considered…

default-image-feature

Can We Upgrade Windows 8.1 Single Language To Windows 10 The 10 Proven Best Free Mobile Messaging Apps

You are searching about Can We Upgrade Windows 8.1 Single Language To Windows 10, today we will share with you article about Can We Upgrade Windows 8.1…

default-image-feature

Can I Upgrade Windows 8.1 Single Language To Windows 10 Reduce Development Hours With Pattern-Oriented Development

You are searching about Can I Upgrade Windows 8.1 Single Language To Windows 10, today we will share with you article about Can I Upgrade Windows 8.1…