u-boot2014.1粗略移植至s3c2440

即使是u-boot-2014.01中也没有对s3c2440有很好的支持,只能在s3c2410基础上修改。

 

复制board\samsung\smdk2410文件夹以及其下文件,将所有“2410”都改成“2440”(包括Makefile中的内容)。

复制include/configs/smdk2410.h成include/configs/smdk2440.h。

当然要在 include/configs/smdk2440.h 将 CONFIG_S3C2410 换成CONFIG_S3C2440

修改根目录下boards.cfg,仿照2410多加一条Active  arm         arm920t        s3c24x0     samsung         -                   smdk2440                             -                                                                                                                                 David Müller<d.mueller@elsoft.ch>

# make smdk2440_config

Configuring for smdk2440 board...

# make

 

修改s3c2410和s3c2440有区别的初始化程序,如[INTSUBMSK] = 0x7ff;[CLKDIVN] = 5;

当然 MPLLCON UPLLCON也有不同,在 board/samsung/smdk2440/smdk2440.c 中修改成如下。

#define FCLK_SPEED 2

#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 */

#define M_MDIV 0xA1

#define M_PDIV 0x3

#define M_SDIV 0x1

/*具体参考书册*/

#elif FCLK_SPEED==2 /* Fout = 405 MHZ*/

#define M_MDIV 0x7f

#define M_PDIV 0x2

#define M_SDIV 0x1

#endif

#define USB_CLOCK 2

#if USB_CLOCK==0

#define U_M_MDIV 0xA1

#define U_M_PDIV 0x3

#define U_M_SDIV 0x1

#elif USB_CLOCK==1

 

#define U_M_MDIV 0x48

#define U_M_PDIV 0x3

#define U_M_SDIV 0x2

/*具体参考手册*/

#elif USB_CLOCK==2 /*Uout = 48MHZ*/

#define U_M_MDIV 0x38

#define U_M_PDIV 0x2

#define U_M_SDIV 0x2

#endif

 

偶尔还是有地方会出现#if defined(CONFIG_S3C2440) 的,比如 arch/arm/cpu/arm920t/s3c24x0/speed.c就不要需要修改。

此时再 make 一次可能会出现各种error,这是因为将 CONFIG_S3C2410 改成 CONFIG_S3C2440 的原因(目前也只有这个宏定义的改动会让make过程产生变动)。

出现nand相关的error去 smdk2440.h 中屏蔽宏定义如CONFIG_CMD_NAND,出现yaffs相关时屏蔽CONFIG_YAFFS2,很显然 smdk2440.h 就是用来裁剪u-boot用的。

# make

烧入后,控制台会显示如下:

U-Boot 2014.01 (Feb 24 2014 - 04:47:02)

 

CPUID: 32440001

FCLK:     405 MHz

HCLK: 101.250 MHz

PCLK:  50.625 MHz

DRAM: 64 MiB

WARNING: Caches not enabled

Flash: *** failed ***

### ERROR ### Please RESET the board ###

 

追踪错误信息会发现只是因为jedec_flash_match 函数中没有配对好。根据NOR FLASH的数据手册修改比如下即可识别出nor flash,u-boot即可运行。

         {

           .mfr_id = (u16)0x1c,

           .dev_id = AM29LV160DB,//device id bottom boot

           .name = "EN29LV160DB",

           .uaddr = {

            [1] = MTD_UADDR_0x0555_0x02AA /* x16 */

            },

           .DevSize = SIZE_2MiB,

           .CmdSet = CFI_CMDSET_AMD_LEGACY,

           .NumEraseRegions= 4,

           .regions = {

            ERASEINFO(16*1024, 1),

            ERASEINFO(8*1024, 2),

            ERASEINFO(32*1024, 1),

            ERASEINFO(64*1024, 31),

            }

         },


NAND的支持:

根据2410的函数修改成2410的名字,NAND FLASH的协议都是一样的,关键在于时钟的配置,并且根据S3C2440的数据手册和S3C2410的不同地方进行修改。

比如时钟配置:如tacls = 4;twrph0 = 8;twrph1 = 8。

重点在于NFCONT,NFCONF等寄存器的位置不同。比如需要修改的函数,片选:s3c2440_nand_select,发送命令:s3c2440_hwcontrol。

程序中没有而需要自己增加的程序只有nfcont寄存器的NAND flash controller enable位使能。

网卡DM9000的支持:

网卡驱动本身需要修改的并不多,需要注意的有中断管脚、片选管脚、时钟的设置。

#define DM9000_IO CONFIG_DM9000_BASE
#define CONFIG_DM9000_BASE 0x20000000
#define DM9000_DATA 0x20000000 + 4


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值