配色: 字号:
FLASH的配置
2012-08-06 | 阅:  转:  |  分享 
  
在mtk的flashexcel配置表中有些专业名称,在如下的文档中有详细的描写,对配置新的flash都是有帮助的



一、对clock的基本认识

第七部分是“clock&powermanagement”,总结如下:

1s3c2410的clock&powermanagement模块包含三个部分:clockcontrol、usbcontrol、powercontrol。现在的关注点是clockcontrol。

2、s3c2410有两个pll(phaselockedloop,锁相环,在高频中学过,可以实现倍频,s3c2410的高频就是由此电路产生的)。其中一个是MPLL,M即为main,用来产生三种时钟信号:Fclk(给CPU核供给时钟信号,我们所说的s3c2410的cpu主频为200MHz,就是指的这个时钟信号,相应的,1/Fclk即为cpu时钟周期)、Hclk(为AHBbusperipherals供给时钟信号,AHB为advancedhigh-performancebus)、Pclk(为APBbusperipherals供给时钟信号,APB为advancedperipheralsbus)。在这里,需要了解一下AMBAsystemarchitecture了。这个可以到官方网站www.arm.com下载相关资料。简单的说,AMBA是一种协议,这种协议已经称为片上组织通信的事实上的标准(thedefactostandardforon-chipfabriccommunication)。下面给出英文描述:

TheAMBAprotocolisanopenstandard,on-chipbusspecificationthatdetailsastategyfortheinterconnectionandmanagementoffunctionalblocksthatmakesupasystem-on-chip(SoC).Itfacilitates"right-first-time"developmentofembeddedprocessorswithoneormoreCPU/signalprocessorsandmultipleperipherals.TheAMBAprotocolenhancesaresuabledesignmethodologybydefiningacommonbackboneforSoCmodules.

需要知道的是,AMBA总线是ARM提出的一种解决方案,它并非唯一的规范,但是因为ARM的广泛使用,AMBA总线也就成为了事实上的规范了。现在AMBA总线最新为AMBA3specification版本,包括AMBA3AXIInterface、AMBA3AHBInterface、AMBA3APBInterface、AMBA3ATBInterface。而s3c2410还只能支持AMBA2specification,这个版本包含AMBA2AHBInterface、AMBA2APBInterface。也就是在s3c2410的框图中看到的两种总线接口。需要注意的是,这两种总线所连的外设是有区别的。AHB总线连接高速外设,低速外设则通过APB总线互连。显然,对不同总线上的外设,应该使用不同的时钟信号,AHB总线对应Hclk,APB总线对应Pclk。那么事先就应该弄清楚,每条总线对应的外设有那些,这样在设置好时钟信号后,对应外设的初始化的值就要依此而确定了。

AHBbus上的外设有LCDcontroller(CONT代表controller,控制器)、USBHostCONT、ExtMaster、NandCONT和nandflashbootloader、busCONT、interruptCONT、powermanagement、memoryCONT(sram/nor/sdram等)。

APBbus上的外设有UART、USBdevice、SDI/MMC、WatchDogTimer、busCONT、spi、iic、iis、gpio、rtc、adc、timer/pwm。

3、主时钟源来自外部晶振或者外部时钟。复位后,MPLL虽然默认启动,但是如果不向MPLLCON中写入value,那么外部晶振直接作为系统时钟。EDUKIT-III的外部晶振有两个,一是用于系统时钟,为12MHz;一个用于RTC,为32.768KHz。以前实验没有向MPLLCON写入数值,所以系统时钟都是12MHz。从这里也可以发现一个问题,如果外部晶振开始没有焊上,那么系统是无法正常启动的。因为按照上述规则,复位后还没有写入MPLLCON,这时又没有可以使用的时钟源,所以不会启动。也就是硬件完成后,这个12MHz的晶振是一定要焊上的,才能进行后续的硬件测试工作。

二、clock设置的步骤

首先应该读懂下一段:

Power-OnReset(XTIpll)

