首页 / 操作系统 / Linux / u-boot-2011.06在基于s3c2440开发板的移植之编译配置
在这篇文章的基础上,本文详细介绍u-boot-2011.06的NorFlash启动移植方法。相关阅读:U-Boot源代码下载地址 http://www.linuxidc.com/Linux/2011-07/38897.htmU-Boot-2011.06启动流程分析 http://www.linuxidc.com/Linux/2011-07/39310.htmu-boot-2011.06在基于s3c2440开发板的移植之编译配置 http://www.linuxidc.com/Linux/2011-10/45455.htmu-boot-2011.06在基于s3c2440开发板的移植之NorFlash启动 http://www.linuxidc.com/Linux/2011-10/45456.htmu-boot-2011.06在基于S3C2440开发板的移植之解决raise: Signal # 8 caught http://www.linuxidc.com/Linux/2011-10/454554.htmu-boot-2011.06在基于s3c2440开发板的移植之支持NandFlash读写 http://www.linuxidc.com/Linux/2011-10/45457.htmu-boot-2011.06在基于s3c2440开发板的移植之硬件ECC http://www.linuxidc.com/Linux/2011-10/454558.htm1.修改宏定义打开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 9243:#define M_PDIV 144:#define M_SDIV 1本开发板的输入晶振频率为12MHz,通过上面的修改,则MPLL频率为400MHz。 第54行至第56行的内容改为:54:#define U_M_MDIV 5655:#define U_M_PDIV 256:#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 0x364:#define B0_Tcos 0x365:#define B0_Tacc 0x766:#define B0_Tcoh 0x367:#define B0_Tah 0x368:#define B0_Tacp 0x169:#define B0_PMC 0x070:71:/* BANK1CON */72:#define B1_Tacs 0x173:#define B1_Tcos 0x174:#define B1_Tacc 0x675:#define B1_Tcoh 0x176:#define B1_Tah 0x177:#define B1_Tacp 0x078:#define B1_PMC 0x079:80:#define B2_Tacs 0x181:#define B2_Tcos 0x182:#define B2_Tacc 0x683:#define B2_Tcoh 0x184:#define B2_Tah 0x185:#define B2_Tacp 0x086:#define B2_PMC 0x087:88:#define B3_Tacs 0x189:#define B3_Tcos 0x190:#define B3_Tacc 0x691:#define B3_Tcoh 0x192:#define B3_Tah 0x193:#define B3_Tacp 0x094:#define B3_PMC 0x095:96:#define B4_Tacs 0x197:#define B4_Tcos 0x198:#define B4_Tacc 0x699:#define B4_Tcoh 0x1100:#define B4_Tah 0x1101:#define B4_Tacp 0x0102:#define B4_PMC 0x0103:104:#define B5_Tacs 0x1105:#define B5_Tcos 0x1106:#define B5_Tacc 0x6107:#define B5_Tcoh 0x1108:#define B5_Tah 0x1109:#define B5_Tacp 0x0110:#define B5_PMC 0x0111:112:#define B6_MT 0x3113:#define B6_Trcd 0x1114:#define B6_SCAN 0x1115:116:#define B7_MT 0x3117:#define B7_Trcd 0x1118:#define B7_SCAN 0x1119:120:/* REFRESH parameter */121:#define REFEN 0x1122:#define TREFMD 0x0123:#define Trp 0x1124:#define Trc 0x1125:#define Tchr 0x2126:#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 MiBFlash: 2 MiBNAND: raise: Signal # 8 caughtraise: Signal # 8 caughtraise: Signal # 8 caughtraise: Signal # 8 caughtraise: Signal # 8 caughtraise: Signal # 8 caughtNo NAND device found!!!0 MiB*** Warning - bad CRC, using defaultenvironment In: serialOut: serialErr: serialNet: CS8900-0ZHAOCJ2440 # 从上述显示的内容可以看出本开发板的一些基本的信息,如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