歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> u-boot-2011.06在基於s3c2440開發板的移植之編譯配置

u-boot-2011.06在基於s3c2440開發板的移植之編譯配置

日期:2017/3/1 11:11:43   编辑:Linux編程

在這篇文章的基礎上,本文詳細介紹u-boot-2011.06的NorFlash啟動移植方法。

相關閱讀:

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

U-Boot-2011.06啟動流程分析 http://www.linuxidc.com/Linux/2011-07/39310.htm

u-boot-2011.06在基於s3c2440開發板的移植之編譯配置 http://www.linuxidc.com/Linux/2011-10/45455.htm

u-boot-2011.06在基於s3c2440開發板的移植之NorFlash啟動 http://www.linuxidc.com/Linux/2011-10/45456.htm

u-boot-2011.06在基於S3C2440開發板的移植之解決raise: Signal # 8 caught http://www.linuxidc.com/Linux/2011-10/454554.htm

u-boot-2011.06在基於s3c2440開發板的移植之支持NandFlash讀寫 http://www.linuxidc.com/Linux/2011-10/45457.htm

u-boot-2011.06在基於s3c2440開發板的移植之硬件ECC http://www.linuxidc.com/Linux/2011-10/454558.htm

1.修改宏定義

打開include/configs/zhaocj2440.h文件

第38行“#define CONFIG_S3C2410 /*specifically a SAMSUNG S3C2410SoC */”改為:

38:#define CONFIG_S3C2440 /* specifically a SAMSUNG S3C2440 SoC */

目的是告之系統本開發板使用的是S3C2440處理器。

第131行“#define CONFIG_SYS_PROMPT "SMDK2410 # "”改為:

131:#define CONFIG_SYS_PROMPT "ZHAOCJ2440# "

目的是使命令行提示符顯示為“ZHAOCJ2440# ”。

第185行“#define CONFIG_FLASH_CFI_LEGACY”改為:

185:#define CONFIG_SYS_CFI_FLASH_CONFIG_REGS {0xFFFF}

因為在u-boot-2011.06中,使用的是CFI的NorFlash接口,所以不需要定義CONFIG_FLASH_CFI_LEGACY,而是要定義CONFIG_SYS_CFI_FLASH_CONFIG_REGS。

第191行“#define CONFIG_SYS_MAX_FLASH_SECT (19)”改為:

191:#define CONFIG_SYS_MAX_FLASH_SECT (35)

因為本開發板使用的NorFlash是EN29LV160AB,它有35個扇區。

第212行“#define CONFIG_NAND_S3C2410”改為:

212:#define CONFIG_NAND_S3C2440

第213行“#define CONFIG_SYS_S3C2410_NAND_HWECC”改為:

213:#define CONFIG_SYS_S3C2440_NAND_HWECC

2.修改系統時鐘頻率

打開arch/arm/cpu/arm920t/start.s文件

第164行“# if defined(CONFIG_S3C2410)”改為:

164:# if defined(CONFIG_S3C2440)

第165行“ldr r1, =0x3ff”改為:

165:ldr r1, =0x7fff

目的是屏蔽所有子中斷。

第173行“mov r1, #3”改為:

173:mov r1, #5

目的是使FCLK:HCLK:PCLK= 1:4:8。

打開board/samsung/zhaocj2440/zhaocj2440.c文件

第42行至第44行的內容改為:

42:#define M_MDIV 92

43:#define M_PDIV 1

44:#define M_SDIV 1

本開發板的輸入晶振頻率為12MHz,通過上面的修改,則MPLL頻率為400MHz。

第54行至第56行的內容改為:

54:#define U_M_MDIV 56

55:#define U_M_PDIV 2

56:#define U_M_SDIV 2

通過上面的修改,則UPLL頻率為48MHz。

3.修改內存SDRAM時序

打開board/samsung/zhaocj2440/lowlevel_init.s文件

第54行至第126行的內容改為:

54:#define B1_BWSCON (DW16)

55:#define B2_BWSCON (DW16)

56:#define B3_BWSCON (DW16)

57:#define B4_BWSCON (DW32)

58:#define B5_BWSCON (DW16)

59:#define B6_BWSCON (DW32)

60:#define B7_BWSCON (DW32)

61:

62:/* BANK0CON */

63:#define B0_Tacs 0x3

64:#define B0_Tcos 0x3

65:#define B0_Tacc 0x7

66:#define B0_Tcoh 0x3

67:#define B0_Tah 0x3

68:#define B0_Tacp 0x1

69:#define B0_PMC 0x0

