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

linux內(nèi)核啟動解析(一)

發(fā)布時間:2012-4-1 09:54    發(fā)布者:李寬
關(guān)鍵詞: linux
freshtree

1 linux內(nèi)核啟動過程分析

        
嵌入式linux系統(tǒng)從軟件角度來看可分為四部分:bootloader,linux內(nèi)核,文件系統(tǒng)和應(yīng)用程序。在這里我選取的內(nèi)核版本是linux2.6.28,硬件平臺選擇smdk6410。
        
Bootloader是系統(tǒng)啟動或復(fù)位后首先被執(zhí)行的代碼,它的主要作用是初始化處理器,初始化ram,初始化相應(yīng)的外設(shè)(uart,usb等等),下載內(nèi)核映像(或文件系統(tǒng))到ram相應(yīng)的位置,然后跳轉(zhuǎn)到內(nèi)核下載地址 c0008000,將控制權(quán)交給linux內(nèi)核。
        
Linux內(nèi)核下載到ram中的映像一般是zImage。這是壓縮版本的內(nèi)核,首先要進(jìn)行解壓操作。調(diào)用decompress_kernel()(位于arch/arm/boot/compressed/misc.c)進(jìn)行解壓縮操作,然后再次跳到c0008000,進(jìn)行真正的內(nèi)核初始化操作。
        
我們重點放在講解內(nèi)核映像解壓之后linux內(nèi)核的啟動過程。內(nèi)核初始化啟動過程如下:
        
        1) __lookup_processor_type(),查找處理器類型。
        
        2) __lookup_machine_type(),查找機器類型。
        
        3) __vet_atags()。
        
        4) __create_page_tables(),創(chuàng)建頁表。
        
        5) __enable_mmu(),使能MMU。
        
        6) __mmap_switched(),拷貝數(shù)據(jù),清BBS。
        
        7) start_kernel(),進(jìn)入真正的內(nèi)核初始化函數(shù)。
        
        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     【打印本頁】

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

廠商推薦

  • Microchip視頻專區(qū)
  • 我們是Microchip
  • Cortex-M4外設(shè) —— TC&TCC結(jié)合事件系統(tǒng)&DMA優(yōu)化任務(wù)培訓(xùn)教程
  • 你仿真過嗎?使用免費的MPLAB Mindi模擬仿真器降低設(shè)計風(fēng)險
  • 想要避免發(fā)生災(zāi)難,就用MPLAB SiC電源仿真器!
  • 貿(mào)澤電子(Mouser)專區(qū)

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩不卡在线视频 | 四虎影院久久久 | 欧美一区二区放荡人妇 | 久久久久免费精品视频 | 97在线亚洲 | 20201精品极品国产色在线 | 香蕉视频在线观看网站 | 免费观看四虎精品成人 | 好吊爽在线播放视频 | 精品日本一区二区三区在线观看 | 19国产精品麻豆免费观看 | 亚洲欧美精品一区二区 | 久久成人国产精品青青 | 高清一区在线 | 中文字幕一区二区三区在线观看 | 国产精品亚洲精品爽爽 | 这里精品 | 美女天天操 | 久久五月天综合 | 91热久久免费频精品99欧美 | h视频在线观看免费观看 | 欧美黄色高清 | 一区二区三区四区在线观看视频 | 久久在视频 | 免费人成毛片乱码 | 国产日韩精品一区在线不卡 | 亚洲免费在线播放 | 国产精品素人搭讪在线播放 | 91精选视频 | 日本一区二区三区中文字幕 | 日本一区二区在线 | 玖玖玖免费观看视频 | 在线精品播放 | 高清不卡毛片免费观看 | 日本免费人成黄页在线观看视频 | 国产精品三级一区二区 | 欧美色欧美亚洲高清在线视频 | 国产三级精品美女三级 | 亚洲欧美一区二区三区国产精品 | 欧美大片一区二区 | 亚洲综合在线观看视频 |