当前位置:首页 > 嵌入式微处理器介绍
1.3.3.3 自动启动代码步骤
完成复位。
如果自动导入模式使能,Nand flash存储器的前面4K字节被自动拷贝到Steppingstone 内部缓冲器中。
Steppingstone被映射到nGCS0对应的BANK0存储空间。
CPU在Steppingstone的4-KB内部缓冲器中开始执行引导代码。
注意:在自动导入模式下,不进行ECC检测。因此,Nand flash的前4KB应确保不能有位错误(一般Nandflash厂家都确保)。 1.3.4 S3C2440A的时钟和电源管理
时钟和电源控制模块包含三个部分:时钟控制,USB控制,和电源控制。
S3C2440A中的时钟控制逻辑可以产生各部分所需的时钟信号,包括:CPU的所需FCLK信号,AHB总线外设所需的HCLK信号,和APB总线外设所需的PCLK信号。
S3C2440A有两个锁相环(Phase Locked Loops ),一个用于FCLK,HCLK,PCLK.另一个则用于USB模块(频率为48MHz).
时钟控制逻辑可以在没有锁相环(PLL)的情况下降低时钟频率并且通过软件控制时钟也外设的通断,此举可以减少电源消耗。
对于电源控制逻辑,S3C2440A有多种电源控制方案以在一种作业保持最低电源消耗。S3C2440A中的电源管理模块可以激活四种模式:普通模式(NORMAL mode),低速模式(SLOW mode),空闲模式(IDLE mode),和睡眠模式(SLEEP mode).
普通模式(NORMAL mode):模块(指这里讲到的时钟和电源控制模块)为S3C2440A片内的CPU和外设提供时钟。在这种模式下,所有外设都打开时,电源消耗将会达到最大。这种模式允许用户通过软件控制外设的运转。例如:如果不需要使用定时器,用户可以断开时钟与定时器的连接以减少电源消耗(通过控制CLKCON寄存器)。
低速模式(SLOW mode):无锁相环模式。与普通模式不同,低速模式使用的是直接把外部时钟(XTIpll或EXTCLK)作为S3C2440A中的FCLK来使用。在这种模式下,电源消耗仅依赖于外部时钟的频率。锁相环(PLL)引起的电源消
耗将被排除。
空闲模式(IDLE mode):模块(指这里讲的时钟和电源控制模块)使断开时钟(FCLK)与CPU核的连接,却为所有其它外设提供时钟信号。空闲模式将因CPU核空闲而导致电源消耗减少。任何对CPU的中断请求都可以将其从空闲模式唤醒。
睡眠模式(SLEEP mode):模块(指这里所讲的时钟和电源控制模块)断开所有内部电源。因此,在这种模式下,基于CPU和除唤醒逻辑以外的内部逻辑的电源消耗都将不会发生。激活睡眠模式需要两个独立的电源。一个为唤醒模式供给能量。另一个则为包括CPU在内的其他内部逻辑供电,并且应该可以控制开启和关闭。在睡眠模式下,第二为CPU和内部逻辑供能的电源将被关闭。从睡眠模式的唤醒可以通过EINT[15:0]或RTC 闹钟中断获得。 1.4 S3C2440A的I/O口 1.4.1 I/O口概述
S3C2440A共有130个多功能I/O引脚,分为9个I/O口。 PORTA(GPA)25位的输出口
PORTB(GPB)11位的输入/输出口 PORTC(GPC)16位的输入/输出口 PORTD(GPD)16位的输入/输出口 PORTE(GPE)16位的输入/输出口 PORTF(GPF)8位的输入/输出口 PORTG(GPG)16位的输入/输出口 PORTH(GPH)9位的输入/输出口 PORTJ(GPJ)13位的输入/输出口 为了满足不同系统配置和设计要求,可以很容易地通过软件对这些I/O口进行配置。
每个引脚的功能必须在启动主程序之前进行定义。
如果一个引脚没有复用功能,那么它可以被配置为I/O口。 详细内容见S3C2440AMICROCONTROLLERUSER'S MANUAL
在S3C2440A中,大部分引脚都是复用的,所以需要对每一个引脚定义其功能.为了使用I/O口,首先也要定义引脚的功能.与配置I/O相关的寄存器包括:
端口控制寄存器(GPnCON) 端口数据寄存器(GPnDAT) 端口上拉寄存器(GPnUP) 杂项寄存器
外部中断控制寄存器(EXTINTN) 1.5 S3C2440A的中断管理 1.5.1 ARM中断原理
ARM系统有两类中断: IRQ中断普通中断
FIQ中断快速中断优先级高于IRQ中断。 两种中断都会使ARM进行异常模式。
异常类型 复位 未定义指令 义 软件中断(SWI) 预取中止 (取指令存储器中止) 数据中止 (数据访问存储器中止) IRQ(中断) FIQ(快速中断) 模式 管理 未定管理 中止 低向量地址 0x00000000 0x00000004 0x00000008 0x0000000C 高向量地址 0xFFFF0000 0xFFFF0004 0xFFFF0008 0xFFFF000C 中止 0x00000010 0xFFFF0010 IRQ FIQ 0x00000018 0x0000001C 0xFFFF0018 0xFFFF001C ARM系统中断处理过程: 中断的进入
(1)将下一条指令的地址存入相应连接寄存器LR,以便程序在处理异常返回时能从正确的位置重新开始执行。
(2)将CPSR复制到相应的SPSR中。
(3)根据异常类型,强制设置CPSR的运行模式位。
(4)强制PC从相关的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序。
*在中断处理程序中,可以设置中断禁止位来阻止其他无法处理的异常嵌套。 从中断返回
(1)如果进入时设置了中断禁止位,那么清楚该标志。
(2)将连接寄存器LR的值减去相应的偏移量后送到PC中。 (3)将SPSR复制到CPSR中。 1.5.2 S3C2440A的中断系统
S3C2440A的中断控制器可以接收60路中断源的输入。这些中断源由如DMA控制器、UART、IIC或其他内部外围设备提供的。它支持两种中断模式:FIQ和IRQ。每个中断源都可以决定中断请求时使用哪种模式。
S3C2440A的中断控制器可以接收60路中断源的输入。这些中断源由如DMA控制器、UART、IIC或其他内部外围设备提供的。它支持两种中断模式:FIQ和IRQ。每个中断源都可以决定中断请求时使用哪种模式。
1.5.2.1 中断挂起寄存器
中断源挂起寄存器(SRCPND):
有效位32位,可读写。也就是中断请求寄存器,用于指示某个中断请求是否发生。。注意的是,SRCPND由中断源自动设置。在中断服务例程中需要清除相应位(设为0)。否则系统将认为是该中断源又产生了一次请求。
中断挂起寄存器(INTPND):
有效位32位,可读写。用于记录最后向ARM920T内核发出的中断请求。类似于以前学过的中断服务寄存器。和SRCPND一样,在中断服务例程中也要清除该位
当多个中断源请求中断服务时,SRCPND中的相应位均会置1,经过优先级仲裁后INTPND寄存器中只有一位置1。这两个寄存器的内容在中断响应后应马上被清除(需编程写入数据清除)。 1.5.2.2 中断屏蔽寄存器(INTMSK)
寄存器有效位为32位,可读写。用于禁上某个中断的响应。为1有效。它的作用是决定该位相应的中断请求是否被处理。若某位被设置为1,则该位相对应的中断产生后将被忽略(CPU不处理该中断请求),设置为0则CPU对其进行处理。该寄存器初始化值为0xFFFFFFFF,既默认情况下所有的中断都是被屏蔽的。
中断模式寄存器(INTMOD)
用于设定某个中断的响应模式,为1为FIQ,为0为IRQ。
注意:控制器中仅仅一个中断源可以以FIQ方式处理。因此,INTMOD只能有一位设为1。
1.5.2.3 中断优先级控制寄存器(PRIORITY)
寄存器有32位,有效位[20:0],可读写,此寄存器的作用是如果有几个中断源同时触发,假如这几个中断源都没被屏蔽,并且都是IRQ模式,因此就要判定哪个中断源的优先级最高,使其在INTPND寄存器中对应位置1,CPU转
共分享92篇相关文档