s3c2410與s3c2440的全方位對(duì)比
1. 最高主頻不相同:2410為200M,2440為400M。
我們?cè)谟眠@兩款處理器時(shí),一般使用的主頻是不相同的,而這個(gè)不相同,不僅影響是的運(yùn)行的速度,最主要的是會(huì)影響一些外設(shè)(如串口)的時(shí)鐘,這些外設(shè)的時(shí)鐘如果不正確,就會(huì)出現(xiàn)問(wèn)題。
又比如內(nèi)存總線設(shè)置,2410 和 2440 主頻不一樣,總線定時(shí)所要求的時(shí)鐘數(shù)也會(huì)不一樣。
----------------------------------------------------------------------------
2. MPLL和UPLL的計(jì)算公式不相同:2440的MPLL是2410的兩倍;2440的MPLL計(jì)算與UPLL的計(jì)算不相同。
2410輸出時(shí)鐘頻率 Mpll/Upll 相對(duì)于參考輸入時(shí)鐘頻率 Fin 如以下公式所示:
PLL Control Register (MPLLCON and UPLLCON)
(M/U) pll = (m * Fin) / (p * 2s)
m = (MDIV + 8), p = (PDIV + 2), s = SDIV
2440輸出時(shí)鐘頻率 Mpll 相對(duì)于參考輸入時(shí)鐘頻率 Fin 如以下公式所示:
MPLL Control Register
Mpll = (2 * m * Fin) / (p * 2^S)
m = (MDIV + 8), p = (PDIV + 2), s = SDIV
2440輸出時(shí)鐘頻率 Upll 相對(duì)于參考輸入時(shí)鐘頻率 Fin 如以下公式所示:
UPLL Control Register
Upll = (m * Fin) / (p * 2^S)
m = (MDIV + 8), p = (PDIV + 2), s = SDIV
----------------------------------------------------------------------------
3. 時(shí)鐘寄存器設(shè)置:2410 需設(shè)置 clkdivn、clkcon、upllcon、mpllcon 共 4 個(gè)寄存器,2440則多一個(gè)寄存器 camdivn 需要設(shè)置。 2410 設(shè)置完 mpllcon 后可以立即設(shè)置 upllcon, 2440則需要在兩者中間插入 7 條 nop 指令。
時(shí)鐘分頻寄存器也有很大的區(qū)別:2440的CLKDIVN比2410多了一個(gè)字段DIVN_UPLL;而且字段DIVN比2410多了幾種選擇,并且和 CAMDIVN有關(guān),如下所示:
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需從快速總線模式轉(zhuǎn)變?yōu)楫惒侥J降臈l件不同,如下所示:
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 驅(qū)動(dòng)也非常相似,主要區(qū)別在于:
(1)2410 僅支持小塊 nandflash,2440 則同時(shí)支持大塊 nandflash。
(2)為支持大塊 nandflash,2440 增加了許多寄存器。
(3)2440 增加了一個(gè)控制寄存器 NFCONT,原 2410 中 config 寄存器 NFCONF 中的部分功能被轉(zhuǎn)移到 NFCONT 中。
兩者代碼的主要不同,體現(xiàn)在 nand.h 文件中,差異點(diǎn):
(1)struct nand_reg 結(jié)構(gòu)的定義不同。
(2) 兩者 NFCONF 寄存器中對(duì) 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 中,使下列兩個(gè)宏的定義不同。
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. 2440比2410新增加AC'97編解碼器接口。
7. 2440比2410新增加Camera interface,攝像頭的接口。
8. 2440比2410具有更多可用的I/O口,主要增加了DPJ端口組,其13個(gè)。
9. 2410 和 2440 的串口結(jié)構(gòu)幾乎一樣,不同點(diǎn)在于:
(1)、2410 的串口 fifo 是 16 字節(jié),而 2440 是 64 字節(jié)。
(2)、由于 fifo 深度不同,導(dǎo)致 UFSTAT 寄存器中個(gè)位的定義不一致。
這種相似性使得兩者驅(qū)動(dòng)程序的差異也非常小,讀者可以直接比較兩者的 uart.c 文件。
10. 支持更多分辨率液晶屏;無(wú)需外圍電路的觸摸屏接口。
11. 引腳:2440和2410不是pin-to-pin compatible,引腳功能相差很大。
12. 封裝:2410為 272-FBGA;2440 為289-FBGA。
13. 具有工業(yè)級(jí)溫度范圍。
14. 更低的內(nèi)核電壓,支持低電壓存儲(chǔ)器。
(肯定還有很多的區(qū)別,以后隨著實(shí)踐的增加,再繼續(xù)完善添加)