U-Boot移植

发布者:电子创意达人最新更新时间:2024-07-10 来源: elecfans关键字:u-boot  移植  s3c2440 手机看文章 扫描二维码
随时随地手机看文章

下面的两个函数ulong get_HCLK(void);ulong get_PCLK(void); 删掉或者注释掉.

#if 0
/* return HCLK frequency */
ulong get_HCLK(void)
{
    S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER();
    return((clk_power->CLKDIVN & 0x2) ? get_FCLK()/2 : get_FCLK());
}

/* return PCLK frequency */
ulong get_PCLK(void)
{
    S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER();
    return((clk_power->CLKDIVN & 0x1) ? get_HCLK()/2 : get_HCLK());
}

#endif

 

10. 记得把整个目录拷贝到非共享目录下编译,不然会出现错误:

ln: creating symbolic link `asm' to `asm-arm': Operation not supported

然后make tx2440_config, 出现

Configuring for tx2440 board...
然后make all

出现这个错误:

speed.c:137: error: structure has no member named `CAMDIVN'

修改include/s3c24x0.h

在S3C24X0_CLOCK_POWER结构体内增加:

S3C24X0_REG32   CAMDIVN;    /* for s3c2440*/

 

然后就可以make了, 奇怪的是, 只在/tmp里面能make....

生成了u-boot.bin文件, 拷贝到windows下面, 用easy openJtag烧录进去吧..

--------------------------

 

增加NandFlash的支持:

修改include/configs/tx2440.h

#define CONFIG_COMMANDS
                        (CONFIG_CMD_DFL  |
                        CFG_CMD_CACHE    |
                        CFG_CMD_NAND     |
                        /*CFG_CMD_EEPROM |*/
                        /*CFG_CMD_I2C    |*/
                        /*CFG_CMD_USB    |*/
                        CFG_CMD_REGINFO  |
                        CFG_CMD_DATE     |
                        CFG_CMD_ELF)

把CFG_CMD_NAND加进去, 然后在文件尾部增加:

/*NAND flash settings*/
#define CFG_NAND_BASE        0      //无实际意义:基地址,在board_nand_init中重新定义
#define CFG_MAX_NAND_DEVICE     1   //NAND Flash设备数目为1
#define NAND_MAX_CHIPS          1   //每个NAND设备由1个NADN芯片组

这个时候编译, 出现一个错误:

/tmp/u-boot-1.1.6/drivers/nand/nand.c:50: undefined reference to `board_nand_init'
make: *** [u-boot] Error 1
board_nand_init函数未定义

首先在include/s3c24x0.h增加结构体:

typedef struct {
    S3C24X0_REG32 NFCONF;
    S3C24X0_REG32 NFCONT;
    S3C24X0_REG32 NFCMD;
    S3C24X0_REG32 NFADDR;
    S3C24X0_REG32 NFDATA;
    S3C24X0_REG32 NFMECCD0;
    S3C24X0_REG32 NFMECCD1;
    S3C24X0_REG32 NFSECCD;
    S3C24X0_REG32 NFSTAT;
    S3C24X0_REG32 NFESTAT0;
    S3C24X0_REG32 NFESTAT1;
    S3C24X0_REG32 NFMECC0;
    S3C24X0_REG32 NFMECC1;
    S3C24X0_REG32 NFSECC;
    S3C24X0_REG32 NFSBLK;
    S3C24X0_REG32 NFEBLK;
} /*__attribute__((__packed__))*/ S3C2440_NAND;

 

在include/s3c2410.h里面增加函数声明:

static inline S3C2440_NAND * const S3C2440_GetBase_NAND(void)
{
    return (S3C2440_NAND * const)S3C2410_NAND_BASE;
}

找到linux内核包, 把/drivers/mtd/nand/s3c2410.c 文件拷贝过来, 改名叫cpu/arm920t/s3c24x0/nand_flash.c

修改cpu/arm920t/s3c24x0/Makefile, 增加nand_flash.o

COBJS   = i2c.o interrupts.o serial.o speed.o
          usb_ohci.o nand_flash.o

再编译make all


[1] [2]
关键字:u-boot  移植  s3c2440 引用地址:U-Boot移植

上一篇:TQ2440触摸屏
下一篇:ALSA声卡_从零编写之数据传输(基于优龙FS2410开发板,UDA1341声卡)

推荐阅读最新更新时间:2024-11-05 16:36

