10.1掌握ARM芯片時(shí)鐘體系
第001節(jié)_S3C2440時(shí)鐘體系結(jié)構(gòu)
S3C2440是System On Chip(SOC),在芯片上不僅僅有CPU還有一堆外設(shè)。
至于有哪些外設(shè),可以查看參考手冊(cè)。在S3C2440參考手冊(cè)的第一章PRODUCT OVERVIEW里面有個(gè)BLOCK DIAGRAM圖:

可以把該圖分為上中下三塊,上面的是與CPU密切相關(guān)的,工作于FCLK;中間的一些對(duì)性能要求較高的設(shè)備,像LCD顯示、相機(jī)等,在AHB BUS,H即為High,高速之意,工作于HCLK;下面的是一些對(duì)性能要求不那么高的低速設(shè)備,在APB BUS,P即為Peripheral之意,工作在PCLK。
在參考手冊(cè)的特性里介紹了S3C2440的工作頻率,F(xiàn)clk最高400MHz,Hclk最高136MHz,Pclk最高68MHz。
如何得到以上的三種時(shí)鐘?
硬件電路上有個(gè)12M的晶振,作為時(shí)鐘源產(chǎn)生12MHz的頻率,經(jīng)過SOC的PLL(鎖相環(huán))倍頻產(chǎn)生Fclk、Hclk、Pclk。
再具體看看第7章的時(shí)鐘,在Clock Generator Block Diagram展示了時(shí)鐘的產(chǎn)生。

在該圖的左上角,晶振和一個(gè)外部時(shí)鐘接在一個(gè)選擇器上,這個(gè)選擇器通過OM[3:2]的值來決定選擇哪個(gè)時(shí)鐘源。然后生成的MPLL(Main PLL)和UPLL(USB PLL),MPLL直接提供給FCLK,通過HDIVN分頻給HCLK,通過PDIVN分頻給PCLK,再傳給下面的各個(gè)設(shè)備。

第002節(jié)_編程提高運(yùn)行時(shí)鐘
怎么編程控制MPLL、HDIV、PDIV,使FCLK=400MHz,HCLK=100MHz,PLCK=50MHz?
需要設(shè)置MPLLCON的FCLK=400MHz,設(shè)置CLKDIVN的HCLK=FCLK/4,PCLK=FCLK/8。?
首先看CLKDIVN寄存器:

想設(shè)置HCLK=FCLK/4需要將HDIVN[2:1]設(shè)置為10,同時(shí)將CAMDIVN[9]設(shè)置為0。
查看CAMDIVN[9]的初始值默認(rèn)就是0,因此只需要設(shè)置HDIVN[2:1]為10。

想設(shè)置PCLK=FCLK/8需要將PDIVN[0]設(shè)置為1,因此整個(gè)CLKDIVN寄存器設(shè)置如下:
2. 現(xiàn)在看如何使FCLK=400MHz.
在手冊(cè)的PLL VALUE SELECTION TABLE里列出了常見情況PLL的設(shè)置,我們輸入的是晶振的12MHz,輸出需要400MHz,因此根據(jù)表格需要設(shè)置 ? MDIV=92(0x5C),PDIV=1,SDIV=1;

在手冊(cè)介紹了MPLL的m、p、s與MDIV、PDIV、SDIV之間的關(guān)系:?

PLL控制寄存器如下:

因此需要配置(92<<12)|(1<<4)|(1<<0),?

3.此外,手冊(cè)還提到,需要SetAsyncBusMode。

完整的start.S:?


