670 likes | 825 Views
ARM 嵌入式系统结构与编程. 大连理工大学软件学院 邱铁 办公楼 409 Tel : 87571521 E_mail: qiutie@dlut.edu.cn 参考教材: 《ARM 嵌入式系统结构与编程 》 清华大学出版社 2009 年 3 月出版.
E N D
ARM嵌入式系统结构与编程 • 大连理工大学软件学院 邱铁 办公楼409 Tel:87571521 E_mail: qiutie@dlut.edu.cn 参考教材:《ARM嵌入式系统结构与编程》 清华大学出版社2009年3月出版
S3C44B0是基于ARM7TDMI架构的,S3C2410是基于ARM920T架构的。当前,这两款芯片在嵌入式开发领域广泛应用。本章主要介绍S3C44B0和S3C2410的硬件资源和整体架构,对其存储控制器、NAND Flash控制原理、时钟电源管理、通用I/O接口和中断控制器作了详细介绍,并通过一定的实例来加深读者对关键技术的理解。 第9章S3C44B0/S3C2410硬件结构与关键技术分析
内容提要 • 9.1 处理器简介 • 9.2 S3C44B0/ S3C2410存储控制器 • 9.3 S3C2410 NAND Flash控制器 • 9.4 S3C44B0/ S3C2410时钟电源管理 • 9.5 S3C44B0/ S3C2410通用 I/O端口 • 9.6 S3C44B0/S3C2410中断机制
9.4 S3C44B0/ S3C2410时钟电源管理 • S3C44B0的电源管理有五种模式:正常模式,低速模式,空闲模式,停止模式和LCD的SL空闲模式。 • S3C2410的电源管理模块有四种活动模式:正常模式,低速模式,休眠模式和断电模式。
9.4.1 S3C44B0/ S3C2410时钟管理 • 1.时钟结构: • S3C44B0的时钟发生器模块
S3C2410的时钟发生器模块 • 见教材《ARM嵌入式系统结构与编程》第241页9-20
2.时钟源的选择: • 控制模式引脚(OM3和OM2)与S3C44B0/S3C2410时钟源选择的结合关系如表9-18所示。OM[3:2]状态通过查阅OM3和OM2引脚在nRESET上升沿时的值内部锁存的。
3.PLL(锁相环) • 内置时钟发生器的S3C44B0 PLL/ S3C2410MPLL是一个以频率与相位输入信号的基准的同步输出信号的电路。
4.上电复位: • 晶振开始振荡数毫秒后,当S3C44B0OSC(S3C2410: XTlpll)时钟稳定后nRESET得到释放,PLL开始根据默认的PLL配置进行运作。 • PLL在上电复位后变得不稳定,所以Fin代替Fpllo(S3C2410: Mpll)在S/W(S3C2410: 软件)更新PLLCON的配置前直接反馈到Fout。 • 用户在复位后想使用PLLCON寄存器的默认值,也需要通过S/W(S3C2410: 软件)写入相同的值给PLLCON寄存器。
在正常模式下的操作,如果用户希望通过写PMS值的方法改变频率,PLL锁定时间会自动写入。在锁定时间里,时钟不支持内部模块。
9.4.2 S3C44B0/ S3C2410电源管理 • S3C44B0/ S3C2410电源管理模块通过控制系统时钟,实现减少系统的电源功耗。 • S3C44B0的方法与PLL,时钟控制逻辑,外设时钟控制以及唤醒信号相关。
9.4.3 S3C44B0/ S3C2410时钟与电源管理专用寄存器 • 锁时计数寄存器LOCKTIME 、PLL配置寄存器 、时钟控制寄存器(CLKCON) 、低速时钟控制寄存器(CLKSLOW) 详细描述信息见教材《ARM嵌入式系统结构与编程》第246-250页
9.5 S3C44B0/ S3C2410通用 I/O端口 • S3C44B0有71个多功能输入/输出引脚。有如下7个端口: • 两个9位输入/输出端口(端口E 和F) • 两个8位输入/输出端口(端口D 和G) • 一个16位输入/输出端口(端口C) • 一个10位输入/输出端口(端口A) • 一个11位输入/输出端口(端口B)
S3C2410有117个多功能输入/输出引脚。有如下8个端口:S3C2410有117个多功能输入/输出引脚。有如下8个端口: • 端口A(GPA):23位输出端口 • 端口B(GPB):11位输入/输出端口 • 端口C(GPC):16位输入/输出端口 • 端口D(GPD):16位输入/输出端口 • 端口E(GPE):16位输入/输出端口 • 端口F(GPF):8位输入/输出端口 • 端口G(GPG):16位输入/输出端口 • 端口H(GPH):11位输入/输出端口
9.5.1端口控制描述 • 1.端口配置寄存器 • 在S3C44B0和S3C2410中,大多数引脚是复合式的。所以,需要决定每个引脚所选择的功能。端口控制寄存器决定每个引脚的功能。 • 在S3C44B0中,如果PG0-PG7用于在掉电模式下的唤醒信号,这些端口需要配置成中断模式。 • 在S3C2410中,如果GPF0-GPF7和GPG0-GPG7用于断电模式下的唤醒信号,这些端口必须配置能中断模式。
2.端口数据寄存器 • 如果这些端口被配置成输出端口,数据可以从相应的位被写入。如果端口被配置成输入端口,数据可以从相应的位读出。
3.端口上拉寄存器 • 端口上拉寄存器控制每个端口组的上拉电阻使能/禁止。当相应的位置0,引脚的上拉电阻被使能。为1时,上拉电阻被禁止。
4.外部中断控制寄存器 • S3C44B0 的8个外部中断与S3C2410的24个外部中断通过多种信号方法被请求。
9.5.2 端口控制寄存器 • 1.S3C44B0端口寄存器 • (1)端口A寄存器(PCONA,PDATA)
专用上拉电阻控制寄存器(SPUCR) • 在停止/SL空闲模式,数据总线(D[31:0]或者D[15:0])在高阻态。但是,因为IO引脚的特性,数据总线上拉电阻被启用,以减少在停止/SL空闲模式上的电源消耗。D[31:16]引脚上拉电阻可以被PUPC寄存器控制。D[15:0]引脚上拉电阻可以通过SPUCR寄存器进行控制。 • 在停止模式,存储器控制信号可以被选为高阻态或原状态,以防止通过设置SPUCR寄存器的HZ@STOP域而导致存储器故障。
外部中断挂起寄存器(EXINTPND) • 外部中断请求(4,5,6,7)是‘或’关系,提供一个中断信号给中断控制器。 • ENIT4,ENIT5,ENIT6和ENIT7在中断控制器中共享相同的中断请求线(EINT4/5/6/7)。
2. S3C2410端口寄存器 • 端口B寄存器(GPBCON, GPBDAT, GPBUP)
S3C44B0和S3C2410其它端口寄存器详细信息见教材《ARM嵌入式系统结构与编程》第九章的9.5.2节的说明S3C44B0和S3C2410其它端口寄存器详细信息见教材《ARM嵌入式系统结构与编程》第九章的9.5.2节的说明
9.5.3 通用I/O接口设计实例 • LED与蜂鸣器接口电路 • S3C44B0的端口A的第0、1、2、3管脚分别与LED相连,端口E的第0管脚用来控制蜂鸣器。
控制编程实现 • 根据LED的硬件电路图,实现LED的循环闪烁:{LED1亮 延时,LED4灭}-> {LED2亮 延时,LED1灭}->{ LED3亮 延时,LED2灭}->{ LED4亮 延时,LED3灭}->{ 蜂鸣器开 延时,蜂鸣器关},如此无限循环,实现LED霓虹灯式的循环闪烁 。
9.6 S3C44B0/S3C2410中断机制 • 中断是CPU在程序运行过程中,被内部或外部的事件所打断,转去执行一段预先安排好的中断服务程序,中断服务程序执行完毕后,又返回原来的断点,继续执行原来的程序。 • S3C44B0/S3C2410内部集成了中断控制器,能够管理多个中断源。
9.6.1 S3C44B0中断控制器 • 1.中断源 • S3C44B0中断控制器可以管理30个中断源
S3C44B0向量中断与非向量中断 • 非向量中断方式 • 中断源产生中断后,从0x18 处取指执行 • 向量中断方式 • 中断源产生中断后,跳转到0x18 处,但由处理器识别中断后自动填充总线,并忽略0x18 处指令,执行总线上新的指令 0x18 中断服务入口 0x18 中断服务入口
启动 --- 中断响应 26个中断源 IRQs 中断 向量中断 INTCON V= 0 非向量中断 INTCON V= 1 地址映射中断控制器 读取I_ISPR寄存器 计算偏移(R8) EINT0/1/2 ……PowerDown EINT0/1/2 ……PowerDown 中断服务入口地址表
9.6.2 S3C2410中断控制器 • S3C2410提供56个中断源,如表9-50所示。当中断源提出中断服务请求后,中断控制器经过仲裁之后再请求ARM920T核的FIQ或IRQ中断。