移植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

