U-boot-2009.03移植之十:第一阶段之修改/board/samsung/mini2440/mini2440.c

 

参考http://zjbintsystem.blog.51cto.com/964211/211345

 需要注意的是,为了引导内核,需要制定开发板类型代码,因此加上了这几句:

#if defined(CONFIG_S3C2440)

/* arch number of S3C2440-Board */

    gd->bd->bi_arch_number = MACH_TYPE_S3C2440 ;

#endif

很多晚上都是说类型代码是MACH_TYPE_S3C2440 ,这里真是害人不浅!当初就是因为这个类型码出错,差点没折腾死。

实际上应该是MACH_TYPE_MINI2440 ,这个类型码定义在include/asm-arm/mach-types.h中。语句为:

#define MACH_TYPE_MINI2440             1999

 

修改这个文件主要是为了

1:修改其对GPIO

2:修改PLL的配置(请参阅开发板的硬件说明和芯片手册);

3:并针对LCD显示部分和nand flash驱动添加相应的代码: ......

#include <common.h>

#include <s3c2410.h>

#include <video_fb.h>

#if defined(CONFIG_CMD_NAND)

#include <linux/mtd/nand.h>

#endif

DECLARE_GLOBAL_DATA_PTR;

#define FCLK_SPEED 1

#if FCLK_SPEED==0        /* Fout = 203MHz, Fin = 12MHz for Audio */

#define M_MDIV    0xC3

#define M_PDIV    0x4

#define M_SDIV    0x1

#elif FCLK_SPEED==1        /* Fout = 202.8MHz */

#if defined(CONFIG_S3C2410)

/* Fout = 202.8MHz */

#define M_MDIV    0xA1

#define M_PDIV    0x3

#define M_SDIV    0x1

#endif

#if defined(CONFIG_S3C2440)

/* Fout = 405MHz */

#define M_MDIV 0x7f    

#define M_PDIV 0x2

#define M_SDIV 0x1

#endif

#endif

#define USB_CLOCK 1

#if USB_CLOCK==0

#define U_M_MDIV    0xA1

#define U_M_PDIV    0x3

#define U_M_SDIV    0x1

#elif USB_CLOCK==1

#if defined(CONFIG_S3C2410)

#define U_M_MDIV    0x48

#define U_M_PDIV    0x3

#endif

#if defined(CONFIG_S3C2440)

#define U_M_MDIV 0x38

#define U_M_PDIV 0x2

#endif

#define U_M_SDIV    0x2

#endif

......

为连接LED和蜂鸣器的GPIO修改配置寄存器:

int board_init (void):

......

#if defined(CONFIG_MINI2440) 

    gpio->GPBCON = 0x00295551;

#else

    gpio->GPBCON = 0x00044556;

#endif

......

为引导linux 内核,修改开发板的类型代码:

int board_init (void):

......

#if defined(CONFIG_S3C2410)

    /* arch number of SMDK2410-Board */

    gd->bd->bi_arch_number = MACH_TYPE_SMDK2410;

#endif

#if defined(CONFIG_S3C2440)

/* arch number of S3C2440-Board */

    gd->bd->bi_arch_number = MACH_TYPE_S3C2440 ;

#endif

......为使int board_init (void)设置完成后,LED1和LED2同时亮起,蜂鸣器继续鸣叫,在int board_init (void)的最后添加: ......

    icache_enable();

    dcache_enable();

#if    defined(CONFIG_MINI2440_LED)

    gpio->GPBDAT = 0x00000181;

#endif

    return 0;

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值