zoukankan      html  css  js  c++  java
  • 第五章之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

  • 相关阅读:
    POJ 1328 Radar Installation
    POJ 1700 Crossing River
    POJ 1700 Crossing River
    poj 3253 Fence Repair (贪心,优先队列)
    poj 3253 Fence Repair (贪心,优先队列)
    poj 3069 Saruman's Army(贪心)
    poj 3069 Saruman's Army(贪心)
    Redis 笔记与总结2 String 类型和 Hash 类型
    数据分析方法有哪些_数据分析方法
    数据分析方法有哪些_数据分析方法
  • 原文地址:https://www.cnblogs.com/eeexu123/p/7285385.html
Copyright © 2011-2022 走看看