arm笔记范文第1篇
1 ARM处理器模块的数据交换
ARM处理器, 用于实现图像数据交换和以太网数据传输等功能。
处理机硬件的FPGA内部通常采用一个8KByte双口SRAM作为图像存储区。为了实现图像数据的实时采集与处理, 应使图像数据的采集与外部图像数据的读取同时进行。因此本系统采用双缓存结构。实现方法是把8KB的SRAM划分成两个大小为4 KB的SRAM (设为SRAM1和SRAM2) , 每片SRAM一次存储六行图像数据。这样, 在同一时刻, 一片可用于存储图像数据, 另一片可用于外部ARM对图像数据的读取。两块SRAM存储区乒乓式切换。当图像数据写满SRAM1时, FPGA向ARM发送一个中断信号, 之后, ARM响应中断并读取SRA M1中的图像数据, 同时将其写入到SDRAM中。之后, 图像传感器的数据将写入SRAM2, 当图像数据写满SRAM2时, FPGA也向ARM发送一个中断信号。ARM响应中断并读取SRAM2中的图像数据.同时将其写人到SDRAM中。之后, 图像传感器的数据将再次写入SRAM1。
2 太网数据传输的配合
ARM配合以太网传输模块控制器, 用于接收和发送数据的存储。为实现图像数据的网络传输, 基于硬件开发了UDP/IP协议实现程序, 将图像数据存储在SDRAM中。通电后系统将等待FPGA中断, 如果中断产生, 则读取FPGA中的数据并写到SDRAM中。然后判断是否读完一帧图像数据, 若读完, 则发送UDP包, 并将图像数据通过以太网发送到上位机, 否则继续等待FPGA中断。
3 DSP图像处理模块
系统DSP通过对读出数据进行的处理以及压缩等。例如:数据处理由数据压缩算法实现。数据压缩算法采用JPEG (Joint Photographic Expert Group) 标准, 当考虑系统有一定的延时以及处理后图像的存储时间, 那么DSP处理一幅图像时间不能超过30ms。最后DSP读出数据并存入SDRAM。一帧图像有576行, 在最后一行时会收到系统的帧中断, 这时SDRAM中的图像数据总共有1440×576=810KB。让C6211用36M条指令周期的时间处理810KB的数据显然绰绰有余。实际需要的指令远小于36M条, 而时间也远小于30ms, DSP完全可以实时处理传来的数据。
为了达到实时图像处理的目的, 除了最大限度地发挥中央处理器的图像处理能力外, 还需要合理地分配任务。DSP芯片的优势在于乘除运算的能力, 由于其特殊的流水线结构和处理单元, 大部分DSP都能在单周期内完成在PC上需若干个周期才能完成的乘法运算;相反在进行简单的加减运算时, 由于时钟频率和总线宽度都无法与PC机相比, 效率不高。因此, 如果能用硬件实时实现这些相对简单却又繁琐的运算, 就可以大大提高系统的总体性能。
4 改进的图像增强算法
图像增强是图像处理中用于改善图像质量以及图像视觉效果的一种方法。在DSP平台上采用直方图均衡实现实时图像增强是一种常用的方法。对一幅连续图像, 其具有灰度G的阈值面积 (所有轮廓线所包围的面积) 为A (G) , 则其直方图H (G) 定义为:
H (G) =lim[A (G+ΔG) -A (G) /ΔG=d/d c A (G) ,
ΔG→0
对于数字图像, G为整数, A (G) 表示灰度值大于等于G的象素个数, 当ΔG=1, H (G) =A (G+1) -A (G) 。
如果对A (G) 做一次系数为Gm/A0的比例变换, Gm表示灰度的最大值, A0表示图像的面积 (在数字图像中为象素总数) 。这就是种线性直方图均衡。这种直方图均衡的具体实现如下。
对于图像{P i, j|i=1, 2, ..., n;j=12, ..., m}, 就灰度G, G=0, 1, ...2 5 5, 求出直方图H (G) ;
由A (G+1) =A (G) +H (G) 求出阈值面积A (G) , G=1, 2, ..., 2 5 5;
求出变换后的灰度分度值hnew (G) =255A (G) /A 0, A 0=n m;
Pij=hnew (Pij) 。
借助LUT, 可使运算以最快速度实现。
除了DSP对数据的快速读取接收, 需要的数据信息运算, 对图像的边缘进行增强处理与色彩均衡结合起来使图像增强等方面的运算处理, 可由硬件实现。
所以, 如果不做简化处理或采用更高性能的DSP, 做到实时处理还有一些问题。因此, 高性能的DSP, 配合硬件处理的方法可以极大地提高图像效果的总体性征。
摘要:ARM (Advanced RISC Machines) , 既是一个公司的名字, 也是对一类微处理器的通称, 还可以认为是一种技术的名字。现在流行的数码相机和打印机中绝大部分采用ARM技术, 手机中的32位SIM智能卡也采用了ARM技术。ARM在数据传输、控制技术上表现了优越性能。
关键词:DSP,ARM,图像增强
参考文献
[1] 房向荣.基于ARM的非接触式IC卡控制器设计[J].西安文理学院学报 (自然科学版) , 2009 (3) .
[2] 汪庆年, 孙丽兵, 李桂勇.一种基于ARM的视频监控系统的设计[J].安防科技, 2009 (6) .
arm笔记范文第2篇
嵌入式系统是后PC时代的主导, 当低端的嵌入式系统无法满足信息化、智能化、网络化时代的更高要求时, 32位嵌入式系统应运而生。32位嵌入式系统是电脑硬件与软件的有机结合。嵌入式设计的目的在于满足某种特殊的功能。嵌入式系统的大体构架可分为五部分:处理器、内存、输入与输出、操作系统与应用软件。32位嵌入式系统可分为硬件和软件两个平台。硬件平台的设计包括处理器电路、网络功能、无线通信及使用接口等的设计。嵌入式软件为信息、通信网络或消费性电子产品等系统中的必备软件, 为硬件产品的驱动程序, 控制处理和基本接口功能服务, 以提高硬件产品的价值。嵌入式软件为该硬件产品不可缺少的重要组成部分。
2 32位嵌入式系统的应用现状
嵌入式系统把微处理器 (CPU) 或者微控制器 (MCU) 的系统电路与其专用的软件平台相结合, 以此来达到系统操作的最高效率。目前的移动电话、手表、电子游戏机、PDA、电视、冰箱等民用电子与通信设备, 电动汽车、电动机车等电动产品的控制核心, 无不与32位嵌入式系统息息相关。32位嵌入式系统早已融入了人们的日常生活, 嵌入式系统的产品主要集中在信息家电、通信产品、工业控制器、掌上电脑 (PDA) 领域。家电、玩具、汽车、新一代手机、数码相机等设备也都采用了32位嵌入式系统的核心技术。随着后PC时代的到来, 有理由相信32位嵌入式系统会呈现出蓬勃发展的趋势。
3 边界扫描技术 (JTAG)
边界扫描技术是为了满足当今深度嵌入式系统调试的需要而被IEEE1149.1标准所采纳, 全称是标准测试访问接口与边界扫描结构 (Standard Test Access Portand Boundary Scan Architecture) 。JTAG遵循1149.1标准, 是面向用户的测试接口, 是ARM处理器调试的基础。本文提到的ARM的E-TRACE调试模式实际上是JTAG的增强版本, 其它一些32位嵌入式处理器的调试方式也基本上遵循这个标准。这个用户接口一般由4个引脚组成:测试数据输入 (TDI) 、测试数据输出 (TDO) 、测试时钟 (TCK) 、测试模式选择引脚 (TMS) , 有的还加了一个异步测试复位引脚 (TRST) 。
所谓边界扫描就是将芯片内部内科所有的引脚通过边界扫描单元 (BSC) 串接起来, 从JTAG的TDI引入, TDO引出。芯片内的边界扫描链由许多的BSC组成, 通过这些扫描单元, 可以实现许多在线仿真器的功能。根据1149.1的规定, 芯片内的片上调试逻辑通常包括一个测试访问接口控制器 (TAP) 。它是一个16状态的有限状态机以及测试指令寄存器、数据寄存器、旁路寄存器和芯片标识寄存器等。在正常模式下, 这些测试单元 (BSC) 是不可见的。一旦进入调试状态, 调试指令和数据从TDI进入, 沿着测试链通过测试单元送到芯片的各个引脚和测试寄存器中, 通过不同的测试指令来完成不同的测试功能。包括用于测试外部电气连接和外围芯片功能的外部模式以及用于芯片内部功能测试 (对芯片生产商) 的内部模式, 还可以访问和修改CPU寄存器和存储器, 设置软件断点, 单步执行, 下载程序等。其优点如下:
1) 可以通过边界扫描操作测试整个板的电气连接, 特点是为表面贴元件提供方便;
2) 各个引脚信号的采样, 并可强制引脚输出用以测试外围芯片;
3) 可以软件下载、执行、调试和控制, 为复杂的实时跟踪调试提供路径;
4) 可以进行多内核和多处理器的板级和芯片级的调试, 通过串接, 为芯片制造商提供芯片生产、测试的途径。
虽然JTAG调试不占用系统资源, 能够调试没有外部总线的芯片, 代价也非常小;但是由于JTAG是通过串口依次传递数据, 速度比较慢, 只能进行软件断点级别的调试, 自身还不能完成实时跟踪和多种事件触发等复杂调试功能。因此便有了几种功能更为完善的增强版本。
4 ARM芯片的实时调试方案 (E-TRACE)
ARM公司的内核芯片采用E-TRACE片上调试模式。它实际上是JTAG的升级版本, 通过增强的辅助片上调试硬件来完成实时调试, 解决了许多传统调试器难以解决的问题。
它的实时调试方案通过三种途径解决:
1) Embedded ICE硬逻辑;
2) 实时监控;
3) 实时跟踪。
Embedded ICE逻辑单元存在于ARM7TDMI、ARM9TDMI、ARM9E和ARM10内核中。它在JTAG的基础上, 增加了硬件断点寄存器、比较器, 通过断点寄存器的值可以进行硬件断点的设置, 不仅对地址还可以对数据、控制总线的信号进行复杂的触发控制设定, 而不是单单在指令级别进行中断 (如软中断) , 从而满足对特定事件的中断响应, 极大的增加了灵活性, 同时可以在ROM中设置断点和观察点, 极大地方便调试。
实时监控则是进一步在ARM9E和ARM10中的改进。它改变Embedded ICE在触发中断后进入调试模式状态而停止内核运行的弊端, 进入一段非常小的中断监控程序中, 得到所需要的信息后迅速把控制权转让给先前的任务 (这是与远程监控器最大的区别) 。在监控程序内处理器完全可以再接收外界的中断和其他触发事件, 而不是停止运行。这种方式综合了JTAG和远程调试的优点, 它可以增加以下两个好处:
(1) 在不禁止中断的前提下调试前景任务 (即中断时正在运行的任务) ;
(2) 不用停止处理器的运行就可以读写和修改存储器 (对于机电设备非常重要) 。
更为强大的是ARM的实时跟踪解决方案, 它由三个部分组成:
(1) 嵌入跟踪微核;
(2) 跟踪分析仪;
(3) 跟踪调试软件。
通过这三种工具可实现完全的实时跟踪。跟踪微核存在于芯片, 它可以不停止CPU的运行而实时监视芯片总线的信息, 并把设定触发范围内的所有信息在CPU运行的同时通过压缩的方式送到外部的跟踪分析仪器里。分析跟踪仪器从芯片外部通过跟踪口 (另外一个不同于JTAG的接口) 收取信息。因为是压缩的数据, 所以分析仪不需要采用与跟踪微核实时跟踪相同的速度。这大大降低了分析的成本, 并增加了存储的容量。而PC端的跟踪软件则将来自分析仪的数据重新组织起来, 从而重现处理器的历史状态和数据、程序流程。同时还可以把执行代码与源代码链接起来, 使调试者快速理解跟踪数据。ARM的这种方式通过芯片内部的实时跟踪硬件加上低成本的分析仪器, 解决了传统在线仿真器 (ICE) 和逻辑分析仪的诸多弊端。
5 Nexus标准
自从JTAG IEEE1149.1标准出来后, 越来越多的高端嵌入芯片生产商开始采用这个标准。但是1149.1标准只能提供一种静态的调试方法, 如处理器的启动和停止、软件断点、单步执行、修改寄存器, 而不能提供处理器实时运行时的信息。于是各个厂家在自己的芯片上, 把原有的JTAG的基本功能进行了加强和扩展, 如前面提到的E-TRACE、背景调试模式BDM (Background Debugging Mode) 和片上仿真On CE (On-Chip Emulation) 等, 在处理器不停止运行的前提下, 进行实时的调试。
由于这些增强的JTAG版本之间各有差异, 而且即使同一厂家的不同产品之间也存在着不同, 所以一些芯片厂商和调试工具开发公司于1998年成立了Nexus 5001论坛, 以期提出一个在JTAG之上的嵌入式处理器调度的统一标准。
Nexus将调试开发分成四级, 从第一级开始, 每级的复杂度都在增加, 并且上级功能覆盖下一级。第一级使用JTAG的简单静态调试;第二级支持编程跟踪和实时多任务的跟踪, 并使用户用I/O引脚作为多路复用辅助调试口;第三级包括处理器运行时的数据写入跟踪和存储器的读写跟踪;第四级增加了存储替换并触发复杂的硬件断点。从第二级开始, Nexus规定了可变的辅助口。辅助口使用3~16个数据引脚, 用来帮助其他仿真器和分析仪之类的辅助调试工具。
通过Nexus标准可以解以下问题:
(1) 调试内部总线没有引出的处理器, 如含有片内内存器的芯片;
(2) 传统在线仿真器无法实现的高速调试;
(3) 深度流水线和有片上Cache的芯片, 能够探测具体哪条指令被取和最终执行;
(4) 可以稳定地进行多内核处理器的调试。
6 调试技术的展望
通过上面的分析可以看出, 目前的调试技术可以在频率100MHz、内部总线外部不可见、需要进行实时跟踪的情况下发挥优势, 弥补传统的远程调试器和在线仿真器的不足, 并且成本非常低廉。
同时, 调试技术还在不停地发展, 目前IEEE1149.4标准也已经产生。它主要是将边界扫描结构用于处理模数混合芯片的调试。Nexus也已经完成了标准的制定并有厂商开始在芯片上提供Nexus的调试硬件模块。但是这些标准到底会不会被各个芯片厂商所采用, 还有待时机的成熟。特别是两大主流内核公司ARM和MIPS分别采用了自已独特的内核调试技术。
摘要:针对32位ARM处理器开发过程中调试技术的研究, 分析了目前比较流行的基于JTAG的实时调试技术, 介绍了正在发展的嵌入式调试标准, 并展望期趋势。
关键词:嵌入式,调试,处理器,JTAG Nexus ARM
参考文献
[1] 马忠梅, 等.ARM嵌入式处理器结构与应用基础.北京航空航天大学出版社, 2002.
arm笔记范文第3篇
一、工作原理
基于ARM的智能裂缝测宽仪将建筑物表面裂缝的近距离检测和远距离检测结合到一套系统上, 并进行了便携式设计, 使其能够方便地在现场进行实时检测。其基本工作原理为:在近距离测量或远距离时, 使用系统上的数码显微视觉系统, 采集建筑物表面裂缝图像, 显示在LCD上, 并通过专用的裂缝检测软件计算出裂缝的宽度等参数。抓拍的裂缝图像及最终检测结果既可以保存在SD卡, 也可以通过远程通讯模块上传到服务器, 服务器将裂缝图片及检测结果发送到专门的Android客户端, Android客户端接收数据并存储在数据库中, 然后Android客户端从数据库中读取裂缝信息并将其显示在界面上。该仪器可方便的用于搜索、采集、观察、测量、分析建筑物和建筑材料表面的可视大范围缺陷或微小缺陷并给出定量的评价结果, 同时也实现了裂缝信息的共享和实时检测。
二、各模块简介
仪器的总体由光学成像模块、图像采集模块、嵌入式处理模块及远程通讯模块组成。光学系统模块包括近距离光学成像系统、远距离光学成像系统、照明系统设计和电子目镜的转接光学系统设计。本仪器采用中间像面二次成像的方式的电子目镜, 该结构主要由转接镜和CMOS组成, 其中转接镜通过场镜加三片式摄影物镜的方式实现。图像采集模块主要包括了LED的开关控制、图像摄取控制和图像信号的传输。图像传感器的功能就是把光学图像转换为电信号, 即把入射到传感器光敏面上按空间分布的光强信息, 转换为按时序串行输出的电信号——视频信号, 该视频信号能再现入射的光学图像。嵌入式裂缝检测软件部分的工作主要包括嵌入式裂缝检测软件的开发和远程通讯模块的开发。嵌入式裂缝检测软件采用C++编程语言, 包括基于Qt的GUI图形用户界面设计和具体功能的实现, 具体功能主要有图像采集模块、图像处理模块和图像分析模块三部分, 图像采集模块负责动态视频的采集与显示、静态图像的抓拍与保存, 图像处理模块负责打开本地图像、选取目标区域、对目标区域图像进行处理, 图像分析模块负责图像标定、裂缝测量以及标定、测量结果的输出等;远程通讯模块可以将裂缝图像和检测结果上传到服务器, Android客户端可以读取并显示保存在服务器中的裂缝图片及检测结果。裂缝仪系统图如图1所示。
三、关键技术
(1) 光学成像模块的设计。包括成像照明系统、近距离成像物镜、远距离成像物镜、电子目镜转接系统的设计。 (2) 图像采集模块的设计:包括图像采集系统和图像采集软件的设计。完成CMOS图像传感器的选型、CMOS驱动设计、图像数据采集与传输、缓存以及功能控制电路的设计;开发基于Linux系统的图像采集软件是整个裂缝检测软件的一部分, 其主要工作是通过人机交互的方式, 实现对裂缝动态视频的采集与显示、静态图像的抓拍与保存等功能的控制。 (3) 嵌入式处理模块的设计:项目使用三星公司的ARM11处理器作为主控中心, 搭建嵌入式硬件平台;设计CMOS接口电路、液晶屏电路与触摸屏电路以及控制电路等外围电路。以嵌入式Linux操作系统作为系统的软件平台, 完成交互式开发环境的搭建、操作系统的定制和嵌入式应用程序的开发等工作, 设计出专用于建筑物裂缝测量的LINUX系统, 实现图像采集、存储、处理、控制等功能。 (4) 远、近距离测量系统的一体化设计。对系统硬件结构进行了优化设计, 把近距离和远距离裂缝测量单元整合, 通过一套图像采集模块、处理计算模块和供电模块完成近距离和远距离两种测量, 进一步使仪器小型便携。
四、结论
目前, 市场上还没有相关的能同时对远、近距离建筑物表面裂缝等缺陷进行搜索、信息采集和测量的便携式智能裂缝检测仪。便携式智能裂缝检测仪是高科技一体化集成图像处理系统, 可以取代市场上几乎所有的钢尺、卡尺、裂缝放大镜、电子裂缝宽度观测仪等, 同时又具有高速、精确、无损、自动数据处理等无法比拟的优势, 解决了传统方法中精度低、人为误差大、操作效率低等问题, 可以为裂缝评估和研究提供客观准确的依据。本项目产品不仅可用于房屋、桥梁、道路等的裂缝检测与分析, 这种裂缝检测技术还可应用于国防、航空航天、机械制造等众多领域中, 具有量大面广的市场需求和广阔的发展前景。
摘要:研究紧密结合建筑物表面裂缝等缺陷发现和测量的特点, 以及现有的测量技术, 深入研究光学显微与望远成像技术、图像传感原理、数字图像处理技术、嵌入式应用开发技术、服务器技术以及Android应用开发技术, 在此基础上协调光学系统、机械结构、驱动电路以及配套的软件平台和应用软件等方面, 最终研制出的基于ARM的便携式智能裂缝检测样机。可用于搜索、采集、观察、测量建筑物表面裂缝, 给出定量的评价结果。
arm笔记范文第4篇
μC/O S-Ⅱ是一个完整的、固化、剪裁的抢占式实时多任务内核。μC/O S-Ⅱ是用ANSI的C语言编写的, 包含一小部分汇编语言代码, 使之可供不同架构的微处理器使用。至今, 从8位到64位, μC/O S-Ⅱ已经在超过4 0种不同架构的微处理器上运行。世界上已有数千人在各个领域中使用μC/O S-Ⅱ, 这些领域包括航空业、高端音响、医疗器械、电子乐器、发动机控制、网络设备、高速公路电话系统以及工业机器人等。
所谓移植, 就是使一个实时内核能在某个微处理器或微控制器上运行。为了方便移植, 大部分的μC/OS-Ⅱ代码是用C语言写的;但仍需要用C和汇编语言写一些与处理器相关的代码, 这是因为μC/OS-Ⅱ在读写处理器寄存器时只能通过汇编语言来实现。正是因为如此, μC/O S-Ⅱ在设计时就已经充分考虑了可移植性, 所以μC/O S-Ⅱ的移植相对来说是比较容易的。
2 板级支持包 (BSP) 介绍
2.1 板级支持包 (BSP) 的概念
BSP通常是指针对具体的硬件平台, 用户所编写的启动代码和部分设备驱动程序的集合。它所实现的功能包括初始化和驱动部分设备。最基本的BSP仅需要支持处理器复位、初始化、驱动串口和必要的时钟处理。BSP是相对于操作系统而言的, 不同的操作系统对应不同形式的BSP, 因此, 在写BSP时一定要按照要求的操作系统对BSP的定义形式来写。在μC/O S-Ⅱ系统中, BSP是介于底层硬件环境和μC/OS-Ⅱ之间的一个软件接口, 它的主要功能是系统加电后初始化目标机硬件和μC/OS-Ⅱ, 并提供部分硬件驱动程序。BSP为各种板卡的硬件功能提供了统一的软件接口, 包括硬件初始化、中断的捕捉和处理、硬件时钟和定时器管理、内存地址映射, 以及内存分配等。每个BSP还包括一个Flash启动或其它启动机制。
2.2 Bootloader概述
对于PC机, 其开机后的初始化处理器配置、硬件初始化等操作是由BIOS (Basic Input/Output System) 完成的, 但对于嵌入式系统而言, 出于经济性、价格方面的考虑, 一般不配置BIOS, 因此我们必须自行编写完成这些工作的程序, 这就是所需要的开机程序。而在嵌入式系统中, 通常并没有像BIOS那样的固件程序, 启动时用于完成初始化操作的这段代码被称为Bootloader程序, 因此整个系统的加载启动任务就完全由Bootloader来完成。简单地说, 通过这段程序, 可以初始化硬件设备、建立内存空间的映射图, 从而将系统的软硬件环境设定在一个合适的状态, 以便为最终调用操作系统内核、运行用户应用程序准备好正确的环境。
3 μC/OS-Ⅱ基于S3C2440的板级支持包 (BSP) 设计
从上面的介绍中我们可以看出, μC/OS-Ⅱ的板级支持包 (BSP) 的设计和目标板硬件的配置关系紧密, 本系统中采用的S3C2440芯片的片上资源包括:ARM920T微处理器核、支持64M SDRAM、SRAM、64M Nand Flash的无缝连接;32KB的数据Cache, 32KB的指令Cache, 同时支持四路组相联映射方式;5级指令流水线机制;用户可编程的大小端控制;带有优先级控制、可单独屏蔽中断源的先进中断控制器等。
3.1 存储空间分布
硬件平台的Nand Flash (型号是:K9F1208) 空间为64MB, SDRAM (型号是:HY57V561620, 32Mx2) 空间为64M (0x30000000-0x33ffffff) , 因为Nand Flash只能存储程序, 无法运行程序。为了能够从Nand Flash启动, 上电复位时, S3C2410通过硬件逻辑把Nand Flash的前4KB的内容复制到片内SRAM中, 而片内SRAM被映射到地址0x0, 这样就可以从地址0x0处取到有效指令, 开始执行bootloade r, 完成把Nand Flash中的内核代码复制到SDRAM中等工作。
3.2 系统引导过程设计
Bootloader引导程序是硬件上电复位后首先运行的代码, 由它来加载嵌入式操作系统。然后由操作系统接管整个系统, 进行进程管理、内存管理、磁盘管理和各个外设管理等工作。Bootloader是操作系统内核运行之前的一段自举程序, 用来初始化硬件设备、改变处理器运行模式和重组中断向量, 建立内存空间的映射图, 将系统的软硬件环境带到一个由用户定制的特定状态, 然后加载操作系统内核。
3.3 与处理器相关接口设计
μC/OS-Ⅱ源码中与处理器相关的文件有3个, 分别是OS_CPU.H、OS_CPU_A.ASM、OS_CPU_C.C。其中, 对OS_CPU.H和OS_CPU_C.C文件的修改比较简单, 而对OS_CPU_A.ASM文件的移植工作量要多些, 这个汇编文件也是能否移植成功的关键。因此在本文中主要针对OS_CPU_A.ASM文件的设计进行相关介绍。
在OS_CPU_A.ASM文件中主要需要实现四种接口功能:使就绪状态任务中优先级最高的任务开始运行的函数;任务级别的任务之间切换的函数;在ISR中实现任务切换的函数;实现μC/OS-Ⅱ对中断的接管。
(1) OSStartHighRdy函数实现任务优先级调度功能, 由操作系统的OSStart () 函数调用, 负责选择就绪态任务中最高优先级的任务占有CPU。
(2) OSCtxSw函数是实现任务级别的任务间切换, 它将当前任务的寄存器入栈, 然后恢复高优先级的任务状态, 并运行。程序的第一部分是将当前任务入栈, 第一句stmfd sp!, {lr}中的lr是返回地址, 也就是任务的pc值, 然后将sp赋值给OS_TCB的任务堆栈指针, 完成对当前任务状态的保存。接下来, 将新任务的优先级及OS_TCB赋给当前任务, 获取堆栈指针ldr sp, [r6], 并恢复任务运行所需的寄存器, 执行新的任务。
(3) OSIntCtxSw的功能与OSCtxSw的类似, 只是它实现的是在ISR中的任务切换。
OSIntCtxSw函数被OSIntExit所调用, 而OSIntExit被OS_CPU_IRQ_ISR调用。
(4) OS_CPU_IRQ_ISR的作用是实现μC/OS-Ⅱ对s3c2440中断的接管。在这里我们采用二级查表机制, 当产生中断的时候系统首先由硬件跳转到固定的中断向量表中, 在该向量表中取出SDRAM中的第二级中断向量表, 然后拿到真正的中断子程序入口地址, 从而进入中断处理部分。我们可以参照下面关键部分代码。
摘要:μC/OS-Ⅱ是一个完整的、固化、剪裁的抢占式实时多任务内核。至今, 从8位到64位, μC/OS-Ⅱ已经在超过40种不同架构的微处理器上运行。世界上已有数千人在各个领域中使用μC/OS-Ⅱ, 这些领域包括航空业、高端音响、医疗器械、电子乐器、发动机控制、网络设备、高速公路电话系统以及工业机器人等。本文介绍了该操作系统在ARM920TCPU上的移植。
关键词:μC/OS-Ⅱ,移植,ARM
参考文献
[1] http://www.ucos-ii.com.
[2] 马忠梅, 等.ARM嵌入式处理器结构与应用基础[J].北京航空航天大学出版社, 2002.