S3C2440启动流程Word下载.docx
- 文档编号:17342289
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:9
- 大小:44.16KB
S3C2440启动流程Word下载.docx
《S3C2440启动流程Word下载.docx》由会员分享,可在线阅读,更多相关《S3C2440启动流程Word下载.docx(9页珍藏版)》请在冰豆网上搜索。
48:
07]ZhilongWu:
这样也可以
49:
42]michael:
DL1有几个阶段:
50:
12]michael:
不亮,常亮,慢闪,快速
32]ZhilongWu:
在uboot就是一个状态.
46]ZhilongWu:
长亮.
51:
12]ZhilongWu:
能闪的时候,表示uboot没问题.起来wince了
21]michael:
噢。
也就是说长亮的时候还在执行UBOOT阶段
30]ZhilongWu:
是
41]michael:
慢闪就表示离开了UBOOT运行OS了?
50]ZhilongWu:
52:
38]michael:
那慢闪和快速是指示什么的?
我们发现有些机器,停留在慢闪阶段。
53:
04]ZhilongWu:
慢闪,应该是wince正常运行了.
25]ZhilongWu:
这样的话,应该是显示有问题.
串口应该可以看到启动信息
53]michael:
是的
54:
59]michael:
那快速又是指示什么状态的?
55:
13]michael:
那快闪又是指示什么状态的?
56:
02]ZhilongWu:
快闪是wince正在启动过程.
47]ZhilongWu:
还有就是,硬件中断很多的时候有.比如鼠标不停移动
57:
28]michael:
这会有什么影响?
58:
17]ZhilongWu:
没有什么影响
其实你就区分一下这几个过程.
59:
16]ZhilongWu:
1.灯不亮,cpu基本是没有工作.
[2010-6-13下午03:
00:
06]ZhilongWu:
2.灯常亮,但是没有串口打印.cpu工作了.
53]ZhilongWu:
但是还是除了很大问题.有可能sdarm,
01:
31]ZhilongWu:
3.灯常亮,有串口打印.到go30201000.表示uboot执行完了.进入wince
03:
4.灯快闪后停止变常亮了,但没有显示,启动wince的过程出了问题.
57]ZhilongWu:
5.灯进入慢闪,而且很有规律.就是wince正常运行了.应该是显示部分有问题.LCD,逆变器灯
05:
00]ZhilongWu:
大概就是这些.这些也是大体的判断大概那个步骤出了问题
04]michael:
好的。
谢谢这么详细的解析。
26]michael:
还有就是,在CPU初始化IO口时,IO口的状态不定,会不会导致UBOOT启动不了?
因为有些机器连上LCD背光后,有可能启动不了(有时可以启动,有时启动不了,很奇怪)。
06:
22]ZhilongWu:
这样的话,你直接有那个主板上的电原口,供电.
39]ZhilongWu:
应该是那个电源版的问题.
不要电源版试试
54]michael:
明白。
07:
52]michael:
我先根据你的以上的指导去试试。
08:
01]ZhilongWu:
好的.
启动的处理流程
MPLL
2010-05-2621:
01
S3C2440有两个PLL(phaselockedloop)一个是MPLL,一个是UPLL。
MPLL用于CPU及其他外围器件,UPLL用于USB。
用于产生FCLK,HCLK,PCLK三种频率,这三种频率分别有不同的用途:
FCLK是CPU提供的时钟信号。
HCLK是为AHB总线提供的时钟信号,AdvancedHigh-performanceBus,主要用于高速外设,比如内存控制器,中断控制器,LCD控制器,DMA等。
从S3C2440的DataSheet里可以看到,S3C2440最大支持400MHz的主频,但是这并不意味着一定工作在400MHz下面,可以通过设定MPLL,UPLL寄存器来设定CPU的工作频率。
PCLK是为APB总线提供的时钟信号,AdvancedPeripheralsBus,主要用于低速外设,比如看门狗,UART控制器,IIS,I2C,SDI/MMC,GPIO,RTCandSPI等。
在这里,需要了解一下AMBAsystemarchitecture了。
这个可以到官方网站下载相关资料。
简单的说,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。
s3c2410有两个pll(phaselockedloop,锁相环,在高频中学过,可以实现倍频,s3c2410的高频就是由此电路产生的)。
其中一个是MPLL,M即为main,用来产生三种时钟信号:
Fclk(给CPU核供给时钟信号,我们所说的s3c2410的cpu主频为200MHz,就是指的这个时钟信号,相应的,1/Fclk即为cpu时钟周期)、Hclk(为AHBbusperipherals供给时钟信号,AHB为advancedhigh-performancebus)、Pclk(为APBbusperipherals供给时钟信号,APB为advancedperipheralsbus)。
AHB总线连接高速外设,低速外设则通过APB总线互连。
那么事先就应该弄清楚,每条总线对应的外设有那些,这样在设置好时钟信号后,对应外设的初始化的值就要依此而确定了。
主时钟源来自外部晶振或者外部时钟。
复位后,MPLL虽然默认启动,但是如果不向MPLLCON中写入value,那么外部晶振直接作为系统时钟。
这个主要是基于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
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.
看了上段话,只需要翻译出来就可以了。
@FCLK:
HCLK=1:
2
.macroMMU_SetAsyncBusMode
mrcp15,0,r0,c1,c0,0
orrr0,r0,#(R1_iA|R1_nF)
mcrp15,0,r0,c1,c0,0
.endm
@step3:
setasynchronousbusmode
MMU_SetAsyncBusMode
5、第四步软件工作:
等待locktime时间,让新的Fclk生效
@step4:
staylocktime
ldrr2,=vLOCKTIME
strr2,[r1,#oLOCKTIME]
禁止看门狗
TheWatchdogtimerisusedto
resumetheS3C2440Arestartonmal-functionafteritspoweron;
ifcontrollerrestartisnotdesired,theWatchdog
timershouldbedisabled.
@disablewatchdogtimer
movr0,#WTCON
movr1,#0x0
strr1,[r0]
禁止中断
在初始化的过程中,在中断模式irq下的堆栈初始化之前,为了防止未预制的中断发生,我们必须把中断掩码都掩上。
ldrr0,=INTMSK
ldrr1,=0xffffffff;
allinterruptdisable
strr1,[r0]
ldrr0,=INTSUBMSK
ldrr1,=0x3ff;
allsubinterruptdisable
初始化堆栈
为了在各个CPU模式下在恰当的位置建立堆栈。
我们需要初始化SP寄存器。
@irqmode
msrcpsr_c,#0xd2
ldrsp,=IRQ_STACK_BASE
@sysmode
msrcpsr_c,#0xdf
ldrsp,=SVC_STACK_BASE
@enableirqinterrupts
msrcpsr_c,#0x5f
拷贝数据
系统上电后将自动将NANDFLASH的前4K的内容,加载到地址从0x0000_0000开始的SDRAM中,然后开始执行这4K的代码。
所以我们自己需要将烧写在NAND中整个Boot程序拷贝到SDRAM中然后跳转到以后的main处理。
movr1,#S3C2440_NAND_BASE
@initialvaluetacls=3,rph0=7,rph1=7
ldrr2,=0xfff0
ldrr3,[r1,#oNFCONF]
orrr3,r3,r2
strr3,[r1,#oNFCONF]
ldrr3,[r1,#oNFCONT]
orrr3,r3,#1@enablenandcontroller
strr3,[r1,#oNFCONT]
ldrr0,_TEXT_BASE/*upper128KiB:
relocateduboot*/
subr0,r0,#CFG_MALLOC_LEN/*mallocarea*/
subr0,r0,#CFG_GBL_DATA_SIZE/*bdinfo*/
subsp,r0,#12/*leave3wordsforabort-stack*/
@copyu-boottoRAM
ldrr0,_TEXT_BASE
movr2,#CFG_UBOOT_SIZE
blnand_read_ll
tstr0,#0x0
beqok_nand_read
ok_nand_read:
@verify
movr0,#0
@ldrr1,=0x33f00000
ldrr1,_TEXT_BASE
movr2,#0x400@4bytes*1024=4K-bytes
go_next:
ldrr3,[r0],#4
ldrr4,[r1],#4
teqr3,r4
bnenotmatch
subsr2,r2,#4
beqdone_nand_read
bnego_next
notmatch:
LDRR0,=GPJDAT
LDRR1,=0x4
STRR1,[R0]
1:
b1b
done_nand_read:
LDRR1,=0x2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- S3C2440 启动 流程