`
izuoyan
  • 浏览: 9223187 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ARM+LINUX移植攻略(三)U-boot-2009.08移植TE2440II开发板--在SDRAM中运行

阅读更多

哈尔滨理工大学软件工程专业08-7李万鹏原创作品,转载请标明出处
http://blog.csdn.net/woshixingaaa/archive/2011/02/09/6175141.aspx

因为串口的波特率问题纠结了我2天,嘿嘿。
1.首先创建自己板子的目录
cd u-boot-2009.08
mkdir board/samsung/TE2440II
cp board/samsung/smdk2410/* board/samsung/TE2440II/
mv board/samsung/TE2440II/smdk2410.c board/samsung/TE2440II/TE2440II.c
2.添加配置文件
cp include/configs/smdk2410.h include/configs/TE2440II.h
在include/configs/smdk2410.h include/configs/TE2440II.h中添加
#define CONFIG_SKIP_LOWLEVEL_INIT 1
因为是先在SDRAM中运行,所以要跳过底层的初始化。暂时没有添加CONFIG_2440,用原来的CONFIG_2410,以提高移植速度。
注意暂时不要添加#define CONFIG_SKIP_RELOCATE_UBOOT 1
否则就要更改你的下载地址为0x33f80000,让他去搬运代码吧
3.修改board/samsung/TE2440II/ 目录下的Makefile,把COBJS := 修改为
COBJS := TE2440II.o flash.o
4.修改顶层Makefile
TE2440II_config : unconfig
@$(MKCONFIG) $(@:_config=) arm arm920t TE2440II samsung s3c24x0
注意有个Tab键
5. 修改顶层Makefile文件,在CROSS_COMPILE ?=后面添加自己的交叉编译工具。
CROSS_COMPILE ?= /usr/local/arm/4.3.2/bin/arm-linux-
6.完成这几步后编译一下
make TE2440II_config
make
下到SDRAM中,终端应该没有任何信息,需要设置波特率。
1. 修改TE2440II.c文件
#elif FCLK_SPEED==1 /* Fout = 405MHz */
#define M_MDIV 0x7f
#define M_PDIV 0x2
#define M_SDIV 0x1
#endif

2. 修改cpu/arm920t/start.S
外部晶振为12MHz,通过MPLLCON设置MPLL为405M
#if defined(CONFIG_S3C2410)
#define MPLLCON 0x4C000004
#define UPLLCON 0x4c000008
#define LOCKTIME 0x4C000000
#define CAMDIVN 0x4C000018
ldr r0,=LOCKTIME
ldr r1,=0xffffffff
str r1,[r0]
//清除摄像头分频寄存器的值
ldr r0,=CAMDIVN
mov r1,#0
str r1,[r0]
ldr r0, =CLKDIVN
mov r1, #5
str r1,[r0]

//手册说HDIVN不为0,加这个
mrc p15, 0, r1, c1, c0, 0 //read ctrl register
orr r1, r1, #0xc0000000 //Asynchronous
mcr p15, 0, r1, c1, c0, 0 //write ctrl register

ldr r0, =UPLLCON //同时修改UPLLCON和MPLLCON需要先修
ldr r1, =0x00038022 //改UPLLCON,且之间要间隔至少7个nop
str r1,[r0] //手册有些
nop
nop
nop
nop
nop
nop
nop
nop
ldr r0, =MPLLCON
ldr r1, =0x0007f021
str r1,[r0]
#endif
3. 修改cpu/arm920t/s3c24x0/speed.c
由于S3C2440和S3C2410的MPLL计算公式改变了,所以要改一下。
get_PLLCLK改成这样
static ulong get_PLLCLK(int pllreg)
{
S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER();
ulong r, m, p, s;

if (pllreg == MPLL)
r = clk_power->MPLLCON;
else if (pllreg == UPLL)
r = clk_power->UPLLCON;
else
hang();

m = ((r & 0xFF000) >> 12) + 8;
p = ((r & 0x003F0) >> 4) + 2;
s = r & 0x3;
if (pllreg == MPLL) //MPLL的算法和UPLL是不同的。这里m=2*m
{
m <<= 1;
}

p = ((r & 0x003F0) >> 4) + 2;
s = r & 0x3;

return ((CONFIG_SYS_CLK_FREQ * m) / (p << s));
}
get_HCLK改成这样
/* return HCLK frequency */
ulong get_HCLK(void)
{
S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER();
return get_FCLK()/4;
//return((clk_power->CLKDIVN & 0x2) ? get_FCLK()/2 : get_FCLK());
}
get_PCLK改成这样
/* return PCLK frequency */
ulong get_PCLK(void)
{
S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER();
return get_HCLK()/2;
//return((clk_power->CLKDIVN & 0x1) ? get_HCLK()/2 : get_HCLK());
}
4. 我出问题的地方是串口,显示的基本跟正常的一样,但是显示为乱码,是串口波特率的问题。在drivers/serial/serial_s3c24x0.c中,修改
uart->UBRDIV = 27;
我直接设定了,不用鸟u-boot再鸟算了,他自己怎么也算不对,我帮他。
5. make TE2440II_config
make
下载到SDRAM中,哈哈。

3
分享到:
评论

相关推荐

    u-boot-2012.04.01移植到TQ2440详细过程

    在本文中,我们将深入探讨如何将u-boot-2012.04.01版本移植到TQ2440开发板上。这个过程对于理解嵌入式系统的引导加载程序(bootloader)以及硬件平台的初始化至关重要。u-boot是一个广泛应用的开源引导加载程序,而...

    u-boot-tiny6410-sd.tar.gz

    【描述】中的"支持sd卡启动"指的是这个U-Boot版本包含了对SD卡启动机制的专门适配,使得开发板或嵌入式设备可以将操作系统镜像存储在SD卡上,并通过SD卡来启动系统。"修改u-boot-mini6410-20101106.tar.gz而来"意味...

    移植好的u-boot2009.08

    《移植好的u-boot2009.08在mini2440/micro2440平台的应用详解》 u-boot作为嵌入式系统的重要组成部分,是设备启动时执行的第一段代码,它负责加载操作系统内核,进行硬件初始化,以及提供用户交互界面。本文将深入...

    u-boot移植过程详细笔记

    u-boot移植过程是指将u-boot移植到特定的开发板上,使其能够正确地运行和启动。这个过程需要对u-boot的源码进行修改,以适应特定的硬件平台。 整个移植过程可以分为以下几个步骤: 1. 准备u-boot的源码:首先需要...

    arm-linux-gnueabihf-gcc-linaro-7.5.0-x86_64.tar.xz.zip

    标题中的"arm-linux-gnueabihf-gcc-linaro-7.5.0-x86_64.tar.xz.zip"是一个针对ARM架构的Linux交叉编译工具链的压缩包,它由Linaro组织提供。Linaro是一个非营利组织,专注于优化和维护开源软件在ARM处理器上的性能...

    arm-linux-gcc.4.3.2.rar

    目的:在ubuntu下编译 在arm开发板上运行 第一步:将arm-linux-gcc-4.3.2.bz2拷贝到虚拟机的任意目录 第二步:查看当前系统是否支持arm-linux-gcc 如果不存在 则继续如下步骤: 第三步:在/usr/local创建一个文件夹...

    u-boot.bin_tekkaman_2009.11.bz2

    u-boot.bin_tekkaman_2009.11.bz2 参考网站:Tekkaman Ninja ...已经针对mini2440 编译好的U-boot-2009.11 的bin文件在Tekkaman Ninja 的博客中有,可以直接烧入, 链接:u-boot.bin_tekkaman_2009.11.tar.bz2

    u-boot 2011.12 移植

    【u-boot 2011.12 移植】涉及的知识点主要集中在嵌入式Linux系统的引导加载器u-boot的移植过程,特别是针对S3C2440处理器的移植。下面将详细介绍这些内容: 1. **配置编译环境**: - 首先,你需要从指定FTP服务器...

    u-boot-2010.06移植到mini2440(实录)

    在本文中,我们将深入探讨如何将u-boot-2010.06版本移植到Mini2440开发板上,这是一个基于S3C2440处理器的嵌入式平台。移植工作涉及到多个关键组件,包括对不同类型的闪存(如NOR Flash和NAND Flash)的支持以及网络...

    u-boot-2009.01-rc1.tar.bz2.rar_U-Boot2009._u-boot 2009.01_uboot-

    6. **多平台兼容**:U-Boot支持广泛的处理器架构,如ARM、PowerPC、MIPS、X86等,以及众多嵌入式开发板。 7. **源代码开放**:作为开源项目,U-Boot的源代码可供开发者研究、定制和改进,促进社区的持续发展。 在...

    u-boot-2018.05.tar.bz2

    个人移植并可以正常使用的uboot,适用于飞凌ok335xd开发板,米尔科技c335x开发板,基于u-boot官方u-boot-2018.05源码移植,并有git记录。 配置文件am335x_ok335xd_defconfig am335x_myd_defconfig

    u-boot-2011.09-forlinx.tar.rar

    u-boot具有丰富的命令行接口,允许用户在引导过程中进行各种操作,如设备检测、文件系统管理、网络通信等。 二、u-boot-2011.09 2011.09版本的u-boot是对该引导加载器的一次更新迭代,它包含了对当时硬件环境的优化...

    移植U-Boot-2010.03.到友善之臂mini2440_himrce_mini2440_U-Boot_dull3lc_

    在这个过程中,我们可能会涉及到多个关键知识点,包括U-Boot的基本概念、Mini2440开发板的硬件特性、移植步骤以及可能遇到的问题和解决方法。 U-Boot是通用的开放源代码引导加载程序,主要用于嵌入式系统,它负责...

    arm-linux-gcc-4.4.3.tar.gz

    标题中的"arm-linux-gcc-4.4.3.tar.gz"是一个针对ARM架构Linux系统的交叉编译工具链的压缩包,版本为4.4.3。这个工具链包含了用于构建和编译针对ARM处理器应用程序的GCC(GNU Compiler Collection)和其他必要的库和...

    移植u-boot-2009.11至广嵌GEC2440开发板(摘录)

    移植 u-boot-2009.11 到广嵌 GEC2440 开发板是一项涉及嵌入式系统开发的关键任务,主要目的是使 u-boot 能够适应特定硬件平台,从而实现从不同的存储介质启动以及支持特定外设。在这个过程中,我们需要关注以下几个...

    linux-xlnx-xilinx-v2017.4.tar.gz

    这个压缩包包含了完整的软件堆栈,使得用户能够在Xilinx FPGA硬件平台上运行Linux操作系统,并充分利用FPGA的可编程特性。下面我们将深入探讨其中涉及的关键知识点。 首先,Xilinx是一家知名的半导体公司,其主要...

    hfrk2410开发板移植(u-boot.bin,uImage,mkimage)

    在hfrk2410开发板上移植`u-boot`时,首先需要获取针对该板子定制的`u-boot`源码,然后进行编译。编译过程通常包括配置(`make menuconfig`)、编译(`make`)和烧录(将生成的`u-boot.bin`文件写入开发板的存储器,...

Global site tag (gtag.js) - Google Analytics