好文档 - 专业文书写作范文服务资料分享网站

S5PV210的u-boot移植SD卡方式

天下 分享 时间: 加入收藏 我要投稿 点赞

移植u-boot到GEC210

一、 编译u-boot

国内嵌入式厂商研发的S5PV210开发板大都基于SMDKV210评估板做了减法和调整,所以三星提供的u-boot、内核、文件系统大都适用于这些S5PV210开发板,我们就将三星提供的u-boot移植到GEC210开发板,提高起点,降低难度。

1. 解压:

tar jxvf android_uboot_smdkv210.tar.bz2 -C /home/

进入目录:

cd /home/u-boot-samsung-dev

2. 安装交叉编译器: Vim Makefile

在147行,我们发现u-boot使用arm-2009q3编译器: 143 ifeq ($(ARCH),arm)

144 #CROSS_COMPILE = arm-linux-

145 #CROSS_COMPILE = /usr/local/arm/4.4.1-eabi-cortex-a8/usr/bin/arm-linux- 146 #CROSS_COMPILE = /usr/local/arm/4.2.2-eabi/usr/bin/arm-linux- 147 CROSS_COMPILE =arm-none-linux-gnueabi-

148 endif

安装编译器:

#tar zxvf arm_gcc-4.4.1.tar.gz -C /usr/local/ 设置环境变量

vim /etc/bash.bashrc

#export PATH=/usr/local/4.4.1/bin:$PATH #source /etc/bash.bashrc

3. 修改配置文件:

vim include/configs/smdkv210single.h

将:

#define CONFIG_SERIAL3 1 /* we use UART1 on SMDKC110 */

修改为:

#define CONFIG_SERIAL1 1 /* we use UART1 on SMDKC110 */

4. 配置:

make smdkv210single_config

5. 编译: make -j 2

编译完毕后可以得到u-boot.bin。 6. 下载运行:(dnw下载不了的话,接着后面的步骤,将u-boot烧写到SD里面启动) 将GEC210开发板的启动方式开关打到SD--BOOT一侧,连接好USB下载线,打开DNW.exe,然后复位开发板。几秒后窗口上方的USB:X应该会变成USB:OK,如下:

下载gec210_usb.bin到0xd0020010地址: 初始化DDR内存

下载完毕后,USB连接会自动断开并再次自动连接上,再下载u-boot.bin到0x23e00000地址,下面是串口的输出:

U-Boot 1.3.4 (Jan 17 2013 - 10:51:36) for SMDKV210

CPU: S5PV210@1000MHz(OK)

APLL = 1000MHz, HclkMsys = 200MHz, PclkMsys = 100MHz MPLL = 667MHz, EPLL = 96MHz

HclkDsys = 166MHz, PclkDsys = 83MHz HclkPsys = 133MHz, PclkPsys = 66MHz SCLKA2M = 200MHz Serial = CLKUART Board: SMDKV210 DRAM: 1 GB Flash: 8 MB

SD/MMC: Card init fail! 0 MB

NAND: 256 MB

*** Warning - using default environment

In: serial Out: serial Err: serial

checking mode for fastboot ... Hit any key to stop autoboot: 0

SMDKV210 #

可以成功运行,S5PV210运行在1GHz,但认出来的DRAM大小(内存总数)有误。

二、 修改内存

我们的GEC210核心板有四块DDR2内存芯片,每块128MB,总共512MB:

我们再来看看S5PV210的地址映射图,S5PV210有两个DRAM区域:0x20000000-0x3FFFFFFF与0x40000000-0x7FFFFFFF:

由GEC210核心板的原理图可以看出,两块DDR芯片按高低16位数据线模式挂在DRAM0区域,另外两块DDR芯片按高低16位数据线模式挂在DRAM1区域。

由于DDR0映射起始地址Start 0x20000000 size 0x10000000 Hole 0x10000000

DDR1映射起始地址 Start 0x40000000 size 0x10000000

1. 修改配置文件:

vim include/configs/smdkv210single.h 加入:

32 #define MEMORY_BASE_ADDRESS1 0x40000000 33 #define DMC0_MEMCONTROL 0x00202400

修改:

410 #define DMC0_MEMCONFIG_0 0x20F00313 在vim cpu/s5pc11x/s5pc110/cpu_init.S 125调用到 ,在datasheet里面614可以查看到 411 #define DMC0_MEMCONFIG_1 0x00F00313

417 #define DMC1_MEMCONTROL 0x00202400 418 #define DMC1_MEMCONFIG_0 0x40F00313

419 #define DMC1_MEMCONFIG_1 0x00F00313

471 #define SDRAM_BANK_SIZE 0x10000000 /* 256 MB */

474 #define PHYS_SDRAM_2 (MEMORY_BASE_ADDRESS1) /* SDRAM Bank #2 */

2. 修改CPU初始化文件: vim cpu/s5pc11x/s5pc110/cpu_init.S

将122行: ldr r1, =0x00212400

修改为:

ldr r1, =DMC0_MEMCONTROL

3. 重新编译: #make

三、去掉SRAM电源管理芯片

由于我们的开发板并不像SMDKV210那样拥有16MB的SRAM和电源管理芯片,所以我们还要对代码进一步修改,修改底层初始化文件: vim board/samsung/smdkc110/lowlevel_init.S 使用条件编译屏蔽掉下面的代码:

#if 0

/* SRAM(2MB) init for SMDKC110 */ /* GPJ1 SROM_ADDR_16to21 */ ldr r0, =ELFIN_GPIO_BASE ……省略部分代码……

/* PS_HOLD pin(GPH0_0) set to high */

ldr r0, =(ELFIN_CLOCK_POWER_BASE + PS_HOLD_CONTROL_OFFSET) ldr r1, [r0]

orr r1, r1, #0x300 orr r1, r1, #0x1 str r1, [r0] #endif

使用条件编译屏蔽掉下面的代码:

#if 0

/* init PMIC chip */ bl PMIC_InitIp #endif

4. 重新编译: #make

5.制作SD启动,将sd连接到ubuntu里面 在u-boot源码目录下,进入sd_fusing # cd sd_fusing

编译 #make

# ./sd_fusing.sh /dev/sdb

S5PV210的u-boot移植SD卡方式

移植u-boot到GEC210一、编译u-boot国内嵌入式厂商研发的S5PV210开发板大都基于SMDKV210评估板做了减法和调整,所以三星提供的u-boot、内核、文件系统大都适用于这些S5PV210开发板,我们就将三星提供的u-boot移植到GEC210开发板,提高起点,降低难度。1.解压:tarj
推荐度:
点击下载文档文档为doc格式
04e8b30fhl6et871e28x
领取福利

微信扫码领取福利

微信扫码分享