第五章之S5PV210将u-boot.bin从SD卡中搬到DDR中

1,在完成上一节的memory初始化后,接下来在arch/arm/cpu/armv7/start.S的160行:如下图

2,跳转到arch/arm/lib/board.c下的board_init_f函数,如下图:

3,在285行的memset函数,此函数地址在0x3481c8c4,属于在BL2的地址范围。而_start地址在:0x34800000,很明显memset函数超出了BL1的16K的大小范围。

所以必需把BL2搬到DDR中,并且本身跳到DDR中执行BL2中的代码。

4,BL2移到内存中的代码,在光盘裸机代码的src下sdram中,删除了跳转,代码如下

 1 /*************************************************************************
 2     > File Name: mem_relocate.c
 3     > Author: 
 4     > Mail: 
 5     > Created Time: Thu 20 Jul 2017 02:42:15 PM CST
 6     >将SD卡中的U-BOOT搬到SDDRAM中
 7  ************************************************************************/
 8 
 9 typedef unsigned int (*copy_sd_mmc_to_mem) (unsigned int channel, unsigned int start_block, unsigned char block_size, unsigned int *trg, unsigned int init);
10 
11 
12 void copy_code_to_dram(void)
13 {
14     unsigned long ch;
15     unsigned long dest = 0x34800000;
16     unsigned int sec_no = 49;
17     
18     unsigned int ret;
19     
20     ch = *(volatile unsigned int *)(0xD0037488);
21     
22     copy_sd_mmc_to_mem copy_bl2 = (copy_sd_mmc_to_mem) (*(unsigned int *) (0xD0037F98));
23     
24     if(ch == 0xEB000000)
25     {
26         //0:channel 0
27         //49:源,代码位于扇区49,1 sector = 512 bytes
28         //dest:目的链接地址0x34800000,
29         ret = copy_bl2(0,sec_no,      128,(unsigned int *)dest,0);
30         ret = copy_bl2(0,sec_no + 128,128,(unsigned int *)(dest + 0x10000),0);
31         ret = copy_bl2(0,sec_no + 256,128,(unsigned int *)(dest + 0x20000),0);
32     }
33 }

5,将上面代码mem_relocate.c放在board/samsung/goni/下.

6,在board/samsung/goni/Makefile中添加上mem_relocate.o。如下图:

7,在board/samsung/goni/lowlevel_init.S文件,在bl internal_ram_init下一行,添加bl copy_code_to_dram

执行内存初始化后直接将BL2搬到内存中.如图:

8,将irom中运行中的BL1跳到DDR中运行,在arch/arm/cpu/armv7/start.S改动如下:注掉bl bl board_init_f

 

9,修改inculd/configs/s5p_goni.h相关的配置文件

a,

b,

c,

 10,make一下,生成如下错误:

11,修改board/samsung/goni/goni.c。如下图:

12,接下来再make一下,生成新的u-boot.bin

转载于:https://www.cnblogs.com/eeexu123/p/7285385.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值