你的位置:首页 > 软件开发 > 操作系统 > Linux内核启动过程概述

Linux内核启动过程概述

发布时间:2016-12-06 11:00:03
版权声明:本文原创,转载需声明作者ID和原文链接地址。   Hi!大家好,我是CrazyCatJack。今天给大家带来的是Linux内核启动过程概述。希望能够帮助大家更好的理解Linux内核的启动,并且创造出自己的内核^_^  Linux的启动代码真的挺大,从汇编到C,从Ma ...

 版权声明:本文原创,转载需声明作者ID和原文链接地址。

 

  Hi!大家好,我是CrazyCatJack。今天给大家带来的是Linux内核启动过程概述。希望能够帮助大家更好的理解Linux内核的启动,并且创造出自己的内核^_^

  Linux的启动代码真的挺大,从汇编到C,从Makefile到LDS文件,需要理解的东西很多。毕竟Linux内核是由很多人,花费了巨大的时间和精力写出来的。而且直到现在,这个世界上仍然有成千上万的程序员在不断完善Linux内核的代码。今天我们主要讲解的是Linux-2.6.22.6这个内核版本。说句实话,博主也不确定自己能够讲好今天这个题目,因为这个题目太大太难。但是博主有信心,将自己学会的内容清楚地告诉大家,希望大家也能够有所收获。

1.启动文件head.S和head-common.S 

  首先,我们必须明确“我们为什么要启动Linux内核”。没错,当然是因为我们想要使用Linux系统,要明确我们的最终目的是使用Linux上的应用程序。这些应用程序可以是纯软件的,也可以是硬件相关的。博主是做嵌入式开发的,那么我想要的当然就是用Linux内核来更好的控制我的硬件。无论是做机器人、无人机或者其他智能硬件这都是必然趋势。首先我们来看内核的启动文件head.S。

 

  .section ".text.head", "ax"  .type  stext, %functionENTRY(stext)  msr  cpsr_c, #PSR_F_BIT | PSR_I_BIT | SVC_MODE @ ensure svc mode            @ and irqs disabled  mrc  p15, 0, r9, c0, c0    @ get processor id  bl  __lookup_processor_type    @ r5=procinfo r9=cpuid  movs  r10, r5        @ invalid processor (r5=0)?  beq  __error_p      @ yes, error 'p'  bl  __lookup_machine_type    @ r5=machinfo  movs  r8, r5        @ invalid machine (r5=0)?  beq  __error_a      @ yes, error 'a'  bl  __create_page_tables  ldr  r13, __switch_data    @ address to jump to after            @ mmu has been enabled  adr  lr, __enable_mmu    @ return (PIC) address  add  pc, r10, #PROCINFO_INITFUNC

 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:Linux内核启动过程概述

关键词:linux

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录