linux內(nèi)核啟動(dòng)解析(三)_第1頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余1頁(yè)可下載查看

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、linux內(nèi)核啟動(dòng)解析(三) 1.2 _lookup_machine_type() 機(jī)器類型的查找代碼如下:_lookup_machine_type:adr r3, 3bldmia r3, r4, r5, r6sub r3, r3, r4 get offset between virt&physadd r5, r5, r3 convert virt addresses toadd r6, r6, r3 physical address space1: ldr r3, r5, machinfo_type get machine typeteq r3, r1 matches loader

2、number?beq 2f foundadd r5, r5, sizeof_machine_desc next machine_desccmp r5, r6blo 1bmov r5, 0 unknown machine2: mov pc, lrendproc(_lookup_machine_type)我們可以看到,這和處理器類型查找函數(shù)很類似,在這里只舉行容易的解說(shuō)。.long _proc_info_begin.long _proc_info_end3: .long .long _arch_info_begin.long _arch_info_end_arch_info_begin和_arch

3、_info_end在arch/arm/kernel/vlinux.lds.s中定義:_arch_info_begin = .;*(..init)_arch_info_end = .;..init段我們可以找到在arch/arm/include/asm/mach/arch.h中有引用:define machine_start(_type,_name) static const struct machine_desc _mach_desc_type _used _attribute_(_section_("..init")

4、= .nr = mach_type_type, .name = _name,define machine_end ;我們可以在arch/arm/mach-*.c文件中找到一系列關(guān)于machine_start所定義的結(jié)構(gòu)。1.3 _vet_atags()函數(shù)代碼如下:_vet_atags:tst r2, 0x3 aligned?bne 1fldr r5, r2, 0 is first tag atag_core?subs r5, r5, atag_core_sizebne 1fldr r5, r2, 4ldr r6, =atag_corecmp r5, r6bne 1fmov pc, lr at

5、ag pointer is ok1: mov r2, 0mov pc, lrendproc(_vet_atags)atag是bootloader傳遞給linux內(nèi)核的參數(shù)列表。這個(gè)參數(shù)列表是以tag的列表形式來(lái)表示的。這個(gè)列表起始位置的tag是atag_core,用來(lái)表示這是一個(gè)有效的tag列表。假如起始tag不是atag_core,就認(rèn)為bootloader沒(méi)有傳遞tag參數(shù)給內(nèi)核。以下是tag值的定義和描述,以及tag結(jié)構(gòu)的定義。tag name value size description atag_none 0x00000000 2 empty tag used to end list

6、 atag_core 0x54410001 5 (2 if empty) first tag used to start list atag_mem 0x54410002 4 describes a physical area of memory atag_videotext 0x54410003 5 describes a vga text display atag_ramdisk 0x54410004 5 describes how the ramdisk will be used in kernel atag_initrd2 0x54420005 4 describes where th

7、e compressed ramdisk image is placed in memory atag_serial 0x54410006 4 64 bit board serial number atag_revision 0x54410007 3 32 bit board revision number atag_videolfb 0x54410008 8 initial values for vesafb-type framebuffers atag_cmdline 0x54410009 2 + (length_of_cmdline + 3) / 4) command line to p

8、ass to kernelstruct tag_header _u32 size;_u32 tag;struct tag struct tag_header hdr;union struct tag_core core;struct tag_mem32 mem;struct tag_videotext videotext;struct tag_ramdisk ramdisk;struct tag_initrd initrd;struct tag_serialnr serialnr;struct tag_revision revision;struct tag_videolfb videolfb;struct tag_cmdl

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論