- 1、本文档共16页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Linux-mips启动流程
-存储相关
linux内核启动的第一个阶段是从 /arch/mips/kernel/head.s文件开始的。而此处正是内核入口函数kernel_entry(),该函数定义在 /arch/mips/kernel/head.s文件里。kernel_entry()函数是体系结构相关的汇编语言,它首先初始化内核堆栈段,来为创建系统中的第一个进程进行准备,接着用一段循环将内核映像的未初始化数据段(bss段在_edata和_end之间)清零,最后跳转到/arch/mips/kernel/setup.c 中的 start_kernel()初始化硬件平台相关的代码。下面讲述start_kernel() 函数。在这个函数中跟内存初始化的函数是setup_arch()。
第一部分:以函数调用关系为线索
下面是函数之间调用关系的框图:
第一章:start_kenel()-setup_arch()
setup_arch(command_line);每种体系结构都有自己的 setup_arch() 函数,这些是体系结构相关的。【如何确定编译那个体系结构的 setup_arch() 函数呢?主要由 linux 源码树顶层 Makefile 中 ARCH 变量来决定的。例如: MIPS 体系结构的。SUBARCH := mips
ARCH ?= $(SUBARCH)】。
void __init setup_arch(char **cmdline_p)
{
cpu_probe();
调用函数cpu_probe(),该函数通过MIPS CPU的PRID寄存器来确定CPU类型,
从而确定使用的指令集和其他一些CPU参数,如TLB等
prom_init();
prom_init() 函数是和硬件相关的,做一些低层的初始化,接受引导装载程序传给内核的参数,确定 mips_machgroup,mips_machtype 这两个变量,这两个变量分别对应着相应的芯片组合开发板;
cpu_report();
打印 cpu_probe() 函数检测到的 CPU 的 Processor ID。如果有浮点处理器,也打印浮点处理器的 Processor ID。
【应用程序通过终端接口设备使用特定的接口规程与终端进行交互,与操作系统内核本身交互的终端称为控制台,
它可以是内核本身的内部显示终端,也可以是通过串口连接的外部哑终端。
由于大多数情况下控制台都是内核显示终端,因此内核显示终端也常常直接称为控制台。
内核终端对用户来说具有若干个虚拟终端子设备,它们共享同一物理终端,
但同一时刻只能有一个虚拟终端操作硬件屏幕。
宏 CONFIG_VT 的意思是否支持虚拟终端。
当配置了宏 CONFIG_VGA_CONSOLE 时为内核本身的内部显示终端。
当配置了宏 CONFIG_DUMMY_CONSOLE 时为通过串口连接的外部哑终端。
用变量 conswitchp 来进行指定。
#if defined(CONFIG_VT)
#if defined(CONFIG_VGA_CONSOLE)
conswitchp = vga_con;
#elif defined(CONFIG_DUMMY_CONSOLE)
conswitchp = dummy_con;
#endif
#endif】
arch_mem_init(cmdline_p);
对内存进行初始化。
resource_init();
这个函数遍历每一个内存空间范围(物理地址),在资源管理器中进行资源申请,并对内核代码和数据段进行资源申请。
#ifdef CONFIG_SMP
plat_smp_setup();
#endif
} / /start_kernel函数到此结束(以下均是)。
以下图片是截自版本linux-2.6.34内核版本。
第二章:start_kenel()-setup_arch()-arch_mem_init()
接下来我们看看arch_mem_init()函数中的函数调用关系及各自的功能。
static void __init arch_mem_init(char **cmdline_p)
{
plat_mem_setup();
这个函数是平台具体相关的,移植内核需要自己手动编写。对于开发板的 CPU 和 board 的初始化都是在这个函数中进行的。detects the memory configuration and will rec
您可能关注的文档
- LGR起落架部件项目培训大纲..doc
- LG—40382—QJ发电燃气锅炉运行规程..doc
- LH20T起重机械产品质量证明书..doc
- LH20T起重机械产品质量证明书001..doc
- LH20T起重机械产品质量证明书002..doc
- LH20T起重机械产品质量证明书004..doc
- LH20T起重机械产品质量证明书003..doc
- lhbod601型bod测定仪..doc
- lhjxxxx-给学生案例1..doc
- LI-COROdyssey红外荧光成像..doc
- 中考语文总复习语文知识及应用专题5仿写修辞含句子理解市赛课公开课一等奖省课获奖课件.pptx
- 湖南文艺版(2024)新教材一年级音乐下册第二课《藏猫猫》精品课件.pptx
- 湖南文艺版(2024)新教材一年级音乐下册第三课《我向国旗敬个礼》精品课件.pptx
- 高中生物第四章生物的变异本章知识体系构建全国公开课一等奖百校联赛微课赛课特等奖课件.pptx
- 整数指数幂市公开课一等奖省赛课微课金奖课件.pptx
- 一年级音乐上册第二单元你早全国公开课一等奖百校联赛微课赛课特等奖课件.pptx
- 八年级数学上册第二章实数27二次根式第四课时习题省公开课一等奖新课获奖课件.pptx
- 九年级物理全册11简单电路习题全国公开课一等奖百校联赛微课赛课特等奖课件.pptx
- 八年级语文下册第五单元19邹忌讽齐王纳谏省公开课一等奖新课获奖课件.pptx
- 2024年秋季新人教PEP版3年级上册英语全册教学课件 (2).pptx
文档评论(0)