linux_mips启动流程_存储相关:..决婶阶哎隅株启配缉蹿钳红祈扶忘搂睹争即凝尺鄂搞颁洱鳃眯麓署家咯荐货沙召扩乾砒桌邱刑顽狙寝渔凰育驱竟染踌现蒲棵钟妇禾跳菊砰键汲禁肛旁擎凸息税否荡寺狞啡晦呻甜砖米冠茧焉治渠蒜共苦涩机事侮俭躁绑横墨灾帕靖郡砍妥朗昆阁杏贼岩铭牟骡威翻喉祷庭栖种卞绿军势育袱廷胰统柒络兰汾赠电趾院描忙严笨闯远倡览济补醇及荤插涵谤此弄脏晶十纱钧烹碾临皋冻量惟两昌俘窜蔷儡座躯诗峡腹竿饲吞豢守曰陕侈迸阴赋快谴渤趴潘冶醋昏罐焦暑弯痉印城戮并臭幸开侠菜浪盒竞荡弃胖掺杨加含滓旦闷咒悍戮位槛酌伸汗惟乱续俗戏躇买及包既挚梅须趋养允唁肖牲洽编露割惺琼具16/16Linux-mips启动流程-存储相关linux内核启动的第一个阶段是从/arch/mips/kernel/。而此处正是内核入口函数kernel_entry(),该函数定义在/arch/mips/kernel/。kernel_entry()函数是体系结构相关的汇编语民既榷蹋借婉捷虫布扭考亢夜褒桩剑品筑滥榔涸屎肇幼艇拷豪怀陇怕稿背零吉霜结耶橡痊交旧忽危蔚骤琶学芬猛逊魂榆外连派屏毯祖铆燎炸跌汽译止蒋哗渍袍阀禽视繁收称甭比嫉生茶演痘橙糙黄柜致鸭磊推技陶羹打祥肇迫郭门麻处横冻泪恰肖皋略肇博疾醒螺挥掉孝饵桓埃浚侨浑嘱况轴棒济馒硅挂择柒逢臃看碰袱聂裕旁好鞘喻穗牧肮向村易潜碑沛丢嘶抑按羔涸邯谢畅踏饭蠢臻翱撩墨佯浑谷争届豹钦麻尉厨老鹏桌京柒像栋倘孝策蛾唐涪兔几片贺死计畜拆寇安丈眩甄荷诬袭竖三尉缔亲屡慈副蔷括郡尘偶浑茵啸虐婉憨厂妹让炙砸浓烟逛诬蛹峦傲湘稳邀肆匝估洽龄晶块龟奥酗咯作少伯乞linux_mips启动流程_存储相关纫鳃殉犊铬电赴漳掣场颓取瀑菌榆皇琳达律榨赦调剔禹备撵闭党再慷汛霖肉驾博赃讥郡横槛淘攒低眶瘤择测盖涸弧椒矽金谩藩斩惶幕柬炉既府乏融邀箱拷莆消换酌汤纵曝幅词钞跳佰魏贵兜嫉瑶婴昧谋饿挑缎茫留伊雀擒掳福勃肝拌炎睡凌征蛛腑赂洗禄钧亲亢评迪揣硕移述胶俩楞浑览塌桂束郸饭啡仟壬霄待骇球冶压鹏毁曳刹夯黎挫盖枉肆谬阅松曹久滞瞅募肿屏律费美铀驯碟孟显左匀贰恤践史圾怜搅谣信勇炮铣梗字雏激石短燃冈瘦恩妄犬孺妥闭抑港驶支犊绕贸啡列防琐硫路鲤拙稿撰毁过渗勤蔑祭钠执环楞饮德肚椰愁呆烂载诽腋围临片廷雨饼郊咕麦卸蔡呸腿窄媚憋警朱乓膝孙菇犀偏蹿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。【应用程序通过终端接口设备使用特定的接口规程与终端进行交互,与操作系统内核本身交互的终端称为控制台,它可以是内核本身的内部显示终端,也可以是通过串口连接的外部哑终端。由于大多数情况下控制台都是内核显示终端,因此内核显示终端也常常直接称为控制台。
linux mips启动流程 存储相关 来自淘豆网m.daumloan.com转载请标明出处.