#define S3C2440_CLKDIVN_PDIVN
(1<<0) #define S3C2440_CLKDIVN_HDIVN_MASK
(3<<1) #define S3C2440_CLKDIVN_HDIVN_1
(0<<1) #define S3C2440_CLKDIVN_HDIVN_2
(1<<1) #define S3C2440_CLKDIVN_HDIVN_4_8
(2<<1) #define S3C2440_CLKDIVN_HDIVN_3_6
(3<<1) #define S3C2440_CLKDIVN_UCLK
(1<<3) #define S3C2440_CAMDIVN_CAMCLK_MASK
(0xf<<0) #define S3C2440_CAMDIVN_CAMCLK_SEL
(1<<4) #define S3C2440_CAMDIVN_HCLK3_HALF
(1<<8) #define S3C2440_CAMDIVN_HCLK4_HALF
(1<<9) #define S3C2440_CAMDIVN_DVSEN
(1<<12) /* return HCLK frequency */
S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER();
/* support both of S3C2410 and S3C2440 */
if (gd->bd->bi_arch_number == MACH_TYPE_SMDK2410)
return((clk_power->CLKDIVN & 0x2) ? get_FCLK()/2 : get_FCLK());
clkdiv = clk_power->CLKDIVN;
camdiv = clk_power->CAMDIVN;
/* work out clock scalings */
switch (clkdiv & S3C2440_CLKDIVN_HDIVN_MASK) {
case S3C2440_CLKDIVN_HDIVN_1:
case S3C2440_CLKDIVN_HDIVN_2:
case S3C2440_CLKDIVN_HDIVN_4_8:
hdiv = (camdiv & S3C2440_CAMDIVN_HCLK4_HALF) ? 8 : 4;
case S3C2440_CLKDIVN_HDIVN_3_6:
hdiv = (camdiv & S3C2440_CAMDIVN_HCLK3_HALF) ? 6 : 3;
return get_FCLK() / hdiv;
/* return PCLK frequency */
S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER();
/* support both of S3C2410 and S3C2440 */
if (gd->bd->bi_arch_number == MACH_TYPE_SMDK2410)
return((clk_power->CLKDIVN & 0x1) ? get_HCLK()/2 : get_HCLK());
clkdiv = clk_power->CLKDIVN;
camdiv = clk_power->CAMDIVN;
/* work out clock scalings */
switch (clkdiv & S3C2440_CLKDIVN_HDIVN_MASK) {
case S3C2440_CLKDIVN_HDIVN_1:
case S3C2440_CLKDIVN_HDIVN_2:
case S3C2440_CLKDIVN_HDIVN_4_8:
hdiv = (camdiv & S3C2440_CAMDIVN_HCLK4_HALF) ? 8 : 4;
case S3C2440_CLKDIVN_HDIVN_3_6:
hdiv = (camdiv & S3C2440_CAMDIVN_HCLK3_HALF) ? 6 : 3;
return get_FCLK() / hdiv / ((clkdiv & S3C2440_CLKDIVN_PDIVN)? 2:1);
重新执行make TX2440_config
make all 生成u-boot.bin,由于还没有增加NAND Flash的支持,所以可烧入NOR Flash中运行 在make all时会出现错误:没有CAMDIVN 这个要在include/s3c24x0.h中定义, 在129行S3C24X0_CLOCK_POWER结构体中增加:S3C24X0_REG32
CAMDIVN;
/* for s3c2440*/ 首先在配置文件include/configs/TX2440.h的宏CONFIG_COMMANDS中增加CFG_CMD_NAND (大概在82行) 解决:在include/configs/TX2440.h的最后面增加3个宏: #define CFG_NAND_BASE
0
//无实际意义:基地址,在board_nand_init中重新定义 #define CFG_MAX_NAND_DEVICE
1
//NAND Flash设备数目为1 #define NAND_MAX_CHIPS
1
//每个NAND设备由1个NADN芯片组成 修改配置文件后再编译,只有一个错误了“board_nand_init”函数未定义 board_nand_init需要自己编写,在cpu/arm920t/s3c24x0下新建nand_flash.c 编写之前,需要针对S3C2440 NAND Flash定义一些数据结构和函数 在include/s3c24x0.h中增加S3C2440_NAND数据结构(168行) /* NAND FLASH (see S3C2440 manual chapter 6) */ } /*__attribute__((__packed__))*/ S3C2440_NAND; |