歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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

在這篇文章的基礎上,本文詳細介紹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