Figure7-4showstheclockbehaviorduringthepower-onresetsequence.Thecrystaloscillatorbeginsoscillationwithinseveralmilliseconds.WhennRESETisreleasedafterthestabilizationofOSC(XTIpll)clock,thePLLstartstooperateaccordingtothedefaultPLLconfiguration.However,PLLiscommonlyknowntobeunstableafterpower-onreset,soFinisfeddirectlytoFCLKinsteadoftheMpll(PLLoutput)beforethesoftwarenewlyconfiguresthePLLCON.EveniftheuserdoesnotwanttochangethedefaultvalueofPLLCONregisterafterreset,theusershouldwritethesamevalueintoPLLCONregisterbysoftware.





ThePLLrestartsthelockupsequencetowardthenewfrequencyonlyafterthesoftwareconfiguresthePLLwithanewfrequency.FCLKcanbeconfiguredasPLLoutput(Mpll)immediatelyafterlocktime.





这个主要是基于PLL的特点。简单的描述就是,上电复位后,几个ms后晶振起振。当OSC时钟信号稳定之后,nRESET电平拉高(这是硬件自动检测过程)。这个时候,PLL开始按照默认的PLL配置开始工作,但是特殊性就在于PLL在上电复位后开始是不稳定的,所以s3c2410设计为把Fin在上电复位后直接作为Fclk,这是MPLL是不起作用的。如果要想是MPLL起作用,那么方法就是写入MPLLCON寄存器值,然后等待LOCKTIME时间后,新的Fclk开始工作。下面把这些步骤分来来描述,软件步骤部分结合程序进行。

1、上电几个ms后,晶振输出稳定。Fclk=晶振频率。nRESET恢复高电平后,cpu开始执行指令,这完全是硬件动作,不需要软件设置。

2、第一步软件工作:设置PMSdividercontrol,也就是设置MPLLCON寄存器。

关于PMS,可以看Figure7-2.寄存器MPLLCON的设置呢,其实有一定的规则,并非你想要的每个Fclk频率都可以得到。官方推荐了一个表PLLVALUESELECTIONTABLE,要按照这个进行。否则的话,就需要自己按照公式推算,但是mizi公司并不保证你的设置是合适的。所以,如果想要工作在200MHz,还是按照vivi的推荐值即可。

@step1:setPMSdividercontrol

movr1,#CLK_CTL_BASE

ldrr2,=vMPLLCON_200

strr2,[r1,#oMPLLCON]





其中,MDIV=0x5c,PDIV=0x04,SDIV=0x00.公式Mpll(Fclk)=(m×Fin)/(p×(2^s))【m=MDIV+8,p=PDIV+2,s=SDIV】

3、第二步软件工作:设置CLKDIVN。

这一步是设置分频系数,即Fclk为cpu主频,Hclk由Fclk分频得到,Pclk由Hclk分频得到。假设Hclk是Fclk的二分频,Pclk是Hclk的二分频,那么分频系数比就是Fclk:Hclk:Pclk=1:2:4.那么Hclk为100MHz,总线时钟周期为10ns。Pclk为50MHz。

@step2:changeclockdivider

movr1,#CLK_CTL_BASE

movr2,#vCLKDIVN

strr2,[r1,#oCLKDIVN]





4、第三步软件工作:CLKDIVN的补充设置



IfHDIVN=1,theCPUbusmodehastobechangedfromthefastbusmodetotheasynchronousbusmodeusingfollowinginstructions.

MMU_SetAsyncBusMode

mrcp15,0,r0,c1,c0,0

orrr0,r0,#R1_nF:OR:R1_iA

mcrp15,0,r0,c1,c0,0

IfHDIVN=1andtheCPUbusmodeisthefastbusmode,theCPUwilloperatebytheHCLK.ThisfeaturecanbeusedtochangetheCPUfrequencyasahalfwithoutaffectingtheHCLKandPCLK.

献花(0)
+1
(本文系小云蔡首藏)