12M晶体更改为16.9344M晶体的步骤:
一:换Uboot; option.inc中,修改定义外部晶体为16.9344M: ;(2) Select XTaL ;XTAL_SEL SETA 12000000 XTAL_SEL SETA 16934400 option.inc中,FCLK修改为39965184M: FCLK SETA 399651840 ;FCLK SETA 400000000 option.inc中,修改CLKDIV_VAL的值为7,即1:3:6分频,这时SDRAM的CLK为133M: [FCLK = 399651840 ;lqm added for K390. ;CLKDIV_VAL EQU 5 ;7.这里修改为7后,PCLK=66.7M,程序运行不稳定!!! CLKDIV_VAL EQU7 ;7.这里修改为7后,PCLK=66.7M,程序运行不稳定!!! M_MDIV EQU 110 ;Fin=16.9344MHz M_PDIV EQU 3 [CPU_SEL = 32440001 M_SDIV EQU 1 ;2440A | M_SDIV EQU 1 ;2440X
二:换Eboot; startup.s中,修改锁相环寄存器值: PLLVAL EQU (((0x6e << 12) +(0x3 << 4) + 0x1)) ;//2440A.lqmchanged for FIN=16.9344M for 399.65M. ;PLLVAL EQU (((0x3e << 12) +(0x2 << 4) + 0x1)) ; 2440A Startup.s 中,修改SDRAM的相关参数: B6_MT EQU (0x3) ; SDRAM ;B6_Trcd EQU (0x2) ; 4clk B6_Trcd EQU (0x1) ; 3clk.lqm changed. B6_SCAN EQU (0x1) ; 9bit ; Bank 7 ; Note - there is no memory connected to Bank 7 B7_MT EQU (0x3) ; SDRAM ;B7_Trcd EQU (0x2) ; 4clk B7_Trcd EQU (0x1) ; 3clk.lqm changed. B7_SCAN EQU (0x1) ; 9bit 三:在Src文件夹中添加BOOTPART文件夹,用于生成BOOTPART.lib文件。 这部分主要是将public下的代码移过来,需要更改source文件下的lib库指定路径。 四:修改bsp_cfg.h头文件的S3C2440A_FCLK等定义值。 /* #define S3C2440A_FCLK 400000000 #define S3C2440A_HCLK (S3C2440A_FCLK/4) // divisor 4 #define S3C2440A_PCLK (S3C2440A_FCLK/8) // divisor 8 */ // lqm changed for FCLK:HCLK:PCLK=1:3:6.2010-06-09 #ifdef CRYSTAL12M #define S3C2440A_FCLK 400000000 #else #define S3C2440A_FCLK 399651840 #endif #define S3C2440A_HCLK (S3C2440A_FCLK/3) // divisor 4 #define S3C2440A_PCLK (S3C2440A_FCLK/6) // divisor 8 五:修改fmd.cpp中的nand flash保留块,由104变为0. NAND_Flash_Chip_t g_NandFlash_Chip_set[]= { {0xEC76,/*K9S1208*/ FALSE, 0,//*/40,//104,//0,//62M //lqm changed for reserve bootpart.10-04-13.lqmchanged from 104 to 40 for erase pic area.10-07-07 {NAND,4096,512*32,32,512}, FMD_ReadSector1208, FMD_WriteSector1208, FMD_EraseBlock1208, IsBlockBad1208, MarkBlockBad1208 }, …… } 六:通过JTAG仿真时,如果bootloader没有起来,先要初始化一次SDRAM,换用16.9344M晶体后,用以前的12M的初始化程序无法启动,这时需要修2440init.mcp工程,修改为16.9344M后问题解决。
说明:由于该文档系项目结案后的总结,可能有些修改的地方有遗漏,需要补充。
|