linux内核启动解析(三)_第1页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、linux内核启动解析(三) 1.2 _lookup_machine_type() 机器类型的查找代码如下:_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)我们可以看到,这和处理器类型查找函数很类似,在这里只举行容易的解说。.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文件中找到一系列关于machine_start所定义的结构。1.3 _vet_atags()函数代码如下:_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内核的参数列表。这个参数列表是以tag的列表形式来表示的。这个列表起始位置的tag是atag_core,用来表示这是一个有效的tag列表。假如起始tag不是atag_core,就认为bootloader没有传递tag参数给内核。以下是tag值的定义和描述,以及tag结构的定义。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. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论