基于嵌入式CPU S3C2440的VGA显示系统设计
目前很多SOC厂商的微处理器芯片都集成了LCD控制器,如三星公司的S3C2410.S3C2440,Intel的Xscale系列等。大多数嵌入式系统也采用流行的LCD显示技术。但是在需要大屏幕显示、对分辨率要求不高的场合,如车间、厂房,采用大屏幕LCD则成本过高。另一方面,VGA显示技术因为技术发展成熟,成本低廉,仍在被大量使用,直到今天它仍是所有显示终端最为成熟的标准接口。如果让嵌入式处理器直接支持VGA显示器,则能很大地利用现有资源,节约系统成本。 1 基于S3C2440的VGA显示技术分析 通过分析VGA显示技术的时序逻辑与S3C2440内部集成LCD控制器驱动TFT LCD的时序逻辑,找出它们的共同点,分析在S3C244
[单片机]
基于嵌入式CPU <font color='red'>S3C2440</font>的VGA显示系统设计
s3c2440 ARM9 裸机驱动第二篇—2440系统时钟
一、硬件部分: 1.时钟树: 2440的系统时钟是由MPLL和UPLL来设置的,MPLL用于设置FCLK、HCLK、PLCK。UPLL主要用于USB。 FCLK用于CPU核,HCLK用于AHB总线,PCLK用于APB总线。 2.寄存器: 对于2440,有如下寄存器 LOCKTIME、MPLLCON、UPLLCON、CLKCON、CLKSLOW、CLKDIVN、CAMDIVN。 其中:LOCKTIME用于设置locktime,默认值即可,可以不用配置 MPLLCON用于设置FCLK UPLLCON用于设置USB时钟 CLKCON用于控制外设时钟开启或者关闭,默认都打开。 CLKDIVN、
[单片机]
<font color='red'>s3c2440</font> ARM9 裸机驱动第二篇—2440系统时钟
u-boot启动过程分析——基于lpc2210的移植代码
u-boot是一种普遍用于嵌入式系统中的Bootloader。 Bootloader介绍 Bootloader是进行嵌入式开发必然会接触的一个概念,它是嵌入式学院 嵌入式工程师职业培训班 二期课程中嵌入式linux系统开发方面的重要内容。本篇文章主要讲解Bootloader的基本概念以及内部原理,这部分内容的掌握将对嵌入式linux系统开发的学习非常有帮助! Bootloader的定义:Bootloader是在操作系统运行之前执行的一小段程序,通过这一小段程序,我们可以初始化硬件设备、建立内存空间的映射表,从而建立适当的系统软硬件环境,为最终调用操作系统内核做好准备。意思就是说如果我们要想让一个操作系统在我们的板子上运转起来
[单片机]
<font color='red'>u-boot</font>启动过程分析——基于lpc2210的<font color='red'>移植</font>代码
ARM9(S3C2440)的IO口--LED流水灯
概述 S3C2440A 包含了130 个多功能输入/输出口引脚并且它们为如下显示的八个端口: 端口A(GPA):25 位输出端口 端口B(GPB):11 位输入/输出端口 端口C(GPC):16 位输入/输出端口 端口D(GPD):16 位输入/输出端口 端口E(GPE):16 位输入/输出端口 端口F(GPF):8 位输入/输出端口 端口G(GPG):16 位输入/输出端口 端口H(GPH):9 位输入/输出端口 端口J(GPJ):13 位输入/输出端口 每个端口都可以简单的由软件配置为各种系统配置和设计要求。你必须在开始主程序前定义使用的每个引脚的功能。如果没有使用某个引脚的复用功能,这个引脚可
[单片机]
uC/OS-II在EP7312上的移植
摘要:首先介绍μC/OS-II操作系统的特点,重点分析μC/OS-II在EP7312上的移植方法,介绍μC/OS-II在EP7312中的开发过程。 关键词:嵌入式操作系统 μC/OS-II EP7312 引 言   随着Internet和后PC时代的到来,嵌入式系统的应用愈来愈广泛,嵌入式产品在人们的生活中无处不在。今天,嵌入式系统带来的工业年产值已超过1万亿美元,已经在IT产业中占有很大的比重。   通常,应用程序对嵌入式软件的基本要求是体积小、执行速度快、具有较好的裁减性和可移植性。嵌入式软件的灵魂是嵌入式操作系统。在特定的操作系统之上开发应用软件,可以让程序开发人员屏蔽掉很多低层硬件细节,使得应用程序调试方便、移植简单、易维护
[嵌入式]
linux-2.6.35.3内核移植s3c2440
宿 主机:Fedora13 目标 机:s3c2440 交叉 编译 器:arm-linux-gcc-3.4.1 交叉编译器路径:/usr/local/arm/3.4.1 要移植 的内核 版本:linux-2.6.35.3 文件 系统 类型: yaffs2 一、准备工作 1、下载 解压内核 从官网上下载linux-2.6.35的内核, ftp://ftp.kernel.org/pub/linux/kernel/v2.6/ ,文件不大,约85M。 新建一个工作目录s3c2440,将内核源码包拷贝至工作目录下,再解压。 2、移植yaffs2驱动 下载最新的驱动http://www.aleph1.co.uk/cgi
[单片机]
fatfs文件系统移植到STM32F10x
//文件系统与SD卡驱动接口文件diskio.c #include diskio.h #include ffconf.h #include #include MMC_SD.h DSTATUS disk_initialize ( BYTE drv ) { int Status; switch (drv) { case 0 : // Status = MSD0_Init(); Status = SD_Init(); if(Status==0){ return RES_OK; }else{ return STA_NOINIT; } case 1
[单片机]
最简单的s3c2440的UART功能测试
* 文件名称:UART.c * 实现功能:最基本的UART发送与接收 * 作者:无jianqi * 版本:1.0 #include 2440addr.h //包含2440相关寄存器的设置 #include def.h //四个LED对应GPB5.6.7.8。 #define LED1 5 #define LED2 6 #define LED3 7 #define LED4 8 #define BAUD 115200 //波特率 #define Bit(x) (1 x) //将某位置位 #define Output(x) (1 2*x) //将对应IO置为输出 #define LED_On(x) rGPBDAT=~Bit(x
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved