【uboot】mips架构uboot启动分析

本文详细分析了MIPS架构下U-Boot的启动流程,包括协处理器CP0的角色、编译过程、上电初始化步骤,以及重要的宏定义。在编译过程中涉及源码编译、静态库创建和lzma压缩。初始化阶段涵盖汇编初始化、bootstrap函数的执行,最终调用do_bootm_linux进入操作系统。
摘要由CSDN通过智能技术生成

协处理器

协处理器一词通常用来表示处理器的一个可选部件,负责处理指令集的某个扩展。
- CP1 是浮点协处理器,
- CP0 系统控制协处理器
- CP2 偶尔用来指定ISA扩展或者在几个SoC应用中提供专用的寄存器;
- CP3 被MIPS32/64浮点指令占用,很少用;

协处理器CP0

除了通常的运算功能,任何处理器都需要一些部件处理中断,配置选项和监控片上高速缓存(cache)和定时器功能。
CP0协处理器主要提供:
1)cpu的配置;
2)高速缓存控制;
3)异常/中断控制;
4)存储管理单元控制;
5)杂项,如定时器,事件计数器,奇偶校验,错误检测;
在汇编中:
li t0, 0x10000004
mtc0 t0, $12 #状态寄存器,CPU的特权等级,能使用的中断引脚等。
mtc0 zero, $13

\boot\uboot\board\atheros\common中的956x.S中
lowlevel_init: 在956x.S中定义,设置CPU,AHB,DDR,

uboot 作为bootloader的一种,用于引导操作系统顺利启动,本文记录基于mips架构SDK中uboot的编译过程和启动流程

编译过程

编译过程可以分为三部分:

1.源码编译

uboot编译的方式是将各个目录下的源码编译成.o,然后通过mips-linux-uclibc-ar 命令创建成静态库,
./lib_bootstrap/libbootstrap.a
./cpu/mips/libmips.a
./board/atheros/board955x/libboard955x.a
./lib_mips/libmips.a
./lib_generic/libgeneric.a
./common/libcommon.a
./drivers/libdrivers.a
./rtc/librtc.a
./net/libnet.a
./post/libpost.a
./post/cpu/libcpu.a

到最后通过连接脚本将这些静态库链接成u-boot,如下:
mips-linux-uclibc-ld -Bstatic -T /***/boot/u-boot/board/atheros/board955x/u-boot.lds -Ttext 0x80010000 $UNDEF_SYM cpu/mips/start.o /***/boot/u-boot/board/atheros/board955x/extra.o \
--start-group lib_generic/libgeneric.a common/libcommon.a board/atheros/board955x/libboard955x.a cpu/mips/libmips.a lib_mips/libmips.a drivers/libdrivers.a net/libnet.a rtc/librtc.a --end-group -L /***/toolchain/gcc-4.3.3/build_mips/staging_dir/usr/bin/../lib/gcc/mips-linux-uclibc/4.3.3 -lgcc \
-Map u-boot.map -o u-boot

注意 -Ttext 0x80010000,这里是将初始地址重定向为0x80010000,如果不设置这个重定向地址,则为0;为什么是这个地址,后面再说!

2. 添加libbootstrap.a

首先将u-boot拷贝成u-boot.bin
mips-linux-uclibc-objcopy –gap-fill=0xff -O binary u-boot u-boot.bin 各个section之间填充0xff
然后编译目录lib_bootstrap,并生成libbootstrap.a,如下:
/home/project/plc_platform/board/model_qca_qca95xx/sdk/board956x/boot/u-boot/board/atheros/board955x/u-boot-bootstrap.lds

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值