ARM Cortex-A8/A9开发板 | ARM11开发板ARM11开发套件 | ARM9开发板ARM9开发套件 | 飞思卡尔I.MX28I.MX6开发板 |
tiny210/mini210开发板 | mini6410开发板/套餐 | Tiny6410开发板无线套件 | mini2440开发板/套餐 | micro2440开发板带核心板 | 友善开发板配件 模块 | QQ2440 V3 SBC-2410X |
FL2440 OK2440-IV V4 | OK2440-III OK2440V3 | TE2440-II TE2440V2 | OK6410 S3C6410 ARM11 | FL6410/OK6410B ARM11 | TE6410 S3C6410 ARM11 | TE-9263 AT91SAM9263 | 开发板配件 模块和其他 |
Xilinx开发板/fpga开发套件 | altera开发板/fpga开发套件 | 基于FMC FPGA/DSP子卡 |
BeagleBoard原厂开发板 | PandaBoard原厂开发板 |
TI DM3730 DevKit8500D | TI系列 omap3530开发板 | ATMEL系列 开发板 | Samsung系列 开发板 | 开发板配件-仿真器 模块 | NXP LPC3250 mini3250 |
Tiny210 三星S5PV210 | Mini210/Mini210s开发板 | Tiny4412开发板Cortex-A9 | Tiny6410开发板 ARM11 | mini2440开发板 ARM9 | micro2440开发板 ARM9 | mini6410开发板 ARM11 | 友善ARM开发板配件 模块 |
keil ARM仿真器/开发工具 | STM32开发板 Cortex-M3 | NXP LPC开发板Cortex-M3 | ATMEL系列 ARM开发板 | Luminary EKK8962开发板 | Freescale i.MX31开发板 | 三星s3c2440 s3c6410开发板 |
FL2440 OK2440-IV V4 | OK6410 S3C6410 ARM11 | FL6410/OK6410B ARM11 | OK210/-A Cortex-A8 | TE2440-II TE2440V2 | TE6410 S3C6410 ARM11 | TE-9263 AT91SAM9263 | ARM开发板配件 模块等 |
Real6410开发板/套餐 | Real210开发板/Real2410 | WIFI GPS GPRS模块摄像头 |
Xilinx开发板/开发套件KIT | Altera开发板/开发套件KIT | 配套模块 |
NXP LPC开发板 ARM7 | Cortex-M3 STM32开发板 | 最小系统模块类(初学者勿选) | 开发工具 仿真器 调试器 | TFT液晶屏LCD 液晶模块 |
DM642开发板/DM642实验箱 | DM6446开发板/DSP实验箱 | DSP仿真器 液晶屏 摄像头等 |
DM3730/AM3715/AM3359 | OMAP3530AM1808AM3517 | 飞思卡尔Cortex-A9开发板 | ATMEL系列ARM开发板 | NXP LPC3250 LPC1788 | Samsung系列ARM开发板 | STM32系列F207/F407 | ARM开发板配件-仿真器 模块 |
Realv210 S5PV210开发板 | Real6410开发板 ARM11 | WIFI GPS GPRS模块摄像头 |
NXP LPC开发板 ARM7 | Cortex-M3 STM32开发板 | ARM小系统模块(初学勿选) | 开发工具 ARM仿真器 调试器 | TFT液晶屏LCD 液晶模块 |
keil ARM仿真器/开发工具 | STM32开发板 Cortex-M3 | NXP LPC开发板Cortex-M3 | ATMEL系列 ARM开发板 | Luminary EKK8962开发板 | Freescale i.MX31开发板 | 三星s3c2440 s3c6410开发板 |
Exynos4412开发板A9四核 | UT-S5PV210 S5PC100 | UT-S3C6410开发板 ARM11 | idea 6410开发板 ARM11 | UT-S3C2450开发板 ARM9 | UT-S3C2416开发板 ARM9 | UT-S3C6410核心板 工控 |
Xilinx开发板 FPGA开发套件 | altera开发板 FPGA开发套件 | FMC模块 配件 下载线 |
DM642开发板/DM642实验箱 | DM6446开发板/DSP实验箱 | DSP仿真器 液晶屏 摄像头等 |
s3c2410 ARM9 FS2410 | s3c2440开发板 ARM9 | s3c44B0开发板 ARM7 | s3c6410 2450 2443/13 | PXA270 PXA320 PXA255 | Atmel 9200 9261 9G20 | Philips NXP开发板YL-LPC | FS-EP9315开发板ARM9 | LCD液晶屏TFT真彩/触摸屏 | ARM仿真器/仿真调试工具 | ARM开发板配套ARM核心板 |
三星s3c2410 s3c44B0 | 三星s3c6410 s3c2443 | Intel PXA270 PXA320 | UP-CUP OMAP5910平台 | FPGA Xilinx altera平台 | 配件-仿真器 模块 液晶屏LCD | 龙芯开发板UP-DRAGON-I | 物联网教学科研设备 | EDA/FPGA/SOPC教学科研 |
utu2440-F-V4.5 含核心板 | utu2440-S-V4.1 单板结构 | YC2440-F-V5.1开发板 豪华型 | YC-ePC-A系列人机界面 | Mars-EDA套件CPLD FPGA | 触摸屏LCD 摄像头 WI-FI模块 |
ARM开发板/开发平台 | FPGA开发板/开发平台 | 编程器/烧写器下载器烧录 | ZLG 仿真器ARM FPGA DSP | ZLG周立功逻辑分析仪 |
DSP初学者开发套件(DSK) | DSP仿真器/仿真系统 | DSP开发板/DSP试验箱 | DaVinci系列多媒体平台 | Xilinx FPGA大学计划产品 | SEED教学实验系统 | FPGA/DSP FPGA开发板 | TI原厂开发板套件/CCS软件 |
ARM开发板 | XSCALE开发板 | ARM仿真器 | SOPC开发板 | DSP开发板 | 达芬奇系列DSP开发平台 | DSP仿真器 | DSP实验箱 | DSP专业研究平台 | ARM实验箱系列 |
广嵌实验室项目产品 | GEC2440/GEC6410开发板 |
泰克Tektronix示波器 | 普源RIGOL示波器 | USB虚拟示波器 |
UT-S5PC100 UT-S5PV210 | UT-S3C6410开发板 ARM11 | idea 6410开发板 ARM11 | UT-S3C2450开发板 ARM9 | UT-S3C2416开发板 ARM9 | UT-S3C6410核心板 工控 | 开发板模块wifi gps等 |
EMA OMAP3530开发板 | EMA OMAP 3530核心板 |
三星s3c2410 s3c44B0 | 三星s3c6410 s3c2443 | Intel PXA270 PXA320 | UP-CUP OMAP5910平台 | FPGA Xilinx Altera平台 | 配件-仿真器 模块 液晶屏LCD | 龙芯系列 UP-DRAGON-I |
utu2440-F-V4.5 含核心板 | utu2440-S-V4.1 单板结构 | YC2440-F-V5.1开发板 豪华型 | 触摸屏LCD 摄像头 WI-FI模块 | Mars-EDA套件CPLD FPGA | ePC系列工控一体机ARM9 A8 |
ARM开发板/开发平台 | FPGA开发板/开发平台 | 编程器/烧写器下载器烧录 | ZLG 仿真器ARM FPGA DSP | ZLG周立功逻辑分析仪 |
DSP初学者开发套件(DSK) | DSP仿真器 | DSP开发板 | DSP实验箱 | Xilinx FPGA大学计划产品 |
ARM开发板 | XSCALE开发板 | ARM仿真器 | SOPC开发板 | DSP开发板 | 达芬奇系列DSP开发平台 | DSP仿真器 | DSP实验箱 | DSP专业研究平台 | ARM实验箱系列 |
ARM开发板S3C6410等 | Cortex-A8/ARM11仿真器 | ADSP Blackfin开发板 | FPGA Spartan-3E开发板 |
GEC2410开发套件ARM9 | GEC2440开发套件ARM9 |
泰克 示波器 |
ARM编程分外是体系初始化代码的编写中通常必要实现停止的相应、分析跳转和返回等操纵,以便支持上层应用步伐的开辟,而这每每是困扰初学者的一个困难。停止处理惩罚的编程实现必要深入相识ARM内核和处理惩罚器本身的停止特性,从而计划一种快速简便的停止处理惩罚机制。必要阐明的是,详细的上层高级语言编写的停止办事函数不在本文的讨论范畴之内。
ARM处理惩罚器非常停止处理惩罚概述
当非常停止产生时,体系实行完当前指令后,将跳转到相应的非常停止处理惩罚步伐处实行。当非常停止处理惩罚步伐实行完成后,步伐返回到产生停止的指令的下一条指令处实行。在进入非常停止处理惩罚步伐时,要生存被停止的步伐的实行现场。从非常停止处理惩罚步伐退出时,要规复被停止的步伐的实行现场。ARM体系中通常在存储地点的低端固化了一个32字节的硬件停止向量表,用来指定各别常停止及其处理惩罚步伐的映射干系。当一个非常出现以后,ARM微处理惩罚器会实行以下几步操纵:
1)生存处理惩罚器当前状态、停止屏蔽位以及各条件标记位;
2)设置当前步伐状态寄存器CPSR中相应的位;
3)将寄存器lr_mode设置成返回地点;
4)将步伐计数器(PC)值设置成该非常停止的停止向量地点,从而跳转到相应的非常停止处理惩罚步伐处实行。
在吸取到停止恳求以后, ARM处理惩罚器内核会主动实行以上四步,步伐计数器PC总是跳转到相应的牢固地点。从非常停止处理惩罚步伐中返回包括下面两个根本操纵:
1)规复被屏蔽的步伐的处理惩罚器状态;
2)返回到产生非常停止的指令的下一条指令处连续实行。
当非常停止产生时,步伐计数器PC所指的位置对付种种差别的非常停止是差别的,同样,返回地点对付种种差别的非常停止也是差别的。例外的是,复位非常停止处理惩罚步伐不必要返回,由于整个应用体系是从复位非常停止处理惩罚步伐开始实行的。
支持停止跳转的分析步伐
分析步伐的见解和作用
如前所述,ARM处理惩罚器相应停止的时间,总是从牢固的地点开始的,而在高级语言环境下开辟停止办事步伐时,无法控制牢固地点开始的跳转流程。为了使得上层应用步伐与硬件停止跳转接洽起来,必要编写一段中间的办事步伐来举行连接。如许的办事步伐常被称作停止分析步伐。
每个非常停止映射一个4字节的空间,恰好安排一条跳转指令大概向PC寄存器赋值的数据访问指令。理论上可以通过这两种指令直接使得步伐跳转到映射的停止处理惩罚步伐中去。但实际上由于函数地点值为未知和别的一些题目,并不这么做。这里给出一种常用的停止跳转流程:
|
停止跳转流程图
这个流程中的关键部分是停止向量表,为了让分析步伐能找到向量表,应该将向量表的地点牢固化(编程者自定义)。如许,整个跳转流程的全部步伐地点都是牢固的,当停止触发后,就可以主动运行。此中,只有向量表的内容是可变的,编程者只要在向量表中填入精确的目标地点值就可以了。这使得上层停止处理惩罚步伐和底层硬件跳转有机地接洽起来。
分析进程示例
以一次IRQ跳转为例,假定停止向量表定义在0x00400000开始的外部RAM空间:
|
图2
停止分析示例流程
图2中实线表现的流程都用ARM汇编语言编写,一样平常作为boot代码的一部分放在体系的底层模块中。填写向量表的操纵可以在上层应用步伐中方便地实现,比如在C语言中: *( int *(0x00400018)) = (int) ISR_IRQ;如许就将IRQ停止的办事步伐入口地点(0x00300260)填写到停止向量表中的牢固地点0x00400018开始的4字节空间了。
云云一来,就可克制在应用步伐中谋略停止的跳转地点,并且可以很方便的选择差别的函数作为指定停止的办事步伐。固然,在步伐开辟时要公道开辟好向量表,克制对向量表地点空间不须要的写操纵。
分析步伐的扩展
众所周知,在ARM处理惩罚器中会包括很多停止源,通常会在ARM内核表面扩展一此停止控制器来办理种种缘故起因孕育产生的停止。比如,三星公司的S3C4510B处理惩罚器中的IRQ/FIQ范例的停止源可以有21个,S3C44B0X有26个。这时间停止处理惩罚的原理还是一样的,无非是向量表更长,并且当一此停止触发以后,必要在分析步伐里查问停止控制器的状态来确定详细的停止源,再根据停止源来读取向量表中的映射地点内容。其处理惩罚流程可用图3表现。
图3 停止分析的扩展
相比图2,图3中多了一级的跳转,也便是在第一次分析跳转到IRQ/FIQ办事步伐中后,再举行第二次的分析_停止源的辨认。
向量停止的处理惩罚
一些处理惩罚器在计划外扩的停止控制器时提供了一种叫做“向量停止”的停止跳转机制。这与前文叙述的扩展分析跳转流程有所差别,它不必要软件来辨认详细的停止源,也便是不必要添加图3中的IRQ/FIQ办事步伐,而完全由硬件主动跳转到映射的停止地点。别的跳转流程的原理都是一样的。这相称于扩展了ARM内核的硬件停止向量表,减小了停止相应延时。以S3C44B0X处理惩罚器的外部停止0为例,必要在其映射的硬件牢固跳转地点0x00000020处添加指令:ldr pc,=HandlerEINT,使得步伐跳转到其办事步伐HandlerEINT0处实行。
|
图4 向量停止分析流程示例
结语
本文先容的停止处理惩罚机制是嵌入式编程中通常采取的要领,其原理是通用的。固然,在实际开辟中,必要根据体系处理惩罚器ARM内核的停止特性和处理惩罚器自身的停止控制器特点详细细化流程图中的各个步调和改写参考代码。
参考文献:1. 杜春雷. ARM体系布局与编程. 清华大学出版社,2003
2. 三星公司S3C4510B、S3C44B0X处理惩罚器数据手册
博航网 www.broadon.net 版权所有
京ICP备10051899号-2 京公网安备110108006479号