70:

71:/* BANK1CON */

72:#define B1_Tacs 0x1

73:#define B1_Tcos 0x1

74:#define B1_Tacc 0x6

75:#define B1_Tcoh 0x1

76:#define B1_Tah 0x1

77:#define B1_Tacp 0x0

78:#define B1_PMC 0x0

79:

80:#define B2_Tacs 0x1

81:#define B2_Tcos 0x1

82:#define B2_Tacc 0x6

83:#define B2_Tcoh 0x1

84:#define B2_Tah 0x1

85:#define B2_Tacp 0x0

86:#define B2_PMC 0x0

87:

88:#define B3_Tacs 0x1

89:#define B3_Tcos 0x1

90:#define B3_Tacc 0x6

91:#define B3_Tcoh 0x1

92:#define B3_Tah 0x1

93:#define B3_Tacp 0x0

94:#define B3_PMC 0x0

95:

96:#define B4_Tacs 0x1

97:#define B4_Tcos 0x1

98:#define B4_Tacc 0x6

99:#define B4_Tcoh 0x1

100:#define B4_Tah 0x1

101:#define B4_Tacp 0x0

102:#define B4_PMC 0x0

103:

104:#define B5_Tacs 0x1

105:#define B5_Tcos 0x1

106:#define B5_Tacc 0x6

107:#define B5_Tcoh 0x1

108:#define B5_Tah 0x1

109:#define B5_Tacp 0x0

110:#define B5_PMC 0x0

111:

112:#define B6_MT 0x3

113:#define B6_Trcd 0x1

114:#define B6_SCAN 0x1

115:

116:#define B7_MT 0x3

117:#define B7_Trcd 0x1

118:#define B7_SCAN 0x1

119:

120:/* REFRESH parameter */

121:#define REFEN 0x1

122:#define TREFMD 0x0

123:#define Trp 0x1

124:#define Trc 0x1

125:#define Tchr 0x2

126:#define REFCNT 1268

4.修改NandFlash相關內容。

盡管本次移植沒有涉及到NandFlash,但為了能夠編譯成功,必須修改下面有關NandFlash的內容。

進入u-boot-2011.06目錄,執行下列命令:

cp drivers/mtd/nand/s3c2410_nand.c drivers/mtd/nand/s3c2440_nand.c

打開drivers/mtd/nand/s3c2440_nand.c文件,把該文件內的所有有關“2410”的地方一律改為“2440”。

再打開drivers/mtd/nand/Makefile文件

第48行“COBJS-$(CONFIG_NAND_S3C2410) += s3c2410_nand.o”改為

48:COBJS-$(CONFIG_NAND_S3C2440) += s3c2440_nand.o

編譯u-boot,把編譯生成的新的u-boot.bin燒寫到NorFlash中。開發板上電啟動後,則在超級終端(或類似的軟件)中顯示的結果為:

U-Boot 2011.06 (Jul 30 2011 - 23:40:44)

DRAM: 64 MiB

Flash: 2 MiB

NAND: raise: Signal # 8 caught

raise: Signal # 8 caught

raise: Signal # 8 caught

raise: Signal # 8 caught

raise: Signal # 8 caught

raise: Signal # 8 caught

No NAND device found!!!

0 MiB

*** Warning - bad CRC, using defaultenvironment

In: serial

Out: serial

Err: serial

Net: CS8900-0

ZHAOCJ2440 #

從上述顯示的內容可以看出本開發板的一些基本的信息,如DRAM為64M,NorFlash為2M,由於我沒有設置NandFlash,因此系統沒有檢測到NandFlash,命令提示符也已經修改為“ZHAOCJ2440 # ”。

在提示符下輸入flinfo,則會把NorFlash的更詳細的信息顯示出來:

Bank # 1: CFI conformant flash (16 x16) Size: 2 MB in 35 Sectors

AMDStandard command set, Manufacturer ID: 0x1C,Device ID: 0x2249

Erase timeout: 16384 ms, write timeout: 1 ms

Sector Start Addresses:

00000000 RO 00004000 RO 00006000 RO 00008000 RO 00010000 RO

00020000 RO 00030000 RO 00040000 RO 00050000 RO 00060000 RO

00070000 RO 00080000 00090000 000A0000 000B0000

000C0000 000D0000 000E0000 000F0000 00100000

00110000 00120000 00130000 00140000 00150000

00160000 00170000 00180000 00190000 001A0000

001B0000 001C0000 001D0000 001E0000 001F0000

Copyright © Linux教程網 All Rights Reserved