燃气阀厂家
免费服务热线

Free service

hotline

010-00000000
燃气阀厂家
热门搜索:
技术资讯
当前位置:首页 > 技术资讯

linux内核启动解析(一) 软件编程OS 免费猫

发布时间:2020-02-17 13:57:00 阅读: 来源:燃气阀厂家

linux内核启动解析(一) - 软件编程/OS - 电子工程网

嵌入式linux系统从软件角度来看可分为四部分:bootloader,linux内核,文件系统和应用程序。在这里我选取的内核版本是linux2.6.28,硬件平台选择smdk6410。

Bootloader是系统启动或复位后首先被执行的代码,它的主要作用是初始化处理器,初始化ram,初始化相应的外设(uart,usb等等),下载内核映像(或文件系统)到ram相应的位置,然后跳转到内核下载地址 c0008000,将控制权交给linux内核。

Linux内核下载到ram中的映像一般是zImage。这是压缩版本的内核,首先要进行解压操作。调用decompress_kernel()(位于arch/arm/boot/compressed/misc.c)进行解压缩操作,然后再次跳到c0008000,进行真正的内核初始化操作。

我们重点放在讲解内核映像解压之后linux内核的启动过程。内核初始化启动过程如下:

1) __lookup_processor_type(),查找处理器类型。

2) __lookup_machine_type(),查找机器类型。

3) __vet_atags()。

4) __create_page_tables(),创建页表。

5) __enable_mmu(),使能MMU。

6) __mmap_switched(),拷贝数据,清BBS。

7) start_kernel(),进入真正的内核初始化函数。

8) smp_setup_processor_id();

9) unwind_init();

10)lockdep_init();

11) debug_objects_early_init();

12) cgroup_init_early();

13) local_irq_disable();

14) early_boot_irqs_off();

15) early_init_irq_lock_class();

16) lock_kernel();

17) tick_init();

18) boot_cpu_init();

19) page_address_init();

20) setup_arch( command_line);

21) mm_init_owner( init_mm, init_task);

22) setup_command_line(command_line);

23) unwind_setup();

24) setup_per_cpu_areas();

25) setup_nr_cpu_ids();

26) smp_prepare_boot_cpu();

27) sched_init();

28) preempt_disable();

29) build_all_zonelists();

30) page_alloc_init();

31) parse_early_param();

32) sort_main_extable();

33) trap_init();

34) rcu_init();

35) init_IRQ();

36) pidhash_init();

37) init_timers();

38) hrtimers_init();

39) softirq_init();

40) timekeeping_init();

41) time_init();

42) sched_clock_init();

43) profile_init();

44) early_boot_irqs_on();

45) local_irq_enable();

46) console_init();

47) lockdep_info();

48) locking_selftest();

49) vmalloc_init();

50) vfs_caches_init_early();

51) cpuset_init_early();

52) page_cgroup_init();

53) mem_init();

54) enable_debug_pagealloc();

55) cpu_hotplug_init();

56)kmem_cache_init();

57)debug_objects_mem_init();

58)idr_init_cache();

59)setup_per_cpu_pageset();

60)numa_policy_init();

61)if (late_time_init)

62)late_time_init();

63)calibrate_delay();

64)pidmap_init();

65)pgtable_cache_init();

66)prio_tree_init();

67)anon_vma_init();

68)thread_info_cache_init();

69)fork_init(num_physpages);

70)proc_caches_init();

71)buffer_init();

72)key_init();

73)security_init();

74)vfs_caches_init(num_physpages);

75)radix_tree_init();

76)signals_init();

77)page_writeback_init();

78)proc_root_init();

79)cgroup_init();

80)cpuset_init();

81)taskstats_init_early();

82)delayacct_init();

83)check_bugs();

84)acpi_early_init();

85)ftrace_init();

86)rest_init();

红腹角雉养殖

迪文小说全集免费阅读

薇婷故事会