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 : { *(
这个文件最终会以参数 -Xlinker --script -Xlinker vmlinux
lds 的形式传给 gcc,并最终传给链接器 ld 来控制其行为
text 节的地址链接到 0xFFFFFFFF80100000 处
关于内核 ELF 文件的入口地址(Entry point),即 bootloader 移动完内核后,直接跳转到的地址,由 ld 写入 ELF 的头中,其会依次用下面的方法尝试设置入口点,当遇到成功时则停止: a
命令行选项 -e entry