Uboot_for_Tiny6410_移植步骤详解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Uboot_for_Tiny6410_移植步骤详解
一、设计要求
1.目的
1)掌握U-boot剪裁编写
2)掌握交叉编译环境的配置
3)掌握U-boot的移植
2.实现的功能
1)U-boot编译成功
2)移植U-boot,使系统支持从NAND FLASH启
动
二、设计方案
1.硬件资源
1)ARM处理器:ARM11芯片(Samsung
S3C6410A),基于ARM1176JZF-S核设计,运
行频率533Mhz, 最高可达667Mhz
2)存储器:128M DDR RAM,可升级至256M;
MLC NAND Flash(2GB)
3)其他资源:具有三LCD接口、4线电阻触摸
屏接口、100M 标准网络接口、标准DB9 五
线串口、Mini USB 2.0 接口、USB Host 1.1、
3.5mm音频输入输出口、标准TV-OUT 接口、
SD卡座、红外接收等常用接口;另外还引出
4路TTL串口,另1 路TV-OUT、SDIO2 接口
(可接SD WiFi)接口等;在板的还有蜂鸣器、
I2C-EEPROM、备份电池、AD可调电阻、8 个
中断式按键等。
2.软件资源
1)arm-linux-gcc-4.5.1(交叉编译)
2)u-boot-2010.09.tar.gz
arm-linux-gcc-4.5.1-v6-vfp-20101103.tgz
三、移植过程
1.环境搭建
1)建立交叉编译环境
2)去这2 个网站随便下载都可以下载得到最
新或者你想要的u-boot。
(/batch.viewlink.
php?itemid=1694
ftp://ftp.denx.de/pub/u-boot/
)
下面是具体的对u-boot…的修改
一:下载并解压u-boot-gxb.tar.gz。
#tar xzvf u-boot-gxb.tar.gz
二:在顶层的目录下找到Makefile文件,并用gedit
打开
在Makefile中找到下面代码进行修改
########################################################################
## ARM1176 Systems
#########################################################################
smdk6400_noUSB_config \
smdk6400_config : unconfig
@mkdir -p $(obj)include $(obj)board/samsung/smdk6400
@mkdir -p $(obj)nand_spl/board/samsung/smdk6400
@echo "#define CONFIG_NAND_U_BOOT" > $(obj)include/config.h
@echo "CONFIG_NAND_U_BOOT = y" >> $(obj)include/config.mk
@if [ -z "$(findstring smdk6400_noUSB_config,$@)" ]; then \
echo "RAM_TEXT = 0x57e00000" >> $(obj)board/samsung/smdk6400/config.tmp;\ else \
echo "RAM_TEXT = 0xc7e00000" >> $(obj)board/samsung/smdk6400/config.tmp;\ fi
@$(MKCONFIG) smdk6400 arm arm1176 smdk6400 samsung s3c64xx
@echo "CONFIG_NAND_U_BOOT = y" >> $(obj)include/config.mk
下面红色的为新增加的
#=====================更改部分=======================================
tiny6410_noUSB_config \
tiny6410_config : unconfig
@mkdir -p $(obj)include $(obj)board/samsung/tiny6410
@mkdir -p $(obj)nand_spl/board/samsung/tiny6410
@echo "#define CONFIG_NAND_U_BOOT" > $(obj)include/config.h
@echo "CONFIG_NAND_U_BOOT = y" >> $(obj)include/config.mk
@if [ -z "$(findstring tiny6410_noUSB_config,$@)" ]; then \
echo "RAM_TEXT = 0x57e00000" >>
$(obj)board/samsung/tiny6410/config.tmp;\
else \
echo "RAM_TEXT = 0xc7e00000" >> $(obj)board/samsung/tiny6410/config.tmp;\
fi
@$(MKCONFIG) tiny6410 arm arm1176 tiny6410 samsung s3c64xx
@echo "CONFIG_NAND_U_BOOT = y" >> $(obj)include/config.mk
#==================================================================
三: arch/arm/cpu/arm1176/s3c64xx/cpu_init.S
#gedit arch/arm/cpu/arm1176/s3c64xx/cpu_init.S
#include
#include
.globl mem_ctrl_asm_init
mem_ctrl_asm_init:
/* DMC1 base address 0x7e001000 */
ldr r0, =ELFIN_DMC1_BASE
ldr r1, =0x4
str r1, [r0, #INDEX_DMC_MEMC_CMD]
ldr r1, =DMC_DDR_REFRESH_PRD
str r1, [r0, #INDEX_DMC_REFRESH_PRD]
ldr r1, =DMC_DDR_CAS_LATENCY
str r1, [r0, #INDEX_DMC_CAS_LATENCY]
ldr r1, =DMC_DDR_t_DQSS
str r1, [r0, #INDEX_DMC_T_DQSS]
ldr r1, =DMC_DDR_t_MRD
str r1, [r0, #INDEX_DMC_T_MRD]
ldr r1, =DMC_DDR_t_RAS
str r1, [r0, #INDEX_DMC_T_RAS]
ldr r1, =DMC_DDR_t_RC
str r1, [r0, #INDEX_DMC_T_RC]
ldr r1, =DMC_DDR_t_RCD
ldr r2, =DMC_DDR_schedule_RCD
orr r1, r1, r2