下载此文档

linuxmips启动流程存储相关.doc


文档分类:通信/电子 | 页数:约16页 举报非法文档有奖
1/16
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/16 下载此文档
文档列表 文档介绍
Linux-mips启动流程-存储相关linux内核启动的第一个阶段是从/arch/mips/kernel/。而此处正是内核入口函数kernel_entry(),该函数定义在/arch/mips/kernel/。kernel_entry()函数是体系结构相关的汇编语言,它首先初始化内核堆栈段,来为创建系统中的第一个进程进行准备,接着用一段循环将内核映像的未初始化数据段(bss段在_edata和_end之间)清零,最后跳转到/arch/mips/kernel/()初始化硬件平台相关的代码。下面讲述start_kernel()函数。在这个函数中跟内存初始化的函数是setup_arch()。第一部分:以函数调用关系为线索下面是函数之间调用关系的框图:第一章:start_kenel()->setup_arch()setup_arch(&command_line);每种体系结构都有自己的setup_arch()函数,这些是体系结构相关的。【如何确定编译那个体系结构的setup_arch()函数呢?主要由linux源码树顶层Makefile中ARCH变量来决定的。例如:MIPS体系结构的。SUBARCH:=mipsARCH?=$(SUBARCH)】。void__initsetup_arch(char**cmdline_p){cpu_probe();调用函数cpu_probe(),该函数通过MIPSCPU的PRID寄存器来确定CPU类型,从而确定使用的指令集和其他一些CPU参数,如TLB等prom_init();prom_init()函数是和硬件相关的,做一些低层的初始化,接受引导装载程序传给内核的参数,确定mips_machgroup,mips_machtype这两个变量,这两个变量分别对应着相应的芯片组合开发板;cpu_report();打印cpu_probe()函数检测到的CPU的ProcessorID。如果有浮点处理器,也打印浮点处理器的ProcessorID。【应用程序通过终端接口设备使用特定的接口规程与终端进行交互,与操作系统内核本身交互的终端称为控制台,它可以是内核本身的内部显示终端,也可以是通过串口连接的外部哑终端。由于大多数情况下控制台都是内核显示终端,因此内核显示终端也常常直接称为控制台。内核终端对用户来说具有若干个虚拟终端子设备,它们共享同一物理终端,但同一时刻只能有一个虚拟终端操作硬件屏幕。宏CONFIG_VT的意思是否支持虚拟终端。当配置了宏CONFIG_VGA_CONSOLE时为内核本身的内部显示终端。当配置了宏CONFIG_DUMMY_CONSOLE时为通过串口连接的外部哑终端。用变量conswitchp来进行指定。#ifdefined(CONFIG_VT)#ifdefined(CONFIG_VGA_CONSOLE)conswitchp=&vga_con;#elifdefined(CONFIG_DUMMY_CONSOLE)conswitchp=&dummy_con;#endif#endif】arch_mem_init(cmdline_p);对内存进行初始化。resource_init();这个函数遍历每一个内存空间范围(物理地址),在资源管理器中进行资源申请,并对内核代码和数据段进行资源申请。#ifdefCONFIG_SMPplat_smp_setup();#endif}//start_kernel函数到此结束(以下均是)。以下图片是截自版本linux-。第二章:start_kenel()->setup_arch()->arch_mem_init()接下来我们看看arch_mem_init()函数中的函数调用关系及各自的功能。staticvoid__initarch_mem_init(char**cmdline_p){plat_mem_setup();这个函数是平台具体相关的,移植内核需要自己手动编写。对于开发板的CPU和board的初始化都是在这个函数中进行的。detectsthememoryconfigurationandwillrecorddetectedmemoryareasusingadd_memory_region。就是在这里面建立了内存的初始面貌。代码如下:printk("DeterminedphysicalRAMmap:\n");print_memory_map();这个函数打印输出内存范围(物理地址)映像图。【把字符数组arcs_cmdline[]mand_line[]mand_line[]中。字符数组arcs_cmdline[]在prom_init_cmdline()函数中进行的赋值。为命令

linuxmips启动流程存储相关 来自淘豆网m.daumloan.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数16
  • 收藏数0 收藏
  • 顶次数0
  • 上传人184846882
  • 文件大小486 KB
  • 时间2019-01-24