国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

linux內核啟動解析(一)

發布時間:2012-4-1 09:54    發布者:李寬
關鍵詞: linux
freshtree

1 linux內核啟動過程分析

        
嵌入式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();            

   
本文地址:http://m.qingdxww.cn/thread-88590-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • Cortex-M4外設 —— TC&TCC結合事件系統&DMA優化任務培訓教程
  • 想要避免發生災難,就用MPLAB SiC電源仿真器!
  • 利用模擬開發工具生態系統進行安全電路設計
  • 你仿真過嗎?使用免費的MPLAB Mindi模擬仿真器降低設計風險
  • 貿澤電子(Mouser)專區

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品嫩草研究院久久 | 色蜜蜜精品视频在线视频 | 天天影视网综合 | 亚洲九九视频 | 国产高清精品久久久久久久 | 在线a人片免费观看不卡 | 澳门毛片精品一区二区三区 | 欧美成人免费xxx大片 | 亚洲精品国产高清不卡在线 | 最新国产精品 | 久久这里只有精品6 | 日韩免费精品视频 | 99国内精品久久久久久久 | 精品videoss另类日本 | 一级特黄aaa免费 | 青青青国产免费手机视频在线观看 | 国产日产欧产麻豆精品精品推荐 | 国产欧美日韩在线不卡第一页 | 欧美精品一区二区三区免费 | 一级黄色a视频 | sss亚洲国产欧美一区二区 | 国产不卡毛片 | 日本vr超清在线视频免费 | 99精品热 | 国产毛片一区二区三区精品 | 国产精品黄在线观看免费 | 成人在线免费视频观看 | 欧美黑人一级 | 亚洲精品不卡久久久久久 | 韩国毛片一级 | 日韩欧美在线一区二区三区 | 尹人久久久香蕉精品 | 国产精品一级二级三级 | 欧美另类在线观看 | 成人免费xx | 2021国产精品视频 | 四虎影视www | 国产精品剧情原创麻豆国产 | 欧美视频在线不卡 | 日本中文字幕一区二区有码在线 | 亚洲国产欧美在线观看 |