国产毛片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://www.qingdxww.cn/thread-88590-1-1.html     【打印本頁】

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

廠商推薦

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

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 天天摸夜夜摸夜夜狠狠摸 | 午夜欧美性视频在线播放 | 亚洲欧美国产视频 | 香蕉精品视频在线观看 | 狠狠色丁香婷婷综合久久片 | 亚洲小视频 | 国产色产综合色产在线观看视频 | 日韩欧美亚洲国产精品字幕久久久 | 国产片a国产片免费看视频 国产片a | 大伊香蕉精品视频在线 | 特片我不卡 | 亚洲欧美日韩在线不卡 | 日韩一区二区在线观看 | 日产精品1卡二卡三卡乱码在线 | aaa国产| 亚洲 激情| 欧美乱人伦中文在线观看不卡 | 91免费在线视频 | 综合免费一区二区三区 | 污污的网站免费 | 国产高颜值露脸在线观看 | 韩国年轻漂亮女教师6 | 欧美大片在线免费观看 | 在线免费观看精品 | 欧美一区二区三区在观看 | 久久久精品视频免费观看 | 久久精品99毛片免费 | 丁香花五月婷婷 | 99在线热视频只有精品免费 | 国产精品妖精视频 | 隔壁的放荡邻居在线看 | 欧美日韩高清观看一区二区 | 国产自精品在线 | 亚洲欧美日本欧美在线播放污 | 精品免费视在线观看 | 最新精品国偷自产在线91 | 欧美日韩精品免费一区二区三区 | 国产在线视频一区 | 91精品成人免费国产片 | 一卡二卡四卡无人区免费 | 四虎精品久久 |