Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2298639
  • 博文数量: 395
  • 博客积分: 10994
  • 博客等级: 上将
  • 技术积分: 5586
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-17 19:49
文章存档

2014年(1)

2013年(10)

2012年(74)

2011年(303)

2010年(7)

分类: 嵌入式

2010-12-25 18:50:34

最近基本上完成了u-boot在我的2440开发板上移植,虽然网上资料很多,还是费了不少的劲。一是因为自己是初次移植,再就是网上的很多资料都是针对s3c2410的。虽说它们很相近,但相近不等于相同,这个不相同,如果没有处理好,失败也是注定的。

 

   将近一个月的u-boot移植跌跌撞撞地完成之后,就有了想对24102440做一个比较的想法,我很想做一份真正的全方位对比,但是时间有限,对它们的操作实践也有限,只能把自己已经遇到的,尽量写出来,希望对自己的以后学习工作有帮住。

 

   为了尽可能地全面,我从网上参考了一些别人写的对比,随着自己以后学习的深入和全面,如果遇到了新的不同点,再补充上来。

 

*****************************************************************************************************

  1. 最高主频不相同:2410200M2440400M

      我们在用这两款处理器时,一般使用的主频是不相同的,而这个不相同,不仅影响是的运行的速度,最主要的是会影响一些外设(如串口)的时钟,这些外设的时钟如果不正确,就会出现问题。

      又比如内存总线设置,2410 2440 主频不一样,总线定时所要求的时钟数也会不一样。

----------------------------------------------------------------------------

 

  2. MPLLUPLL的计算公式不相同:2440MPLL2410的两倍;2440MPLL计算与UPLL的计算不相同。

       2410输出时钟频率 Mpll/Upll 相对于参考输入时钟频率 Fin 如以下公式所示:

PLL Control Register (MPLLCON and UPLLCON)

  (M/U) pll = (m * Fin) / (p * 2s)

   m = (MDIV + 8), p = (PDIV + 2), s = SDIV

      2440输出时钟频率 Mpll 相对于参考输入时钟频率 Fin 如以下公式所示:

MPLL Control Register

   Mpll = (2 * m * Fin) / (p * 2^S)

   m = (MDIV + 8), p = (PDIV + 2), s = SDIV

      2440输出时钟频率 Upll 相对于参考输入时钟频率 Fin 如以下公式所示:

UPLL Control Register

   Upll = (m * Fin) / (p * 2^S)

   m = (MDIV + 8), p = (PDIV + 2), s = SDIV

----------------------------------------------------------------------------

 

    3. 时钟寄存器设置:2410 需设置 clkdivnclkconupllconmpllcon 4 个寄存器,2440则多一个寄存器 camdivn 需要设置。 2410 设置完 mpllcon 后可以立即设置 upllcon,  2440则需要在两者中间插入 7 nop 指令。

        时钟分频寄存器也有很大的区别:2440CLKDIVN2410多了一个字段DIVN_UPLL;而且字段DIVN2410多了几种选择,并且和 CAMDIVN有关,如下所示:

2440 DIVN_UPLL

UCLK select register(UCLK must be 48MHz for USB) 0

0: UCLK = UPLL clock

1: UCLK = UPLL clock / 2

Set to 0, when UPLL clock is set as 48MHz

Set to 1. when UPLL clock is set as 96MHz.

2440 HDIVN

00 : HCLK = FCLK/1.                     00

01 : HCLK = FCLK/2.

10 : HCLK = FCLK/4 when CAMDIVN[9] = 0.

       HCLK= FCLK/8 when CAMDIVN[9] = 1.

11 : HCLK = FCLK/3 when CAMDIVN[8] = 0.

       HCLK = FCLK/6 when CAMDIVN[8] = 1.

----------------------------------------------------------------------------

 

    4. CPU需从快速总线模式转变为异步模式的条件不同,如下所示:

2410

     If HDIVN=1, the CPU bus mode has to be changed from the fast bus mode to the asynchronous bus

    mode using following instructions.

       MMU_SetAsyncBusMode

           mrc p15,0,r0,c1,c0,0

           orr r0,r0,#R1_nF:OR:R1_iA

           mcr p15,0,r0,c1,c0,0

2440

      If HDIVN is not 0, the CPU bus mode has to be changed from the fast bus mode to the asynchronous

bus mode using following instructions(S3C2440 does not support synchronous bus mode).

MMU_SetAsyncBusMode

mrc p15,0,r0,c1,c0,0

orr r0,r0,#R1_nF:OR:R1_iA

mcr p15,0,r0,c1,c0,0

----------------------------------------------------------------------------

 

    5.   2410 2440 nand 驱动也非常相似,主要区别在于:

       12410 仅支持小块 nandflash,2440 则同时支持大块 nandflash

       2)为支持大块 nandflash,2440 增加了许多寄存器。

       32440 增加了一个控制寄存器 NFCONT, 2410 config 寄存器 NFCONF 中的部分功能被转移到 NFCONT 中。

   

         两者代码的主要不同,体现在 nand.h 文件中,差异点:

        1struct nand_reg 结构的定义不同。

        2 两者 NFCONF 寄存器中对 talcs 的定义不同, nand.h 中:

                  #define cn_talcs          0 //1clk(10ns)------for2410

                  #define cn_talcs          1 //1clk(10ns)------for2440

         3 2410 ,片选控制在 NFCONF 寄存器的 bit.11 ,2440 则在 NFCONT bit.1 ,使下列两个宏的定义不同。

   2410 :

        #define ce_active()     (pg_nand_reg->NFCONF &= ~(1<<11))

        #define ce_inactive()  (pg_nand_reg->NFCONF |= (1<<11))

    2440 :

        #define ce_active()     (pg_nand_reg->NFCONT &= ~(1<<1))

        #define ce_inactive()  (pg_nand_reg->NFCONT |= (1<<1))

---------------------------------------------------------------------------------------

 

    6. 24402410新增加AC'97编解码器接口。

 

    7. 24402410新增加Camera interface,摄像头的接口。

 

    8. 24402410具有更多可用的I/O口,主要增加了DPJ端口组,其13个。

 

    9. 2410 2440 的串口结构几乎一样,不同点在于:

      1)、2410 的串口 fifo 16 字节, 2440 64 字节。

      2)、由于 fifo 深度不同,导致 UFSTAT 寄存器中个位的定义不一致。

        这种相似性使得两者驱动程序的差异也非常小,读者可以直接比较两者的 uart.c 文件。

 

    10. 支持更多分辨率液晶屏;无需外围电路的触摸屏接口。

 

    11. 引脚:24402410不是pin-to-pin compatible,引脚功能相差很大。

 

    12. 封装:2410 272-FBGA2440 289-FBGA

 

    13. 具有工业级温度范围。

 

    14. 更低的内核电压,支持低电压存储器。

 

     (肯定还有很多的区别,以后随着实践的增加,再继续完善添加)

 

本文来自:我爱研发网(52RD.com) - R&D大本营

详细出处:
阅读(2468) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~