ImageVerifierCode 换一换
格式:DOCX , 页数:9 ,大小:44.16KB ,
资源ID:4416915      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4416915.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(S3C2440启动流程.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

S3C2440启动流程.docx

1、S3C2440启动流程我想请问下。主板上的DL1灯是在什么阶段点亮的?2010-6-13 下午 02:40:44 michael: 早上打电话给你,还怕打扰你休息了。原来你们也需要上班。呵呵2010-6-13 下午 02:40:58 Zhilong Wu: 应该在uboot 里.一开机的时候.2010-6-13 下午 02:42:00 michael: 我们现在有些板启动不了。发现UART口没有U-BOOT输出信息。DL1灯不亮2010-6-13 下午 02:44:03 Zhilong Wu: 每个flash 芯片,烧uboot的时候,有没有重新读出一遍,做检查. 确保uboot 是烧好的20

2、10-6-13 下午 02:44:05 michael: DL1灯是UBOOT来控制的还是什么模块控制的?2010-6-13 下午 02:44:51 Zhilong Wu: uboot , 通过cpu的 io2010-6-13 下午 02:47:44 michael: 烧写UBOOT的时候,应该是怎样的流程?我们现在是erase-blank_check-program-verify2010-6-13 下午 02:48:07 Zhilong Wu: 这样也可以2010-6-13 下午 02:49:42 michael: DL1有几个阶段:2010-6-13 下午 02:50:12 michael

3、: 不亮,常亮,慢闪,快速2010-6-13 下午 02:50:32 Zhilong Wu: 在uboot 就是一个状态.2010-6-13 下午 02:50:46 Zhilong Wu: 长亮.2010-6-13 下午 02:51:12 Zhilong Wu: 能闪的时候,表示uboot 没问题.起来wince 了2010-6-13 下午 02:51:21 michael: 噢。也就是说长亮的时候还在执行UBOOT阶段2010-6-13 下午 02:51:30 Zhilong Wu: 是2010-6-13 下午 02:51:41 michael: 慢闪就表示离开了UBOOT运行OS了?201

4、0-6-13 下午 02:51:50 Zhilong Wu: 是2010-6-13 下午 02:52:38 michael: 那慢闪和快速是指示什么的?我们发现有些机器,停留在慢闪阶段。2010-6-13 下午 02:53:04 Zhilong Wu: 慢闪,应该是 wince 正常运行了.2010-6-13 下午 02:53:25 Zhilong Wu: 这样的话,应该是显示有问题.2010-6-13 下午 02:53:46 Zhilong Wu: 串口应该可以看到 启动信息2010-6-13 下午 02:53:53 michael: 是的2010-6-13 下午 02:54:59 mich

5、ael: 那快速又是指示什么状态的?2010-6-13 下午 02:55:13 michael: 那快闪又是指示什么状态的?2010-6-13 下午 02:56:02 Zhilong Wu: 快闪是wince正在启动过程.2010-6-13 下午 02:56:47 Zhilong Wu: 还有就是,硬件中断很多的时候有. 比如鼠标不停移动2010-6-13 下午 02:57:28 michael: 这会有什么影响?2010-6-13 下午 02:58:17 Zhilong Wu: 没有什么影响2010-6-13 下午 02:58:47 Zhilong Wu: 其实你就区分一下这几个过程.201

6、0-6-13 下午 02:59:16 Zhilong Wu: 1. 灯不亮, cpu 基本是没有工作.2010-6-13 下午 03:00:06 Zhilong Wu: 2. 灯常亮,但是没有串口打印. cpu 工作了.2010-6-13 下午 03:00:53 Zhilong Wu: 但是还是除了很大问题. 有可能sdarm,2010-6-13 下午 03:01:31 Zhilong Wu: 3. 灯常亮,有串口打印. 到 go 30201000. 表示uboot 执行完了. 进入wince2010-6-13 下午 03:03:04 Zhilong Wu: 4. 灯快闪后停止变常亮了,但没有

7、显示, 启动wince的过程出了问题.2010-6-13 下午 03:03:57 Zhilong Wu: 5. 灯进入慢闪,而且很有规律. 就是wince 正常运行了. 应该是显示部分有问题. LCD ,逆变器灯2010-6-13 下午 03:05:00 Zhilong Wu: 大概就是这些. 这些也是大体的判断大概那个步骤出了问题2010-6-13 下午 03:05:04 michael: 好的。谢谢这么详细的解析。2010-6-13 下午 03:05:26 michael: 还有就是,在CPU初始化IO口时,IO口的状态不定,会不会导致UBOOT启动不了?因为有些机器连上LCD背光后,有可

8、能启动不了(有时可以启动,有时启动不了,很奇怪)。2010-6-13 下午 03:06:22 Zhilong Wu: 这样的话,你直接有那个主板上的电原口,供电.2010-6-13 下午 03:06:39 Zhilong Wu: 应该是 那个 电源版的问题.2010-6-13 下午 03:06:50 Zhilong Wu: 不要电源版试试2010-6-13 下午 03:06:54 michael: 明白。2010-6-13 下午 03:07:52 michael: 我先根据你的以上的指导去试试。2010-6-13 下午 03:08:01 Zhilong Wu: 好的.启动的处理流程MPLL20

9、10-05-26 21:01S3C2440有两个PLL(phase locked loop)一个是MPLL,一个是UPLL。MPLL用于CPU及其他外围器件,UPLL用于USB。用于产生FCLK, HCLK, PCLK三种频率,这三种频率分别有不同的用途:FCLK是CPU提供的时钟信号。HCLK是为AHB总线提供的时钟信号, Advanced High-performance Bus,主要用于高速外设,比如内存控制器,中断控制器,LCD控制器, DMA 等。从S3C2440的DataSheet里可以看到,S3C2440最大支持400MHz的主频,但是这并不意味着一定工作在400MHz下面,可以

10、通过设定MPLL, UPLL寄存器来设定CPU的工作频率。PCLK是为APB总线提供的时钟信号,Advanced Peripherals Bus,主要用于低速外设,比如看门狗,UART控制器, IIS, I2C, SDI/MMC, GPIO,RTC and SPI等。在这里,需要了解一下AMBA system architecture了。这个可以到官方网站下载相关资料。简单的说,AMBA是一种协议,这种协议已经称为片上组织通信的事实上的标准(the de facto standard for on-chip fabric communication)。下面给出英文描述: The AMBA pr

11、otocol is an open standard, on-chip bus specification that details a stategy for the interconnection and management of functional blocks that makes up a system-on-chip(SoC).It facilitates right-first-time development of embedded processors with one or more CPU/signal processors and multiple peripher

12、als. The AMBA protocol enhances a resuable design methodology by defining a common backbone for SoC modules. 需要知道的是,AMBA总线是ARM提出的一种解决方案,它并非唯一的规范,但是因为ARM的广泛使用,AMBA总线也就成为了事实上的规范了。现在AMBA总线最新为AMBA 3 specification版本,包括AMBA 3 AXI Interface、AMBA 3 AHB Interface、AMBA 3 APB Interface、AMBA 3 ATB Interface。而s3

13、c2410还只能支持AMBA 2 specification,这个版本包含AMBA 2 AHB Interface、AMBA 2 APB Interface。也就是在s3c2410的框图中看到的两种总线接口。需要注意的是,这两种总线所连的外设是有区别的。AHB总线连接高速外设,低速外设则通过APB总线互连。显然,对不同总线上的外设,应该使用不同的时钟信号,AHB总线对应Hclk,APB总线对应Pclk。那么事先就应该弄清楚,每条总线对应的外设有那些,这样在设置好时钟信号后,对应外设的初始化的值就要依此而确定了。 AHB bus上的外设有LCD controller(CONT代表controll

14、er,控制器)、USB Host CONT、ExtMaster、Nand CONT和nand flash boot loader、bus CONT、interrupt CONT、power management、memory CONT(sram/nor/sdram等)。 APB bus上的外设有UART、USB device、SDI/MMC、Watch Dog Timer、bus CONT、spi、iic、iis、gpio、rtc、adc、timer/pwm。s3c2410有两个pll(phase locked loop,锁相环,在高频中学过,可以实现倍频,s3c2410的高频就是由此电路产生

15、的)。其中一个是MPLL,M即为main,用来产生三种时钟信号:Fclk(给 CPU核供给时钟信号,我们所说的s3c2410的cpu主频为200MHz,就是指的这个时钟信号,相应的,1/Fclk即为cpu时钟周期)、 Hclk(为AHB bus peripherals供给时钟信号,AHB为advanced high-performance bus)、Pclk(为APB bus peripherals供给时钟信号,APB为advanced peripherals bus)。需要注意的是,这两种总线所连的外设是有区别的。AHB总线连接高速外设,低速外设则通 过APB总线互连。显然,对不同总线上的外

16、设,应该使用不同的时钟信号,AHB总线对应Hclk,APB总线对应Pclk。那么事先就应该弄清楚,每条总 线对应的外设有那些,这样在设置好时钟信号后,对应外设的初始化的值就要依此而确定了。 AHB bus上的外设有LCD controller(CONT代表controller,控制器)、USB Host CONT、ExtMaster、Nand CONT和nand flash boot loader、bus CONT、interrupt CONT、power management、memory CONT(sram/nor/sdram等)。 APB bus上的外设有UART、USB device、

17、SDI/MMC、Watch Dog Timer、bus CONT、spi、iic、iis、gpio、rtc、adc、timer/pwm。主时钟源来自外部晶振或者外部时钟。复位后,MPLL虽然默认启动,但是如果不向MPLLCON中写入value,那么外部晶振直接作为系统时钟。这个主要是基于PLL的特点。简单的描述就是,上电复位后,几个ms后晶振起振。当OSC时钟信号稳定之后,nRESET电平拉高(这是硬件自动检测过 程)。这个时候,PLL开始按照默认的PLL配置开始工作,但是特殊性就在于PLL在上电复位后开始是不稳定的,所以s3c2410设计为把Fin在上电 复位后直接作为Fclk,这是MPLL

18、是不起作用的。如果要想是MPLL起作用,那么方法就是写入MPLLCON寄存器值,然后等待LOCKTIME时间 后,新的Fclk开始工作。下面把这些步骤分来来描述,软件步骤部分结合程序进行。 1、上电几个ms后,晶振输出稳定。Fclk=晶振频率。nRESET恢复高电平后,cpu开始执行指令,这完全是硬件动作,不需要软件设置。 2、第一步软件工作: 设置P M S divider control,也就是设置MPLLCON寄存器。 关于PMS,可以看Figure 7-2.寄存器MPLLCON的设置呢,其实有一定的规则,并非你想要的每个Fclk频率都可以得到。官方推荐了一个表PLL VALUE SEL

19、ECTION TABLE,要按照这个进行。否则的话,就需要自己按照公式推算,但是mizi公司并不保证你的设置是合适的。所以,如果想要工作在200MHz,还是按 照vivi的推荐值即可。 step1: set P M S divider controlmov r1, #CLK_CTL_BASE ldr r2, =vMPLLCON_200str r2, r1, #oMPLLCON 其中,MDIV=0x5c,PDIV=0x04,SDIV=0x00.公式Mpll(Fclk)=(mFin)/(p(2s))【m=MDIV+8, p=PDIV+2,s=SDIV】 3、第二步软件工作: 设置CLKDIVN。

20、这一步是设置分频系数,即Fclk为cpu主频,Hclk由Fclk分频得到,Pclk由Hclk分频得到。假设Hclk是Fclk的二分频,Pclk是 Hclk的二分频,那么分频系数比就是Fclk:Hclk:Pclk=1:2:4.那么Hclk为100MHz,总线时钟周期为10ns。Pclk为 50MHz。 step2: change clock dividermov r1, #CLK_CTL_BASEmov r2, #vCLKDIVNstr r2, r1, #oCLKDIVN 4、第三步软件工作: CLKDIVN的补充设置 If HDIVN = 1, the CPU bus mode has to

21、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,0If HDIVN=1 and the CPU bus mode is the fast bus mode, the CPU will operate by the HCLK. This feature can be used to chang

22、e the CPU frequency as a half without affecting the HCLK and PCLK. 看了上段话,只需要翻译出来就可以了。 FCLK:HCLK=1:2.macro MMU_SetAsyncBusMode mrc p15, 0, r0, c1, c0, 0 orr r0, r0, #(R1_iA | R1_nF) mcr p15, 0, r0, c1, c0, 0.endm step3: set asynchronous bus mode MMU_SetAsyncBusMode 5、第四步软件工作:等待locktime时间,让新的Fclk生效 st

23、ep4: stay locktime mov r1, #CLK_CTL_BASE ldr r2, =vLOCKTIMEstr r2, r1, #oLOCKTIME禁止看门狗The Watchdog timer is used toresume the S3C2440A restart on mal-function after its power on; if controller restart is not desired, the Watchdogtimer should be disabled. disable watch dog timer mov r0, #WTCON mov r1

24、, #0x0 str r1, r0禁止中断在初始化的过程中,在中断模式irq下的堆栈初始化之前,为了防止未预制的中断发生,我们必须把中断掩码都掩上。 ldr r0,=INTMSK ldr r1,=0xffffffff ;all interrupt disable str r1,r0 ldr r0,=INTSUBMSK ldr r1,=0x3ff ;all sub interrupt disable str r1,r0初始化堆栈为了在各个CPU模式下在恰当的位置建立堆栈。我们需要初始化SP寄存器。 irq mode msr cpsr_c, #0xd2 ldr sp, =IRQ_STACK_BAS

25、E sys mode msr cpsr_c, #0xdf ldr sp, =SVC_STACK_BASE enable irq interrupts msr cpsr_c, #0x5f拷贝数据系统上电后将自动将NAND FLASH的前4K的内容,加载到地址从0x0000_0000开始的SDRAM中,然后开始执行这4K的代码。所以我们自己需要将烧写在NAND中整个Boot程序拷贝到SDRAM中然后跳转到以后的main处理。 mov r1, #S3C2440_NAND_BASE initial value tacls=3,rph0=7,rph1=7 ldr r2, =0xfff0 ldr r3,

26、r1, #oNFCONF orr r3, r3, r2 str r3, r1, #oNFCONF ldr r3, r1, #oNFCONT orr r3, r3, #1 enable nand controller str r3, r1, #oNFCONT ldr r0, _TEXT_BASE /* upper 128 KiB: relocated uboot */ sub r0, r0, #CFG_MALLOC_LEN /* malloc area */ sub r0, r0, #CFG_GBL_DATA_SIZE /* bdinfo */ sub sp, r0, #12 /* leave

27、3 words for abort-stack */ copy u-boot to RAM ldr r0, _TEXT_BASE mov r1, #0x0 mov r2, #CFG_UBOOT_SIZE bl nand_read_ll tst r0, #0x0 beq ok_nand_readok_nand_read: verify mov r0, #0 ldr r1, =0x33f00000 ldr r1, _TEXT_BASE mov r2, #0x400 4 bytes * 1024 = 4K-bytesgo_next: ldr r3, r0, #4 ldr r4, r1, #4 teq r3, r4 bne notmatch subs r2, r2, #4 beq done_nand_read bne go_nextnotmatch: LDR R0, = GPJDAT LDR R1, = 0x4 STR R1, R01: b 1bdone_nand_read: LDR R0, = GPJDAT LDR R1, = 0x2 STR R1, R0

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1