1.37k likes | 1.54k Views
嵌入式系统结构. 大连理工大学软件学院嵌入式教研室 邱铁 E_mail: qiutie@sohu.com Tel: 87571521 参考教材: 1. 嵌入式系统开发与应用,田泽.北京航空航天大学出版社 2. 嵌入式系系结构与编程,杜春蕾 . 清华大学出版社. 本讲介绍嵌入式系统开发开发平台的硬件知识,主要包括基于 ARM7 体系的 S3C44B0 处理器和基于 ARM9 体系的 S3C2410 处理器芯片功能介绍以及基于这两款芯的硬件开发台的搭建。. 第七讲 嵌入式硬件开发平台实践. 内容主题.
E N D
嵌入式系统结构 • 大连理工大学软件学院嵌入式教研室 • 邱铁 E_mail: qiutie@sohu.com • Tel: 87571521 • 参考教材: • 1.嵌入式系统开发与应用,田泽.北京航空航天大学出版社 • 2.嵌入式系系结构与编程,杜春蕾. 清华大学出版社
本讲介绍嵌入式系统开发开发平台的硬件知识,主要包括基于ARM7体系的S3C44B0处理器和基于ARM9体系的S3C2410处理器芯片功能介绍以及基于这两款芯的硬件开发台的搭建。 第七讲 嵌入式硬件开发平台实践
内容主题 • 7.1 S3C44B0X处理器介绍 • 7.2 Samsung S3C44B0X特点 • 7.3 S3C2410X结构介绍 • 7.4 中断控制器功能及应用开发 • 7.5 时钟电源管理器功能及应用开发 • 7.6 PWM定时器功能及应用开发 • 7.7 看门狗定时器功能及应用开发 • 7.8 LCD控制器功能及应用开发 • 7.9 A/D转换器功能及应用开发 • 7.10 RTC(实时时钟)功能及应用开发
7.1 S3C44B0X处理器介绍 Samsung S3C44B0X微处理器片内集成ARM7TDMI核,采用0.25μm CMOS工艺制造,并在ARM7TDMI核基本功能的基础集成了丰富的外围功能模块,便于低成本设计嵌入式应用系统。片上集成的主要功能如下:片上在ARM7TDMI基础上增加8KB的Cache。
S3C44B0X集成功能简介 • 外部扩充存储器控制器(FP/EDO/SDRAM控制,片选逻辑); • LCD控制器(最大支持256色的DSTN),并带有1个LCD专用DMA通道; • 2个通用DMA通道/2个带外部请求管脚的DMA通道; • 2个带有握手协议的UART,1个SIO; • 1个多主的IIC总线控制器; • 1个IIS总线控制器; • 5个PWM定时器及1个内部定时器; • 看门狗定时器; • 71个通用可编程I/O口,8个外部中断源; • 功耗控制模式:正常、低、休眠和停止; • 8路10位ADC; • 具有日历功能的RTC(实时时钟); • 片上集成PLL时钟发生器。
S3C44B0X功能结构框图 • S3C44B0X的体系结构的功能框图如图6-1所示。 • 图6-1 S3C44B0微处理器体系结构框图
7.2 Samsung S3C44B0X特点 一、S3C44B0X体系结构 S3C44B0X是基于ARM7TDMI的体系结构,ARM7TDMI是ARM公司最早为业界普遍认可且赢得了最为广泛的应用的处理器核。
二、系统(存储)管理 • 支持大、小端模式(通过外部引脚来选择); • 地址空间:包含8个地址空间,每个地址空间的大小为32M字节,总共有256M字节的地址空间; • 所有地址空间都可以通过编程设置为8位、16位或32位宽数据对准访问; • 8个地址空间中,6个地址空间可以用于ROM、SRAM等存储器,2个用于ROM、SRAM、FP/EDO/SDRAM等存储器; • 7个起始地址固定及大小可编程的地址空间; • 1个起始地址及大小可变的地址空间; • 所有存储器空间的访问周期都可以通过编程配置; • 提供外部扩展总线的等待周期; • 在低功耗的情况下支持DRAM/SDARM自动刷新
三、Cache和片内SRAM • 4路组相联统一的8KB指令/数据Cache; • 未作为Cache使用的0/4/8 Kbytes Cache存储空间可作为片内SRAM使用; • Cache伪LRU(最近最少使用)的替换算法; • 通过在主内存和缓冲区内容之间保持一致的方式写内存; • 具有四级深度的写缓冲; • 当缓冲区出错时,请求数据填充。
四、时钟和功耗管理 • 低功耗; • 片上PLL使得MCU的工作时钟最高为66MHz; • 时钟可以通过软件选择性地反馈回每个功能块; • 功耗管理模式为: 正常模式:正常运行模式; 低速模式:不带PLL的低频时钟; 休眠模式:只使CPU的时钟停止; 停止模式:所有时钟都停止。 • EINT[7:0]或RTC警告中断可使功耗管理从停止模式中唤醒。
五、中断控制器 • 30个中断源(1个看门狗定时器中断,6个定时器中断,6个UART中断,8个外部中断,4个DMA中断,2个RTC中断,1个ADC中断,1个IIC中断,1个SIO中断); • 矢量IRQ中断模式减少中断响应周期; • 外部中断源的电平/边沿模式; • 可编程的电平/边沿极性; • 支持紧急中断请求的FIQ(快速中断请求)。
六、带PWM的定时器(脉宽可调制) • 5个16位带PWM的定时器,1个16位基于DMA或基于中断的内部定时器; • 可编程的工作周期、频率和极性; • 死区(Dead-zone)产生器; • 支持外部时钟源。
七、实时时钟RTC • 全时钟特点:毫秒、秒、分、时、天、星期、月、年; • 运行于32.768KHz; • CPU唤醒的警告中断; • 时间滴答(Time tick)中断。 • 八、通用输入/输出端口 • 8个外部中断端口; • 71个(多功能)复用输入/输出口。
九、UART • 2个基于DMA或基于中断的UART; • 支持5位、6位、7位、8位串行数据传送/接收; • 在传送/接收时支持硬件握手; • 波特率可编程; • 支持IrDA 1.0(115.2kbps); • 用于回环测试模式; • 每个通道有2个用于接收和发送的内部32字节FIFO。
十、DMA控制器 • 2路通用的无CPU干涉的DMA控制器; • 2路桥式DMA(外设DMA)控制器; • 支持I/O到内存、内存到IO、IO到IO的桥式DMA传送,有6种DMA请求方式:软件、4个内部功能块(UART、SIO、实时器、IIS)和外部管脚; • DMA之间优先级次序可编程; • 突发传送模式提高了FPDRAM、EDODRAM和SDRAM的传送率; • 支持内存到外围设备的fly-by模式和外围设备到内存的传送模式。
十一、A/D转换 • 8通道多路ADC; • 最大转换速率100KSPS/10位。 • 十二、LCD控制器 • 支持彩色/单色/灰度LCD; • 支持单扫描和双扫描显示; • 支持虚拟显示功能; • 系统内存可作为显示内存; • 专用DMA用于从系统内存中提取图像数据; • 可编程屏幕大小; • 灰度:16级; • 彩色模式:256色。
十三、看门狗定时器 • 16位看门狗定时器; • 定时中断请求或系统超时复位。 • 十四、IIC总线接口 • 1个基于中断操作的多主的IIC总线; • 8位双向串行数据传送器能够工作于100Kbps的标准模式和400Kbps的快速模式。 • 十五、IIS总线接口 • 1路基于DMA操作的音频IIS总线接口; • 每通道8/16位串行数据传送; • 支持MSB可调整的数据格式。
十六、SIO(同步串行I/0) • 1路基于DMA或基于中断的SIO; • 波特率可编程; • 支持8位SIO的串行数据传送/接收操作。 • 十七、操作电压范围 • 内核:2.5V; I/O:3.0V~3.6V。 • 十八、运行频率 • 最高达66MHz。 • 十九、封装 • 160LQFP/160FBGA。
S3C2410X片上资源 S3C2410X概述 • 16KB 指令Cache,16KB数据Cache; • 存储器控制器,支持NAND FLASH启动,4BK用于启动的内部缓 存区; • 55个中断源,24个外部中断口; • 4通道16bit带PWM的定时器及1通道16bit内部定时器; • 3通道UART、1个多主I2C总线控制器、1个IIS总线控制器,一 个SPI接口; • LCD控制器,支持黑白、STN、TFT显示器;触摸屏接口支持; • 支持SD卡; • 两个USB主、一个USB从; • 4个DMA控制器, 8通道10位ADC; • 实时时钟等。
S3C2410X特性 S3C2410X概述 • 内核:1.8V I/O : 3.3 V • 最高为203MHz • 272脚的FBGA封装
S3C2410X的引脚分布图 S3C2410X概述
7.4 中断控制器功能及应用开发 • S3C44B0X的中断控制器可以接收来自30个中断源的中断请求。这些中断源来自DMA、UART、SIO等这样的芯片内部外围或接口芯片的外部引脚。在这些中断源中,有4个外部中断(EINT4/5/6/7)是逻辑或的关系,它们共用一条中断请求线。UART0和UART1的错误中断也是逻辑或的关系。
中断控制器的任务是在片内外围和外部中断源组成的多重中断发生时,经过优先级判断选择其中一个中断通过FIQ或IRQ向ARM7TDMI内核发出FIQ或IRQ中断请求。中断控制器的任务是在片内外围和外部中断源组成的多重中断发生时,经过优先级判断选择其中一个中断通过FIQ或IRQ向ARM7TDMI内核发出FIQ或IRQ中断请求。 • 实际上最初ARM7TDMI内核只有FIQ(快速中断请求)和IRQ(通用中断请求)两种中断,其它中断都是各个芯片厂家在设计芯片时定义的,这些中断根据中断的优先级高低来进行处理。一般的中断模式在进入所需的服务程序前需要很长的中断反应时间,为了解决这个问题,S3C44B0X提供了一种新的中断模式叫做矢量中断模式,它具有CISC结构微控制器的特征,能够减少中断反应时间。
中断控制器的操作 程序状态寄存器的F位和I位 • 如果CPSR程序状态寄存器的F位被设置为1,那么CPU将不接受接收来自中断控制器的FIQ(快速中断请求);如果CPSR程序状态寄存器的I位被设置为1,那么CPU将不接受接收来自中断控制器的IRQ(中断请求)。因此,为了使能FIQ和IRQ,必须先将CPSR程序状态寄存器的F位和I位清零,并且中断屏蔽寄存器INTMSK中相应的位也要清零。 中断模式(INTMOD) • ARM7TDMI提供了2种中断模式:FIQ模式和IRQ模式。所有的中断源在中断请求时都要确定使用哪一种中断模式。
中断挂起寄存器(INTPND) • 用于指示对应的中断是否被激活。当中断挂起位被设置时,只要相应的标志I或标志F被清零,相应的中断服务程序都将会被执行。中断挂起寄存器是只读寄存器,所以在中断服务程序中必须加入对I_ISPC和F_ISPC写1的操作来清除挂起条件。 • 中断屏蔽寄存器(INTMSK) • 当INTMSK寄存器的屏蔽位为1时,对应的中断被禁止;当INTMSK寄存器的屏蔽位为0时,则对应的中断正常执行。
矢量中断模式(仅针对IRQ) • S3C44B0X支持矢量中断模式,可以减少中断的反应时间。通常情况下ARM7TDMI内核收到来自中断控制器的IRQ中断请求,ARM7TDMI会在0x00000018地址处执行一条指令。但是在矢量中断模式下,当ARM7TDMI从0x00000018地址处取指令的时候,中断控制器会在数据总线上加载分支指令,这些分支指令使程序计数器能够对应到每一个中断源的向量地址。这些跳转到每一个中断源向量地址的分支指令可以由中断控制器产生。在各个中断源对应的中断向量地址中,存放着跳转到相应中断服务程序的程序代码。
中断处理机制 • 非向量中断方式 • 中断源产生中断后,从0x18 处取指执行 • 向量中断方式 • 中断源产生中断后,跳转到0x18 处,但由处理器识别中断后自动填充总线,并忽略0x18 处指令,执行总线上新的指令 0x18 中断服务入口 0x18 中断服务入口
启动 --- 中断响应 26个中断源 IRQs 中断 向量中断 INTCON V= 0 非向量中断 INTCON V= 1 地址映射中断控制器 读取I_ISPR寄存器 计算偏移(R8) EINT0/1/2 ……PowerDown EINT0/1/2 ……PowerDown 中断服务入口地址表
关于程序中的几点说明 .macro HANDLER HandleLabel stmdb sp!, {r0-r11, ip, lr} ldr r0, =\HandleLabel ldr r1, [r0] mov lr, pc bx r1 ldmia sp!, {r0-r11, ip, lr} subs pc, r14, #4 /* interrupt ret */ .endm 1.执行b HandlerIRQ 2.HandlerIRQ: HANDLER HandleIRQ //Setup IRQ handler : ldr r0,=HandleIRQ ; ldr r1,=IsrIRQ ; str r1,[r0]
中断服务 • 一、 关于44B0中断系统 44B0 中断系统中有两张中断转移表,经过二重转移才跳到中断处理程序。第一张中断向量表由硬件决定,所在区域为ROM(flash),地址空间从0X00开始,其中0X00-0X1C为异常向量入口地址,0X20-0XC0为中断向量入口地址。另一张中断向量表在RAM 中,可以随便改,其位置在程序连接后才定。 • 二、 如何从第一张中断向量表跳到第二张中断向量表 由于 RAM 放在地址空间的高端(距离中断向量超过了 32M),故在第一张中断向量表对应位置上写上 ldr PC,# interrupt_service 如:ldr PC,=HandlerEINT4567
三、如何在启动程序中设置异常向量,中断向量表 如何把 C 语言中的一个中断函数对应到汇编的中断向量表中,示意图及举例如下:
把C语言中的一个中断函数对应到汇编的中断向量表中:pISR_EINT4567 = (int)Eint4567Isr;其实异常向量就是中断向量,ARM7的内核实际上只有8个(1个保留)异常向量,对于众多的中断源,ARM7 的内核是通过 IRQ、FRQ 的软件查询中断状态寄存器的位来获得ISR的起始地址。而44B0为了克服这种方式所带来的中断延迟,就加入了更多的中断向量表(0x20到0xc0),要使用这种方式,必须在中断控制寄存器中设置每个中断源的方式为IRQ 方式,且使用向量中断。 把C语言中的一个中断函数对应到汇编的中断向量表中:pISR_EINT4567 = (int)Eint4567Isr;其实异常向量就是中断向量,ARM7的内核实际上只有8个(1个保留)异常向量,对于众多的中断源,ARM7 的内核是通过 IRQ、FRQ 的软件查询中断状态寄存器的位来获得ISR的起始地址。而44B0为了克服这种方式所带来的中断延迟,就加入了更多的中断向量表(0x20到0xc0),要使用这种方式,必须在中断控制寄存器中设置每个中断源的方式为IRQ 方式,且使用向量中断。
中断控制寄存器设置 • S3C44B0X的中断控制器及对中断控制器的操作 • 程序状态寄存器的F位和I位 • 中断模式(INTMOD) • 中断挂起寄存器(INTPND) • 中断屏蔽寄存器(INTMSK) • 中断源 • 向量中断模式(仅针对IRQ)
7.5 时钟电源管理器 • S3C44B0X内部的时钟发生器可以产生CPU和外设所需要的时钟信号。时钟发生器可以在S/W的控制下向外设提供时钟信号,也可以断开时钟同每个外设的连接以降低功耗。与这种S/W的控制类似的是,对一个给定的任务,S3C44B0X有多种电源管理方案以保持最佳的功耗。 • S3C44B0X的电源管理方案有五种:正常模式(Normal mode),低速模式(Slow mode),空闲模式(Idle mode),停止模式(Stop mode)和LCD的SL空闲模式(SL Idle mode)。
时钟电源管理器功能描述 时钟发生器 时钟源选择 PLL(PHASE-LOCKED-LOOP锁相环) 时钟控制逻辑 电源管理