Quantcast
Channel: CodeSection,代码区,Linux操作系统:Ubuntu_Centos_Debian - CodeSec
Viewing all articles
Browse latest Browse all 11063

移植U-boot_2016.09到JZ2440开发板

$
0
0

一.下载源码: U-Boot源代码下载地址 http://www.linuxidc.com/Linux/2011-07/38897.htm

二.初始化编译:

①make smdk2410_defconfig #首先使用默认配置,减少后续的配置工作

②make menuconfig #根据自身需求进一步配置

③修改Makefile ,开头只能架构和编译器:

ARCH=arm

CROSS_COMPILE=arm-linux-

④修改uboot代码:

1. 设置PLL的时钟的函数在_main中的board_init_f中初始化函数列表中的 boad_early_init_f 中,设置MPLL倍频值。它应该要在设置分频系数和初始化内存控制器之间来设置。

smdk2410.c可以注释掉:

/* to reduce PLL lock time, adjust the LOCKTIME register */

//writel(0xFFFFFF, &clk_power->locktime);

/* configure MPLL */

//writel((M_MDIV << 12) + (M_PDIV << 4) + M_SDIV,

// &clk_power->mpllcon);

在start.S中再设置:

#if 0

/* FCLK:HCLK:PCLK = 1:2:4 */

/* default FCLK is 120 MHz ! */

ldr r0, =CLKDIVN

mov r1, #3

str r1, [r0]

#else

/* 2. 设置时钟 */

ldr r0, =0x4c000014

// mov r1, #0x03; // FCLK:HCLK:PCLK=1:2:4, HDIVN=1,PDIVN=1

mov r1, #0x05; // FCLK:HCLK:PCLK=1:4:8

str r1, [r0]

/* 如果HDIVN非0,CPU的总线模式应该从“fast bus mode”变为“asynchronous bus mode” */

mrc p15, 0, r1, c1, c0, 0 /* 读出控制寄存器 */

orr r1, r1, #0xc0000000 /* 设置为“asynchronous bus mode” */

mcr p15, 0, r1, c1, c0, 0 /* 写入控制寄存器 */

#define S3C2440_MPLL_400MHZ ((0x5c<<12)|(0x01<<4)|(0x01))

/* MPLLCON = S3C2440_MPLL_200MHZ */

ldr r0, =0x4c000004

ldr r1, =S3C2440_MPLL_400MHZ

str r1, [r0]

/* 启动ICACHE */

mrc p15, 0, r0, c1, c0, 0 @ read control reg

orr r0, r0, #(1<<12)

mcr p15, 0, r0, c1, c0, 0 @ write it back

#endif

另一种改法:

将smdk2410.c 定义的时钟宏修改如下:

#define M_MDIV 0x5c

#define M_PDIV 0x1

#define M_SDIV 0x1

再在board_early_init_f(void)中增加一个寄存器的设置:

writel(0x5, &clk_power->clkdivn);

2.内存控制器的设置值改为如下:/board/samsung/smdk2410/lowlevel_init.S

SMRDATA:

#if 0

.word (0+(B1_BWSCON<<4)+(B2_BWSCON<<8)+(B3_BWSCON<<12)+(B4_BWSCON<<16)+(B5_BWSCON<<20)+(B6_BWSCON<<24)+(B7_BWSCON<<28))

.word ((B0_Tacs<<13)+(B0_Tcos<<11)+(B0_Tacc<<8)+(B0_Tcoh<<6)+(B0_Tah<<4)+(B0_Tacp<<2)+(B0_PMC))

.word ((B1_Tacs<<13)+(B1_Tcos<<11)+(B1_Tacc<<8)+(B1_Tcoh<<6)+(B1_Tah<<4)+(B1_Tacp<<2)+(B1_PMC))

.word ((B2_Tacs<<13)+(B2_Tcos<<11)+(B2_Tacc<<8)+(B2_Tcoh<<6)+(B2_Tah<<4)+(B2_Tacp<<2)+(B2_PMC))

.word ((B3_Tacs<<13)+(B3_Tcos<<11)+(B3_Tacc<<8)+(B3_Tcoh<<6)+(B3_Tah<<4)+(B3_Tacp<<2)+(B3_PMC))

.word ((B4_Tacs<<13)+(B4_Tcos<<11)+(B4_Tacc<<8)+(B4_Tcoh<<6)+(B4_Tah<<4)+(B4_Tacp<<2)+(B4_PMC))

.word ((B5_Tacs<<13)+(B5_Tcos<<11)+(B5_Tacc<<8)+(B5_Tcoh<<6)+(B5_Tah<<4)+(B5_Tacp<<2)+(B5_PMC))

.word ((B6_MT<<15)+(B6_Trcd<<2)+(B6_SCAN))

.word ((B7_MT<<15)+(B7_Trcd<<2)+(B7_SCAN))

.word ((REFEN<<23)+(TREFMD<<22)+(Trp<<20)+(Trc<<18)+(Tchr<<16)+REFCNT)

.word 0x32

.word 0x30

.word 0x30

#else

.long 0x22011110 //BWSCON

.long 0x00000700 //BANKCON0

.long 0x00000700 //BANKCON1

.long 0x00000700 //BANKCON2

.long 0x00000700 //BANKCON3

.long 0x00000700 //BANKCON4

.long 0x00000700 //BANKCON5

.long 0x00018005 //BANKCON6

.long 0x00018005 //BANKCON7

.long 0x008C04F4 //REFRESH

.long 0x000000B1 //BANKSIZE

.long 0x00000030 //MRSRB6

.long 0x00000030 //MRSRB7

#endif

3.修改波特率,更正smdk2410.h 的宏定义:

//#define CONFIG_S3C2410 /* specifically a SAMSUNG S3C2410 SoC */

#define CONFIG_S3C2440

4.支持NOR-FLASH: 在jedec_flash.c 的 jedec_table[] 中增加一项匹配板子上的NOR-Flash厂商ID和设备ID:

{ /* sheldon add for JZ2440 Nor_Flash*/

.mfr_id = (u16)MX_MANUFACT,

.dev_id = 0x2249,

.name = "MX29LV160D",

.uaddr = {

[1] = MTD_UADDR_0x0555_0x02AA /* x16 */

},

.DevSize = SIZE_1MiB,

.CmdSet = P_ID_AMD_STD,

.NumEraseRegions= 4,

.regions = {

ERASEINFO(0x10000, 31),

ERASEINFO(0x08000, 1),

ERASEINFO(0x02000, 2),

ERASEINFO(0x04000, 1),

}

PS:测试一下norflash能否正确读写,用以下u-boot命令:

cp.b 0 30000000 80

cmp.b 0 30000000 80

发现读norflash没有问题。再用以下几条命令测试写norflash:

mw.b 30000000 12 3

protect off all

erase 0 ffff

cp.b 30000000 0 3

md.b 0 3;

发现也是121212;因此写norflash成功,至此u-boot已经支持JZ2440开发板的norflash。

5.支持NAND-FLASH:

board_nand_init函数在drivers/mtd/nand/s3c2410_nand.c中定义:

(1)关闭S3C2410的配置: //cfg = S3C2410_NFCONF_EN;

(2)重新定义以下几个宏:

#define S3C2410_NFCONF_TACLS(x) ((x)<<12)

#define S3C2410_NFCONF_TWRPH0(x) ((x)<<8)

#define S3C2410_NFCONF_TWRPH1(x) ((x)<<4)

本文永久更新链接地址 : http://www.linuxidc.com/Linux/2016-09/135451.htm


Viewing all articles
Browse latest Browse all 11063

Trending Articles