电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

linuxmips启动分析VIP免费

linuxmips启动分析_第1页
1/14
linuxmips启动分析_第2页
2/14
linuxmips启动分析_第3页
3/14
linux-mips 启动分析 系统加电起动后,MIPS 处理器默认的程序入口是0xBFC00000,此地址在无缓存的KSEG1 的地址区域内,对应的物理地址是 0x1FC00000,即CPU 从0x1FC00000 开始取第一条指令,这个地址在硬件上已经确定为FLASH 的位置,Bootloader 将 Linux 内核映像拷贝到 RAM 中某个空闲地址处,然后一般有个内存移动操作,目的地址在 arch/mips/Makefile 内指定: load-$(CONFIG_MIPS_PB1550) += 0xFFFFFFFF80100000, 则最终bootloader 定会将内核移到物理地址 0x00100000 处 上面Makefile 里指定的的 load 地址,最后会被编译系统写入到 arch/mips/kernel/vmlinux.lds 中: OUTPUT_ARCH(mips) ENTRY(kernel_entry) jiffies = jiffies_64; SECTIONS { . = 0xFFFFFFFF80100000; /* read-only */ _text = .; /* Text and read-only data */ .text : { *(.text) ... 这个文件最终会以参数 -Xlinker --script -Xlinker vmlinux.lds 的形式传给 gcc,并最终传给链接器 ld 来控制其行为。ld 会将 .text 节的地址链接到 0xFFFFFFFF80100000 处。 关于内核 ELF 文件的入口地址(Entry point),即 bootloader 移动完内核后,直接跳转到的地址,由 ld 写入 ELF 的头中,其会依次用下面的方法尝试设置入口点,当遇到成功时则停止: a. 命令行选项 -e entry b. 脚本中的 ENTRY(symbol) c. 如果有定义 start 符号,则使用start 符号(symbol) d. 如果存在 .text 节,则使用第一个字节的地址。 e. 地址0 注意到上面的 ld script 中,用 ENTRY 宏设置了内核的 entry point 是 kernel_entry,因此内核取得控制权后执行的第一条指令是在 kernel_entry 处。 linux 内核启动的第一个阶段是从 /arch/mips/kernel/head.s文件开始的。 而 此 处 正 是 内 核 入 口 函 数kernel_entry(),该 函 数 定义在 /arch/mips/kernel/head.s 文件里。kernel_entry()函数是体系结构相关的汇编语言,它首先初始化内核堆栈段,来为创建系统中的第一个进程进行准备, 接着用一段循环将内核映像的未初始化数据段(bss 段,在_edata 和_end 之间)清零,最后跳转到 /init/main.c 中的 start_kernel()初始化硬件平台相关的代码。 ********************************************* NESTED(kernel...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

linuxmips启动分析

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部