MIPS UBOOT
来源:互联网 发布:js div 赋值 编辑:程序博客网 时间:2024/05/21 09:32
启动过程:
1、msc_spl\board\Pisces\start.S _start
工作过程
a、Check reset status (第二阶段 忽略)
la t0, CPM_RSRlw t1, 0(t0)andi t1, 0x4bnez t1, resume_from_sleepnop
b、Clear watch registers (第二阶段 忽略)mtc0 zero, CP0_WATCHLOmtc0 zero, CP0_WATCHHI
c、设置CP0_STATUS (第二阶段 忽略)li t0,0x0040FC04mtc0 t0,CP0_STATUS
d、设置CP0_CAUSE (第二阶段 忽略)
li t1, 0x00800000mtc0 t1, CP0_CAUSE
e、设置CP0_CONFIG
li t0, CONF_CM_UNCACHEDmtc0 t0, CP0_CONFIG
f、 Initialize GOT pointer
bal 1fnop.word _GLOBAL_OFFSET_TABLE_1:move gp, ralw t1, 0(ra)move gp, t1
g、设置栈指针sp,跳转至spl_boot (第二阶段 忽略)
la sp, 0x80004000la t9, spl_bootj t9nop
注意:第二阶段在此调用如下代码:
li t0, CFG_SDRAM_BASE + CFG_INIT_SP_OFFSETla sp, 0(t0)la t9, board_init_fj t9nop
2、msc_spl\board\Pisces\Msc_boot_jz4770.c spl_boot
初始化硬件:
__cpm_start_dmac();__cpm_start_ddr();...uart_init();serial_init();...pll_init();sdram_init();mmc_load();//将mmc中偏移地址32加载到0x80100000,大小为512kflush_cache_all();//执行0x80100000处的代码,此时将重新返回start.S执行
3、msc_spl\board\Pisces\start.S _start
3、Lib_mips\Board.c board_init_f
a、初始化硬件包括:
jz_board_init 初始化 gpio clocks dram etc timer_init 定时器 env_init 环境变量 init_baudrate 波特率 serial_init 串口 console_init_f display_banner 打印uboot版本 checkboard 打印设备名词 init_func_ram 调用jz4770_ddr.c中的initdram(0)函数 得到SDRAM大小为128M 存储在gd->ram_size中
b、初始化LCD,将framebuffer指针存储在gd->fb_base中
c、预留出UBoot文件使用的空间 uboot_end-TEXT_BASE
d、预留出malloc的堆空间 896k
e、预留出board info空间 存储在gd->bd中
f、预留出global data空间
g、预留出启动参数空间,存储在bd->bi_boot_params中
h、最后:
bd->bi_memstart=0x80000000bd->bi_memsize=gd->ram_size(128M)bd->bi_baudrate=gd->baudrate调用relocate_code(栈指针,global_data,UBOOT的SDRAM预留地址)
4、cpu\mips\start.S relocate_code
5、Lib_mips\Board.c board_init_r
6、Common\Main.c main_loop
7、Common\Main.c run_command
8、Common\Cmd_msc.c do_msc
9、Common\Cmd_bootm.c do_bootm
- MIPS UBOOT
- JZ4770 UBOOT阅读 (MIPS)
- MIPS Uboot流程
- 【uboot】mips架构uboot启动分析
- [mips-uboot]mips架构u-boot 启动流程(代码)
- 【mips-uboot】3 mips的U-Boot分析及移植
- [mips-uboot]4:u-boot/mips移植分析
- 基于MIPS的uBoot编译环境搭建
- MIPS架构UBOOT和linux参数传递
- 基于MIPS的uBoot编译环境搭建
- MIPS架构UBOOT和Linux参数传递
- MIPS处理器的uboot怎么写
- [mips-uboot]2:u-boot简介与启动代码分析
- 基于mips架构的uboot 启动流程 (1)
- 基于mips架构的uboot 启动流程 (2)
- 基于mips架构的uboot启动流程(3)
- 基于mips架构的uboot启动流程(4)
- 基于mips架构的uboot 启动流程 (1)
- JBOSS安全
- C++ 派生类的构造和析构函数
- Unity 利用NGUI2.6.3做技能冷却的CD效果
- UNIX网络编程——UDP回射服务器程序(初级版本)以及漏洞分析
- 左连接、右连接、交叉连接、全外连接
- MIPS UBOOT
- POJ3384+半平面交
- Edge-Aware Filtering
- c-ares: library for asynchronous name resolves
- android jni 使用过程
- ps抠图方法、技巧大集合!
- 论事务脚本与领域模型
- cron job的方式定时备份Redis的数据文件,并将备份文件copy到安全的磁盘介质中。创建一个定期任务(cron job)
- Java Thread 总结