ARM处理机

2024-06-14

ARM处理机(通用10篇)

ARM处理机 篇1

摘要:移动通讯设备商爱立信 (Ericsson) 公司数据显示, 智能手机销量在全球范围内正迅猛增长, 在2013年至2019年间, 移动手机总流量将增加10倍。到2019年, 智能手机总流量将达每年10艾字节。而作为移动手机的核心移动处理器的选择格外重要。

关键词:智能手机,流量,移动处理器

作为一个移动芯片在选择性能的同时耗电特别重要。它在性能的表现之外必须要考虑功耗的问题。进入2013年移动处理器的核心已经进入了四核的年代。但同样的四核实际表现却有很大的不同。其实决定一颗处理器表现除了核心数之外, 还有主频、架构、制作工艺等等。

一般来说, 我们往往都会处理器的核心数和主频比较重视, 这也几乎成为很多消费者评定处理器好坏的标准。殊不知对于手机处理器来说, 看不见的提升比看得见的提升重要的多。

所谓看不见的提升, 就是处理器的架构和制作工艺上的提升了。说到架构, 其实就是处理器的基础, 对处理器整体性能起着决定性的作用, 不同架构处理器在同等频率下性能可能会相差2~5倍不等。对于现行移动芯片的市场来说ARM的芯片基本是一统天下。而各厂家者通过A R M公司生产芯片主要有两种模式:一个是如三星、英伟达、联发科等通过购买A R M的芯片架构进行再次设计生产。还有一种则是如苹果, 高通等通过ARM的指令授权然后自己设计架构进行生产。

作为ARM标准架构的芯片, 它已经从最早的A R M v 1发展到了最新的C o r t e xA15和Cortex-A7架构。我们就以ARM的最新架构为例进行解析。

Cortex-A15是ARM Cortex-A家族中目前最强劲的CPU内核架构和ARM其它的微架构相比, Cortex-A15有很大的不同。A 1 5和前代A 9同样具备乱序执行, 但是Cortex-A15具备 (两倍) 的指令发射端口和执行资源, 指令解码能力也要高出50%, 动态分支预测能力更强 (采用了多层级分支表缓存) , 指令拾取带宽更强 (128 bit vs 64bit) , 这些都能让A15的流水线执行具备更高的效率。除此以外, A15采用了VFPv4浮点单元设计, 能执行FMA指令以及硬件除法指令, 相较而言A9的峰值向量浮点性能基本上只有A15的一半。但是高的性能同样也就带来的高的能耗和发热, 为此ARM公司设计出了Cortex-A7架构。该处理器完全兼容并整合了高性能Cortex-A15处理器的所有功能, 包括虚拟化、大物理地址扩展 (LPAE) NEON高级SIMD和AMBA4ACE一致性。单个Cortex-A7处理器的能源效率是ARMCortex-A8处理器的5倍, 性能提升50%, 而尺寸仅为后者的1/5。而通过big.LITTLE处理技术则可以与Cortex-A15组成大小核的组合。在需要高性能时使用Cortex-A15核心而在处理简单的程序是则自动切换到Cortex-A7核心上运行。可以做到无缝连接无需重新编译。

如三星最新的Exynos 5 Octa处理器的理念正是基于A R M提出来的b i g.L I T T L E架构设计, 也是该技术的第一次实际展现。作为ARM的高级合作伙伴, 三星走在了最前列。big.LITTLE架构的核心就是既发挥Cortex-A7的超高能效, 又利用Cortex-A15架构的超高性能。A7的性能不如A 9, 但是功耗也低得多;A 1 5性能无敌, 不过代价是功耗太高, 至少在目前的工艺上不好接受。

至于如何衡量性能和能效, 最关键的指标有两个:

PC (每时钟周期指令数) :代表着一种架构的性能水平, A15无疑是最好的, 而且遥遥领先, 然后是A9、A7、A8。

Perf/W (性能每瓦特) :即性能功耗比, 代表能效, 最好是A7, 然后是A9、A15远远落后。

三星之前已经公布了Exynos 5 Octa的架构和规格细节:28 nmHKMG工艺制造, 其中C o r t e x-A 1 5部分面积19 mm 2, 3 2 K B一级指令/数据缓存、2 M B二级缓存, 主频200 MHz~1.8+GHz;Cortex-A7部分面积3.8 mm2, 3 2 KB一级指令/数据缓存、5 1 2 KB二级缓存, 主频2 0 0 M H z~1.2+G H z。

A7部分的面积只有A15的1/4, 功耗则是只有17%。 (如图1)

核内切换器 (In-Kernel Switcher/IKS) :Exynos 5 Octa虽然拥有八个物理核心, 但展现在用户面前的只有四个。每个A15都有一个对应的A7作为搭档。I K S扮演着调度员的角色, 但它掌管的不是频率切换, 而是在不同处理器之间切换。在负载变高的时候, 从一条能效曲线蹦到另一条能效曲线上去, 就这么简单而实现这种切换的是一个非常简单的内核驱动, 根据测量到的工作负载来决定处理器的工作状态。

现在除了像三星、英伟达、联发科这样直接采用ARM架构的厂家外, 则是以高通、苹果为代表的只购买ARM的指令, 对于架构自己重新设计的移动处理器厂家。

高通Krait架构为例, Krait是高通公司基于ARMv7-A指令集、自主设计的采用28纳米工艺的全新处理器微架构。能够实现每个内核最高运行速度可达2.5 GHz, 较高通第一代的Scorpion CPU微架构在性能上提高60%以上, 并将功耗降低65%。目前, 骁龙移动智能处理器的S4系列多数使用了Krait CPU微架构, S4系列芯片组覆盖双核及四核版本, 包括具有最高达四个3D内核的新AdrenoGPU系列, 并集成多模LTE、3G、2G全制式调制解调器。为新一代智能手机、平板电脑、笔记本电脑乃至智能电视提供充分提升性能的空间。

为了获得更好的功效、性能表现和热曲线, 高通将Krait微架构设计为异步对称式多核处理器系统 (或称为a SMP) 。a SMP架构比当前的同步SMP架构功耗减少25%~40%, 在a SMP中, 每个不需使用的内核都可以完全独立关闭, 使其在待机状态时没有功耗。

下面我们也用高通最新发布的晓龙800为例进行解析:

骁龙800配备了全新krait 400架构四核CPU, 最高主频可达2.3 GHz, Adreno330GPU支持4k超高清视频的播放和拍摄, 并且采用DTS-HD和杜比数字增强版音频, 支持最高5500万像素摄像头、双ISP。骁龙800处理器支持最高2560×2048的屏幕分辨率, 以及1080p高清miracast无线显示。而最新28 nm HPm制程在带来高性能的同时也有效降低了能耗。

骁龙800 CPU单元采用了最新的Krait400架构, 采用了目前最先进的28 nm HPm (节能型高性能移动技术) 制造工艺。更先进的制造工艺使得骁龙800处理器的主频飙升至2.3 GHz, 同时进一步改进了内存控制器, 采用了业界领先的800 MHz 2×32bit LPDDR3内存, 达到了12.8GBps内存带宽, 使它的内存延迟更小。可以让主频达到2.3 GHz的同时, 每个核心的功耗不超过750 mw, 大大降低了功耗。 (如图2)

另外骁龙800采用的是a SMP (异步对称多核处理) 技术, 它可以独立限制CPU每个内核的频率。处理任务时需要用到的核就打开工作, 其余核关闭“待命”, 这样就实现了高性能、低功耗, 使得骁龙800处理器在保持超强性能的同时, 降低了处理器的功耗。

随着移动CPU技术发展, 性能与功耗的博弈从没有停止过。而在移动处理器中ARM的芯片有着统治的地位就是因为它能够把性能和功耗达到一个完美的平衡。无论是ARM的big.LITTLE架构设计还是高通的a SMP (异步对称多核处理) 技术都对移动处理器的能耗进行了优化。而这也是将来移动处理器的发展发现。

参考文献

[1]兰方鹏.浅析基于ARM微处理器的μC_OS-Ⅱ的移植研究[Z].

ARM处理机 篇2

摘要:介绍了内嵌ARM核的FPGA芯片EPXA10的主功能特点、内部结构及工作方式,通过其在图像驱动和处理方面的应用,体现了EPX10逻辑控制实现简单、对大量数据做简单处理速度快以及软件编程灵活的特点。

关键词:ARM FPGA EPXA10 图像驱动 图像处理

随着亚微米技术的发展,FPGA芯片密度不断增加,并以强大的并行计算能力和方便灵活的动态可重构性,被广泛地应用于各个领域。但是在复杂复法的实现上,FPGA却远没有32位RISC处理器灵活方便,所以在设计具有复杂算法和控制逻辑的系统时,往往需要RISC和FPGA结合使用。这样,电路设计的难度也就相应大大增加。随着第四代EDA开发工具的使用,特别是在IP核产业的迅猛发展下产生的SOPC技术的发展,使嵌入式RISC的通用及标准的FPGA器件呼之欲出。单片集成的RISC处理器和FPGA大大减小了硬件电路复杂性和体积,同时也降低了功耗、提高了系统可靠性。Altera公司的EPXA10芯片就是应用SOPC技术,集高密度逻辑(FPGA)、存储器(SRAM)及嵌入式处理器(ARM)于单片可编程逻辑器件上,实现了速度与编程能力的完美结合。本文所介绍的图像驱动和处理系统正应用了EPX10的这些特点,充分发挥了FPGA逻辑控制实现简单、对大量数据做简单处理速度快的优势以及ARM软件编程灵活的特点。

(本网网收集整理)

1 内嵌ARM核的FPGA芯片EPXA10及其主要特点

EPX10单片集成了ARM核、高密度的FPGA、存储器及接和控制模块,不仅简化了ARM与FPGA之间的通讯,也使片外扩展存储器以及和外设通讯变得相对简单;同时通过在FPGA中嵌入各种IP核和用户控制逻辑可以实现各种接口和控制任务。这样的高度集成化不仅大大加快了ARM与片内各种资源的通讯速度,而且减小了硬件电路的复杂性、体积和功耗,真正实现了SOPC。

EPX10内部结构框图如图1所示,主要分为嵌入式处理器和FPGA两部分。

1.1 嵌入式微处理器ARM922T

EPX10嵌入式处理器部分集成了业界领先的32位ARM处理器(ARM922T),工作频率可达200MHz;支持32位ARMv4T指令集和16位Thumb扩展指令集;具有全性能的内存管理单元以及8K的指令缓存和8K数据缓存,以支持实时操作系统(RTOS)、C语言和汇编语言。

1.2 高密度的FPGA

EPXA10片内FPGA部分具有1000000门可编程逻辑、3MB的内置RAM和512个可供用户使用的I/O管脚,可以通过嵌入各种IP核实现各种标准工业接口(如PCI、USB等)。

1.3 先进的存储支持

EPXA10嵌入式处理器部分集成了256KB单口SRAM和128KB双口SRAM;同时集成了两个先进的存储支持:(1)SDRAM控制器,用于控制单倍速/双倍速不同控制进序来确定的,实现起来非常复杂。有了SDRAM控制器的支持,只需要在Altera公司提供的EDA开发软件Quartus II中设置好SDRAM工作所需的各种参数,就可以按照直接给出指令、地址和数据的方式对SDRAM进行操作,控制器会自动将各种指令转化成SDRAM所需的工作时序,大大降低了对SDRAM的控制难度。(2)从FPGA启动。这种启动方式需要将设计下载到片外E2PROM中,而且设计中可包含FPGA部分的.应用。启动时FPGA为主动,ARM处复位状态,配置完成后,如果有对ARM的应用,则ARM解除复位,执行软件代码;反之,ARM一直处于复位状态。

图3

2 EPXA10的工作方式

EPXA10嵌入式处理器部分提供了两条32位AMBA微控制器总线AHB1、AHB2,分别用于片内各种资源的通讯,如图1所示。基于AHB1、AHB2总线,EPXA10的工作方式大致可分为三种:(1)ARM作为AHB1总线的主控,直接访问HAB1总线的从属资源。包括SDRAM控制器、片上SRAM、中断控制器等。(2)ARM作为AHB1总线的主控,通过AHB1-2桥访问AHB2总线上的从属资源,包括UART、EBI、SRAM、Stripe-To-PLD桥等,同时通过Stripe-To-PLD桥对FPGA进行访问和控制。(3)FPGA通过AHB2的总线主控PLD-To-Stripe桥访问AHB2总线上的从属资源,包括SRAM、SDRAM控制器,UART等。

EPXA10片内集成了软件可编程锁相环路(PLL),为微控制器总线及SDRAM控制器提供了灵活精确的时钟基准。

3 EPXA10在图

像驱动和处理方面的应用

本文所述的图像驱动和处理系统主要利用PPGA逻辑控制实现简单、对大量数据做简单处理速度快以及ARM软件编程灵活的特点,系统框图如图2所示。在芯片FPGA部分,构造了CMOS驱动模块,驱动CMOS图像传感器使之能够采集图像数据。然后图像数据经数据接收模块存入片外SDRAM中,并经串口传入PC机,要将图像数据在PC机中显示成图像,还需编写基于CDib类的图像显示程序;同时将图像数据经芯片ARM部分的图像处理算法(本系统采用Sobel算子)处理,处理后的图像数据才能经串口传给PC机进行显示。为了验证基于ARM的图像处理算法实现的正确性,还将这一算法在PC机中进行了实现,最后针对同一幅图像,将两种实现的结果进行了比较。

3.1 图像的驱动

3.1.1 CMOS图像传感器的驱动

要使CMOS图像传感器的成像,必须设计正确的驱动时序,包括行同步、列同步、场同步及曝光时间设定等时序。利用FPGA逻辑编程简单的特点,用硬件描述语言Verilog HDL编程,可在FPGA中实现CMOS图像传感器的驱动时序,该驱动时序的仿真结果如图3所示。图中,ld_y为行选通信号;ld_x为列选通信号;cal为场选通信号;clk_adc为内部A/D转换器所需的时钟;addr为行列地址线;sys_reset为曝光时间设定信号;s和r为内部放大器选通信号。

3.1.2 图像的采集

CMOS图像传感器输出的信号为数字信号(即数字图像数据),所以图像的采集要通过FPGA中的数据接收模块将图像数据保存到片外SDRAM中。数据接收模块状态机如图4所示。标志Flag为1,开始采集数据。因为CMOS图像传感器在每个A/D转换时钟周期输出一个数据(如图3所示),接收模块也相应地设计成一个时钟接收周期接收一个数据(Burst状态),这样就发挥了FPGA对大量数据处理速度快的优势。

3.1.3 图像的显示

ARM将SDRAM中的图像数据经串口传给计算机,在计算机中用VC++语言编写串口协议和图像显示程序,将CMOS图像传感器采集到图像显示在屏幕上,以便于监测验证。

3.2 图像的处理

本系统采用的图像处理算法基于Sobel边缘检测算子。图像的边缘是由灰度不连续性所反映的,是的最基本信息。边缘检测算子检查每个像素的的领域并对灰度变化率进行量化,也包括方向的确定,大多数使用基于方向导数掩模求卷积的方法。就sobel算子而言,如图55所示,采用了两个3×3卷积核形成边缘算子模板,紧邻中心像素的像素有4个,和中心像素成斜对角的像素也有4个,距离中心素近的模板值的系数为2,成斜对角的比较远,所以其系数为1,该系数反映了这样一点:领域对当前像素的灰度梯度的影响程度越近影响越大,越远影响越小。图像中的每个点都用这两个核做卷积,一个核对垂直边缘响应最大,而另一个核对水平边缘响应最大,两个卷积的最大值作为该点的输出位,反映了当前位置灰度梯度(图像边缘)的主要方向和大小。运算结果反馈了一幅边缘幅度图像。

因为拍摄的图像边1024×1024,采用的Sobel算子为3×3模板,所以图像周边的一圈像素(第1行、第1024行、第1列、第1024列)保持原灰度值。在图像的第2行2列到1023行1023列的范围内,用图5所示的算子模板进行扫描计算,即当前像素和与当前像素相邻的8个像素,分别与模板中位置相应的8个系数相乘,累加这9个乘积结果,就得到针对某一方向的灰度梯度。比较两个方向的计算结果,取量大者作为当前位置的灰度梯度。图7为图6经过Sobel算子进行边缘提取后得到的图像。该算法在ARM中是基于C语言实现的,体现了ARM软件编程灵活的特点。

3.3 试验结果

图6是成功驱动CMOS图像传感器后拍摄的景物图像,可见图像非常清晰。本文介别针对Soble算子进行了基于PC机和基于ARM的实现,图7为图6经过ARM中的Sobel算子的边缘提取结果,图8为图6经过PC机中Sobel算子的边缘提取结果,图9为图7和图8逐像素的比较结果。可见两种实现方法得到的结果完全一致,说明了基于ARM的Sobel算子的实现是正确的。

上述驱动和处理系统如果仅用FPGA来实现,算法部分的实现会比较复杂;如果仅用ARM来实现,驱动时序的设计也会非常困难。面采用内嵌ARM核的FPGA芯片EPXA10,单片就实现了上述系统,大大减小了设计的难度和电路的复杂性,同时也减小了硬件电路的体积和功耗,在系统小型化方面有着独特的优势。由于EPXA10集成了先进的ARM922T处理器器以及高密度的

FPGA,所以在不增加体积和改进硬件电路的情况下,可以实现更加复杂的图像处理算法和硬件控制逻辑设计,具有很强的系统扩展潜力。这种嵌入式方案必将成为集成电路的发展趋势,将会在未来较短的时间里得到快速的发展。

★ 高精度时钟芯片SDE及其应用

★ 高精度锂电池监测芯片DS2762的原理及应用

★ 智慧芯片作文范文

★ 语音处理芯片AC48105在低速语音编码设备中的应用

★ FPGA使用入门实验报告示例

★ 电源管理芯片power1208介绍

★ 谈人体芯片的认识美文

★ 数字签名算法SHA-1的FPGA高速实现

★ fpga开发工程师岗位职责极简版

ARM处理机 篇3

半导体业有这样第一家公司,他们的处理器每年出货上百亿颗,我们每天都在用的智能手机都有它的功劳,但这家公司从中赚的钱并不多,这个“雷锋叔叔”就是英国ARM(中文名是安谋国际)公司,他们的ARM处理器在全球范围内支撑了各种嵌入式设备、智能手机、平板、智能手环/手表等产品运行,自己一年的营收不过10亿英镑而已,绝对是薄利多销,造福全人类。

对于ARM公司,我们天天在用他们的产品,不过大部分人对这家公司并不了解,它远不如高通、苹果、联发科、三星这些厂商那般耳熟能详,今天我们主要介绍ARM公司推出的Cortex-A系列处理器核心,这是智能手机、平板中的移动SoC处理器的基础,它每一代的进步都影响着用户体验。

ARM公司主营的产品类型

之前我们介绍过ARM公司是如何运营、赚钱的——四两拨千斤,ARM是如何运作、靠什么赚钱的,他们主要是靠给厂商提供处理器授权、抽取版权税盈利的,但严格来说ARM公司并不是单一的处理器公司,他们还有各种系统IP、物理IP、GPU、视频、显示等各种产品。当然,处理器显然是最重要也是营收最多的业务了,这其中又可以分为面向开放系统的Cortex-A、面向嵌入式系统的Cortex-R以及面向各种微控制器的Cortex-M系列,另外还有面向支付、电子政府、SIM卡等安全市场的SC系列,整个处理器产品线目前的产品系列如下图所示:

我们今天的内容就是Cortex-A系列处理器,成立二十多年来ARM公司已经推出过多代指令集和处理器。大多数人首次在智能手机上接触ARM处理器还是16位的ARMv6家族ARM11处理器,这是苹果第一代iPhone手机处理器的架构,不过现在ARM11架构在官网上已经没有露脸机会了,我们的介绍也就从32位ARMv7家族开始。

ARM Cortex-A处理器主要型号及规格

目前Cortex-A系列处理器最低端的是A5,之后分别是A7、A9、A12/17、A15,还有个比较奇葩的A8,但很早被淘汰了,这些都是32位ARMv7-A指令集的,64位时代则是A53、A57、A72及最新发布的A35,基于ARMv8-A指令集。

在A7/A15时代,ARM推出了big.LITTLE架构,希望用这种这种大小搭配的组合解决处理器耗电与性能之间的矛盾,小核心主要有A7、A53及最新推出的A35这三种,他们典型的特点是顺序执行架构、低流水线、低频率设计,大核心则是A15、A17、A57及A72这几种,这种处理器都是乱序执行架构,3发射解码,高达15级流水线设计,运行频率在2GHz以上,主要面向高性能处理。

big.LITTLE的理念是非常好的,但大小核之间的切换很考验厂商的设计能力,更严重的是处理器厂商在具体的执行中已经偏离了大小核的初衷,现在的情况是高性能大核通常只有在跑分软件中才会满载,而性能较低的小核心反倒成了日常使用的主力,厂商如果协调不好二者的分配,最终的结果就是要么耗电太快,要么就是性能不佳,系统卡顿。

此外,表格中的性能是换算成每核心每MHz下的Dhrystone性能,用以衡量CPU核心性能,不过具体的性能实际上还是跟厂商的工艺、频率挂钩的,ARM在发布Cortex-A72架构时表示其性能是前代的3.5倍,这个实际上是用14/16nm工艺、2.5GHz的A72对比28nm、1.6GHz的A15处理器得来的,A72相对真正的取代对象A57核心的性能提升根本没有这么多。

Cortex-A处理器架构设计图

Cortex-A5是ARM公司目前能效最高、成本最低的32位处理器,不过为了达到如此之低的功耗它的性能也牺牲了不少,没有L2缓存,NEON及VFP浮点指令都是可选的,用在智能手机上性能堪忧。A5在智能手机上最主要的应用还是高通的骁龙S1及后来的骁龙S4 Play,也就是MSM8625、MSM8225系列。

Cortex-A7架构在智能手机中就比较出名了,支持ARMv7-A指令集,NEON及VFP浮点单元都不缺,还可以搭配最多1MB缓存,所以A7架构直到现在也还有用,小米公司出货量过一千万的红米2A用的联芯LC1860就是四核Cortex-A7架构的。

多数情况下,A7核心还是与Cortex-A15核心组成big.LITTLE大小核架构,知名的处理器有NVIDIA的Tegra K1、海思的麒麟920/925、三星的Exynos 5420/5420、联发科的MT8135等等。

Cortex-A8架构在Cortex-A系列处理器中最为特殊,因为其他处理器每簇核心多数都能达到4个核心(总核心数不受限制,看厂商的选择了),但A8就只有单核心,好在A8那个时代手机处理器拼核心并没有这么疯狂,苹果的一代名机iPhone 4用的处理器就是单核A8架构的。

Cortex-A9架构在手机处理器中算是最辉煌的了,它既不像A7那样过于注重低功耗而牺牲了性能,也不像A15架构那样追求性能(A15架构本来是ARM针对服务器市场推出的),A9的性能、功耗比较均衡,而且A9的时代正好是手机处理器从单核向双核转变的时间,双核及后来的四核A9架构中出了不少代表性的处理器,包括苹果一鸣惊人的A5/A5X、NVIDIA的Tegra 2/3、Ti公司的OMAP 4430/4460、三星的Exynos 4210、华为海思的K3V2等等,高通备受好评的Krait架构也是基于A9架构改良的。

Cortex-A15架构本来是ARM公司针对服务器市场推出的高性能核心,首次使用3发射解码架构,还支持ECC内存,所以性能没得说,但随之而来的功耗也是个严重的问题,当时大部分使用A15+A7的big.LITTLE架构的处理器都多多少少存在发热的问题。

说到Cortex-A17架构,它其实比前面的A8更杯具,A8虽然先天孱弱,但在当时的时代中还是发挥了光芒的,而A17明明是底子很不错,但生不逢时。

此外,Cortex-A17实际上就是之前的Cortex-A12(内核没变,改变了外部总线),ARM推A12架构原本是弥补A15功耗过高、A7性能太低的缺憾的,应该说是A9架构的继任者,所以它在性能、功耗上平衡性上做的不错。ARM之所以改名,据说是当时的中国合作伙伴认为A12这个命名不好,消费者会因为它数字比A15低而认为不如A15好(虽然性能上确实如此),不利于宣传,ARM就跟中国厂商劝高通把MSM8974AB/AC改成骁龙801一样妥协了,所以现在叫的是Cortex-A17架构。

本该大有作为的Cortex-A17处理器是雷声大雨点小,除了联发科MT6595、瑞芯微RK3288以及小米电视上用的晨星6A928等极少数产品之外应者寥寥,因为A17架构出来的太晚,还是32位指令集的它接下来直接遇到64位架构处理器的冲击了,只能说是天时不利。

如果说A9处理器是32位时代智能手机应用的成功代表,那么Cortex-A53架构 就是64位时代智能手机处理器架构的代表,它原本是ARM针对64位应用推出的低功耗架构,定位类似之前的Cortex-A7,低功耗低核心面积低成本低发热,应该用作big.LITTLE架构中的小核心的。

不过同期推出的Cortex-A57架构 同样面临功耗、发热的难题,再加上厂商们在8核路线上已经不能自拔,所以大部分厂商索性全部使用A53核心做8核处理器,目前最受欢迎的联发科Helio X10/MT6795、MT6753/6752、海思麒麟930/620、高通骁龙615/616/617等处理器都是这种架构的。

ARM在移动市场推的大核心高性能处理器都面临了功耗、发热失控的尴尬,64位时代的A57甚至还不如32位时代的15架构,由于28nm甚至20nm工艺都难以控制发热,所以只有高通骁龙810、三星Exynos 5433(但阉割了64位支持)、NVIDIA的Tegra X1等少数处理器采用了四核A57架构,市场表现还算好的只有骁龙808及三星的Eynox 7420,前者是因为只用了双核A57架构搭配4核A53,Exynos 7420虽然是真正的4核A57架构,但这主要归功于三星的14nm工艺,如果用20nm工艺的话恐怕也不会乐观。

A57之后ARM公司又推出了Cortex-A72架构 架构,它可以说称A57的改良版,同时也会取代A57的位置,因为A72的功耗控制、性能都要比后者更优秀一些,很多处理器直接跳过了A57架构等的就是A72架构,因为它还是针对FinFET工艺做优化的。

目前来看A72核心处理器还是新生事物,海思最近发布的麒麟950就使用了4核A72+4核A53架构,号称是首款商用A72处理器,联发科早前发布的MT8173处理器也是A72核心的,已经用在了亚马逊的FireTV新品上了,后续还会有联发科10核心的Helio X20/30处理器等。

在本月中的Techcon大会上,ARM又发布了Cortex-A35架构,它是64位ARMv8家族中的最新成员,从命名上看它在64位处理器中定位最低,实际上它也不是为了取代A53的,而是取代目前还在服役的A7低功耗32位核心,1GHz频率下功耗只有90mW,100MHz下更是低至6mW,28nm工艺下核心面积只有0.4mm2。

ARM处理机 篇4

随着社会的发展和生活水平的提高,视频监控广泛的应用于人们生活的各个方面,在众多的视频采集与处理系统中,嵌入式视频采集不仅具有灵活、低成本、高性能的特点,而且结合嵌入式Linux操作系统,可以按照需求对内核进行裁剪,并搭载文件系统,构建功能强大的视频采集与处理终端[1]。特别是Internet的发展,让人们对视频监控系统提出了新的要求,视频信号由于信息量大,传输带宽要求高,大量图像的传输成为多媒体应用的瓶颈,这就需要我们对视频信号先进行压缩编码,然后在网络上进行传输,以便节省带宽和存储空间。

本文研究的正是基于嵌入式Linux的视频采集与处理系统,在Linux 2.6.32内核操作系统下对USB摄像头采集的视频信号进行压缩编码,并采用RTP协议进行实时流媒体传输,在网络异常的情况下,进行本地的视频存储。

1 系统总体设计方案

1.1 硬件系统概述

本系统采用三星公司生产的基于ARM920 T内核的 S3C2440 微处理器,其主频达400 MHz,外围扩展了USB Host控制器、网络、SD卡、音频、触摸屏等设备。本文采用USB摄像头进行视频信号的采集,经微处理器进行软件压缩编码后,最终通过DM9000网卡将数据传输给客户端。图1为系统的硬件结构图。

1.2 软件系统概述

整个系统软件是在嵌入式Linux 2.6.32版本内核上,采用V4L2架构开发应用程序,软件部分的设计分为以下几个部分:

(1)嵌入式Linux内核的移植与编译,yaffs2可读写文件系统的制作与安装。

(2)基于V4L2视频采集模块的设计。

(3)对视频图像进行H.264压缩编码模块的设计。

(4)对编码后的数据进行RTP流媒体传输模块的设计。

(5)网络异常情况的监测与视频的本地存储。

2 ARM上视频采集与处理

2.1 USB摄像头视频采集

V4L2(Video for Linux Two)是Linux内核中关于视频设备的内核驱动,给视频设备提供统一的API。在Linux中,对视频设备的访问可以像访问普通的设备文件一样进行读写操作,一般使用ioctl函数来对设备的I/O通道进行管理[2]。

本文使用USB摄像头来捕获视频,它作为一个视频设备文件保存在/dev/video0下。主要使用ioctl函数对设备进行设置和读取。

具体采集过程如下:

(1)非阻塞方式打开设备文件。应用程序使用非阻塞方式打开视频设备,当采集端未捕获到有效数据时,底层驱动仍然会把缓冲区中的数据交给应用程序。

Cam_Fd = open(“/dev/video0”, O_RDWR | O_NONBLOCK, 0)

(2)获取设备的capability,查看设备所支持的功能。

(3)设定参数,如视频输入、视频制式、帧格式和一帧视频的宽度和高度等。

ioctl(Cam_Fd,VIDIOC_S_FMT,&fmt)

(4)申请帧缓冲,并得到帧缓冲的物理地址。

ioctl(Cam_Fd, VIDIOC_REQBUFS, &req)

ioctl(Cam_Fd, VIDIOC_QUERYBUF, &buf)

(5)将申请到的帧缓冲利用mmap函数映射到用户空间,应用程序可以直接操作该视频帧。

三种方式获取缓冲区中的数据。

①read、write方式:在用户空间和内核空间不断拷贝数据,占用了大量用户内存空间,效率不高。

②用户指针模式:内存片段由应用程序自己分配。在v4l2_requestbuffers里将memory字段设置成V4L2_MEMORY_USERPTR。

③内存映射方式:是一种简单而高效的方式。在内核空间中开辟内存,在应用程序中将帧缓冲映射到用户空间中,直接处理设备内存。减少 I/O 操作,提高读取效率。

本文利用mmap函数内存映射直接读取缓冲区而不需要频繁的进行数据的拷贝。mmap函数返回值是一个指针,指向的是一个帧缓冲区的首地址。使用完后要使用munmap()函数解除映射关系。

mmap(NULL, buf.length, PROT_READ | PROT_WRITE, MAP_SHARED, Cam_Fd, buf.m.offset);

(6)将申请到的帧缓冲全部入列,来存放采集到的视频数据。

在V4L2驱动程序中维持着两个队列,一个是输入队列,另一个是输出队列。队列被组织成FIFO结构,内存片段将按顺序入列到输入队列中,并按照顺序从输出队列中出列。而对一个视频捕获的程序来说,它首先会把所有映射好的内存片段入队,然后开始捕获视频并进入循环,此时应用程序会一直等待输出队列被填满到可以有内存片段出队。这个过程需要用到两个ioctl命令,VIDIOC_DQBUF和VIDIOC_QBUF。

①首先将申请到的帧缓冲全部入队列,以便驱动向其存放采集到的数据。

ioctl(Cam_Fd,VIDIOC_QBUF,&buf)

②开始采集。

enum v4l2_buf_type type

type= V4L2_BUF_TYPE_VIDEO_CAPTURE

ioctl(Cam_Fd,VIDIOC_ STREAMON,&type)

③出队列以取得已采集到的数据的帧缓冲,从缓冲区获取原始采集数据。

ioctl(Cam_Fd,VIDIOC_DQBUF,&buf)

④出队列后的缓冲区交给应用程序处理,处理完毕后将缓冲重新放入队列尾,实现循环采集视频数据。

其中较常用的几个命令字和对应的结构体如表1所示。

2.2 H.264视频编码

H.264是在MPEG-4技术的基础上建立起来的,与现有其它的视频标准相比,在相同的带宽下,能够编码生成高质量的视频图像,不仅具有优异的压缩性能,而且具有良好的网络亲和性,其编码流程主要分为5个部分:帧间和帧内预测、变换和反变换、量化和反量化、环路滤波、熵编码,其中比较重要的是帧间和帧内预测编码[3]。

2.2.1 帧内预测编码

在帧内预测模式中,预测块P是基于已编码重建块和当前块形成的,帧内预测编码的目的是缩减图像的空间冗余,由于相邻的宏块通常具有相似的属性,帧内预测充分利用相邻宏块的空间相关性,在对给定的宏块编码时,首先根据周围的宏块进行预测,然后对预测值与实际值的差值进行编码,同直接对该帧编码相比,可以大大减小码率。

2.2.2 帧间预测编码

帧间预测是利用已编码的视频帧/场和基于块的运动补偿的预测模式,利用连续帧中的时间冗余来进行运动估计和补偿。除支持P帧、B帧外,H.264还支持一种新的流间传送帧SP/SI帧,如果当前码流中包含SP/SI帧后,可以在不同码率的码流之间快速切换,以适应网络有效带宽的不断变化,同时支持随机接入和快速回放模式[4]。

本文采用的视频编解码器是国内视频编码自由组织合力开发的,符合H.264标准的T264视频编解码器,吸收了JM,X264和Xvid三个源码的优点。在ARM平台上的编码部分的实现:

(1)在redhat 5.4下建立交叉编译环境。

(2)进入avc-src-0.14/avc/build/linux/目录修改makefile,指定交叉编译,保存退出,make编译成功后,形成一系列的*.o文件,应用程序利用编解码器提供的函数进行编程,为防止可能出现的编译错误,进入avc-src-0.14/avc/build/obj/下删除T264.o文件。

(3)利用编解码器提供的函数编写应用程序。

利用编解码器提供的原始配置文件enconfig-fastspeed baseline.txt作参考,制作并修改config.txt中的各项参数来更改编码器的结构。首先在init_encoder()函数中读取配置文件,并传递给T264_param_t结构体,对编码器的结构参数进行初始化,该配置文件包括宏块的高度、宽度、量化系数损失、参考帧数目、最大最小量化参数、像素插值、搜索范围、预测模式、CABAC等配置。通过配置不同的参数,可计算当前的码率,并通过串口输出码率以及在客户端观察图像的质量,发现对于H.264编码,B帧和多参考帧数目,直接影响编码效率,其次是搜索范围、Hadamard变换和熵编码也会影响H.264在ARM 上编码的效率以及图像的质量。这与H.264编码标准中引起编码复杂度是相匹配的。因此在实际应用中需修改配置文件并对H.264编码的算法进行优化,提高编码的效率。具体的编码流程如图2所示。

2.3 基于RTP协议的视频传输

实时传输协议RTP是处理Internet上多媒体数据流的一种网络协议,在一对一或者一对多的传输情况下工作,整个RTP协议由两个部分组成:RTP数据协议和RTCP控制协议,RTP是目前解决流媒体实时传输最有效的解决方法。在嵌入式Linux平台上通过移植开源的RTP库JRTPLIB 3.7.1实现流媒体传输。利用JRTPLIB编写应用程序,其具体实现过程主要分为三个部分:

(1)RTP会话初始化

RTPSession sess; //定义RTPSession类实例表示本次会话

RTPSessionParams sessparams;

RTPUDPv4TransmissionParams transparams;

sessparams.SetOwnTimestampUnit(1/90000);//设置时间戳发送频率

sessparams.SetAcceptOwnPackets(true); //可以接收自己发送的流媒体数据

sessparams.SetUsePollThread(true); //为确保支持线程操作,再次设置为开启(默认是开启的)

transparams.SetPortbase(portbase); //设置进行流媒体数据传输或接收的本机端口

status=sess.Create(sessparams, &transparams); //真正的创建RTP任务

(2)设置发送数据的目的地的IP地址和目标端口号

RTPIPv4Address addr(destip, destport); //声明并初始化RTPv4Address类对象addr(设置目标地址)

status=sess.AddDestination(addr);//添加目的地信息

(3)数据发送

在同一个 RTP 会话中,数据报一般具有相同的负载类型、标识和时间戳增量,JRTPLIB 允许将会话设置为默认参数,也可以通过调用 RTPSession 类的SetDefaultPayloadType()、SetDefaultMark()和SetDefaultTimeStampIncrement()方法来完成对会话参数的重新设置。最后指明发送数据的长度,通过sess.SendPacket()实现数据的发送。

由于H.264的基本流的结构分为两层:视频编码层(VCL)和网络适配层(NAL),编码处理后输出的VCL数据,先被封装进NAL单元中,RTP传输时先从码流中分离出每个NALU单元,进行打包,发送端的流程如图3-4所示。

2.4 网络异常情况下的视频存储

在流媒体传输过程中,当网络中断或者出现波动时,为确保采集的视频信号不被轻易丢失,服务器端在进行正常的视频采集与编码传输的同时,以设定的时间间隔执行checknet()函数自动监测网络,当返回值为1时表示网络正常,为0则表示网络异常无法连接。在异常情况下服务器端自动进行本地视频文件SD卡或者U盘存储,并将视频文件命名为当前的系统时间。在视频本地存储任务中同样进行网络监测,当网络恢复正常时,结束视频本地存储任务,开始继续执行服务器端正常的视频采集与编码传输。在checknet()函数中首先通过get_netlink_status()函数检测本地网卡与网线是否正常连接,然后通过与远端客户端的固定端口(客户端在8081空闲端口始终进行等待连接)进行TCP连接判断网络是否通畅。

3 结束语

本文给出了一种基于ARM的嵌入式视频采集与处理系统的设计方案,系统采用新一代视频编解码标准,在Linux 2.6.32内核操作系统下利用USB摄像头采集视频,然后对视频数据进行H.264编码传输,并在网络异常情况下自动转入本地视频存储。通过对编码器配置文件的修改,降低编码的复杂度,同时对算法进行优化,经测试,在小尺寸视频格式下,视频能够比较流畅的传输,单帧静态图像以及动态图像整体数据量小,图像质量比较优越,能够满足视频监控尤其是在对带宽要求比较高的场合下实现视频监控。

摘要:介绍了一种基于S3C2440硬件平台,在Linux 2.6.32内核操作系统下采用V4L2架构进行视频采集与处理的总体设计方案,通过移植开源的H.264视频编解码器对视频信号进行压缩编码,并采用RTP流媒体传输协议传输给客户端,完成对现场的网络视频监控任务。实验结果表明,该系统采集到的图像清晰,显示比较流畅,经H.264编码的视频帧数据量小,网络传输异常情况下的视频存储正常,可以适用于不同场合尤其是对带宽要求比较高的场合。

关键词:信号与信息处理,嵌入式Linux,V4L2,H.264视频,RTP协议

参考文献

[1]韦东山.嵌入式Linux应用开发完全手册[M].北京:人民邮电出版社,2008:3-9.

[2]赵苍明,穆煜.嵌入式Linux应用程序开发教程[M].北京:人民邮电出版社,2009:121-123.

[3]余兆明,查日勇,黄磊,等.图像编码标准H.264技术[M].北京:人民邮电出版社,2006:14-22.

ARM处理机 篇5

关键词:ARM;嵌入式;WEB服务器

中图分类号:TP311.52文献标识码:A文章编号:1007-9599 (2011) 06-0000-01

Design and Implementation of Embedded WEB Server on ARM Processor

Yang Jichao,Su Zikang

(China University of Mining&Technology,School of Information and Electrical Engineering,Xuzhou221008,China)

Abstract:This paper studies the software and hardware of the WEB server which based on embedded system,and its core research is samsung’s S3C2410X microprocessors.In addition,this paper also make a detailed analysis on embedded system WEB server’s every module and work process.

KeyWords:ARM;Embedded;WEB server

一、引言

随着计算机技术的发展,嵌入式系统已成为计算机领域的一个重要组成部分。以ARM系列的微处理器为例,它具有低功耗、高性能和低成本的特点。此外,随着网络技术的发展,B/S架构的产品明显体现着更为方便的特性,所以客户端/服务器的通讯方式变得越来越重要,而它的使用基础中最重要的是服务端要有一个WEB服务器,对于一般的信息管理系统或者小型系统而言,使用通用的WEB服务器无疑是一种资源的浪费。这时就可以使用功能比较简单的嵌入式的WEB服务器来进行工作以解决问题。

二、硬件平台的设计

本系统的硬件结构图如上所示,系统的核心是三星公司的S3C2410X微处理器,它集成了包括16KB数据Cache、16KB指令Cache、MMU、LCD控制器、外部存储控制器等多个部件在内,具有高集成度和低功耗的特点。同时采用大容量的FLASH存储器用以存储文件系统、linux内核以及用户的程序文件。此外,由于RS-232所定义的高、低电平信号与S3C2410X系统的TTL电路所定义的高、低电平信号完全不同,因此要使用Sipex公司出产的SP3232E芯片作为串行接口电平转换电路。

三、WEB服务器的工作流程

客户端要使用浏览器与Web服务器进行通信。WEB服务器中使用的是HTTP协议,HTTP(超文本传输协议)为标准的网络传输协议,使用可靠的TCP协议进行连接,通常采用的是端口80。HTTP是一个简单的网络协议,每次连接只能完成客户的一个请求。客户机与WEB服务器在进行交换数据之前,首先要用TCP/IP协议来建立连接,服务器端的程序建立TCP类型SOCKET并在80端口进行,服务器在接收到客户端的请求后,解析用户请求的HTTP协议头文件以及分析客户的请求,根据客户的请求来返回相应的有用数据。这些数据可以来自静态主页,也可以根据客户请求动态产生。由此可见,接收客户端请求、解析客户端请求、响应客户端请求、向客户端回送请求的结果是WEB服务器所完成的主要任务。

四、嵌入式WEB服务器的实现

在服务器工作时多个TCP连接或多个应用程序的进程可能需要通过同一个TCP协议端口传输数据。为了区别不同的应用程序进程和连接许多计算机操作,系统为应用程序与TCP/IP协议交互提供了称为套接字的接口。因此,WEB服务器的工作方式都是以套接字的机制为基础的。在WEB服务器端,首先要创建一个套接字,并将这个套接字与服务器的公认地址进行绑定。接着就要将所创建的套接字转换成相应的倾听套接字用来接受用户请求。然后创建接收客户的连接,服务器和客户机之间就可以进行通信了。本文中的嵌入式WEB服务器主要由初始化模块、侦听模块、脚本引擎模块、请求解析模块、输出模块以及命令执行模块,各模块关系如下图所示。

初始化模块是用来定义变量、创建初始套接字、设置信号量、将初始套接字与本地地址以及端口进行绑定,并且设置套接字侦听处理状态。侦听模块在接收到一个客户的连接请求后,要读取客户的请求,然后进行相应的处理,再交给解析模块来进行解析。请求解析模块是整个服务器的核心设计所在,根据客户的请求,来进行一定的处理。若客户提交的请求为静态文档时,文档要直接提交给输出模块进行输出。若请求为动态文档时,请求解析模块会调动脚本引擎模块工作,将请求的脚本更改为现场数据,再提交输出模块进行输出。若请求是带参数的执行命令时,请求解析器就要调用命令执行模块来分析命令并控制监控前端。

五、结束语

在现在日益信息化的社会中,计算机和网络已经全面渗透到日常生活的每一个角落,越来越多的信息化产品会需要接入Internet并通过WEB服务器供客户进行浏览。本文中的设计可以提供基本的WEB服务,对客户的静态和动态请求都能够进行相应且运行良好。但不足的是,本文中的系统在稳定性和安全性方面没有开展研究,系统在短时间内运行应该没有问题,但如果进行长时间的工作还需要进一步的研究。

参考文献:

[1]赵会娟.基于ARM9的嵌入式Linux开发平台构建与Boa的实现[D].成都:西南交通大学,2008

[2]宋江贵.基于ARM9的嵌入式WebServer研究应用与通信实现[D].北京:北京邮电大学,2008

[3]吴军霞.基于ARM的嵌入式Web服务器的研究[D].湖北:武汉理工大学,2007

[4]石道生,吴军霞,罗慧谦.基于ARM9的嵌入式Web服务器的研究[J].中国水运(学术版),2006,6(8)

ARM处理机 篇6

目前,在许多嵌入式产品中,对固件进行升级都是系统所必需的一个功能。在应用编程IAP,可以使用户的应用代码对微处理器的片内flash进行擦除和编程,也就是说在用户代码的运行过程当中可以对固化在flash中的程序进行更新。这样就避免了在每次进行固件升级时还要使用专门的flash烧写软件来进行擦除和编程等操作,极大地方便了嵌入式产品的固件更新。

本文以NXP公司的LPC2214处理器为平台并通过串口和上位机通信来实现IAP的功能,并对流量控制问题提出了一种解决方法。

1 IAP概述

1.1 IAP基本原理

IAP函数是固化在微处理器内部flash上的一些函数代码,最终的用户程序可以直接通过调用这些函数来对内部flash进行擦除和编程操作。IAP技术主要应用于嵌入式系统中的数据存储和在线升级过程。

ARM的LPC2214微处理器的内部flash有一个块称为boot block,位于flash的顶端,可供调用的IAP函数就位于该块中。上电后boot block被映射到内部地址空间的顶端,同样IAP函数入口地址也被映射到地址0x7ffffff0处。用户可通过跳转到该地址来调用相应的IAP函数,具体的调用方法可见文献[1]中的相关章节。

1.2 LPC2214简介

LPC2214[1]是NXP公司生产的一款32位嵌入式微处理器,是基于一个支持实时仿真和跟踪的32位ARM7TDMI-STMCPU的微控制器,并带有256K字节的高速Flash存储器。其128位宽度的存储器接口和独特的加速结构使得32位代码能够在最大时钟速率下运行。对代码规模有严格控制的应用可使用16位Thumb模式,此时代码规模可降低30%,而性能的损失却很小。

LPC2214处理器中与本文相关的部分主要是其内部sram与flash、uart0与uart1串行接口以及内部flash中的boot block,其中boot block中包含了可供调用的IAP函数。

LPC2214内部sram与flash的大小分别为16K和256K。用户的程序存放在内部flash中,一旦上电后即自动运行;而IAP的功能只能使用内部sram,所以在传送较大的文件并且串口传输速率比较高的时候需要软件来进行一定的控制。

Uart0为简单串口,只有收发功能。Uart1为全串口[2],本文中使用了RTS、DTR、CTS、DSR、RXD和TXD这6个信号,而DCD和RI 信号则没有用到。其中CTS和DSR被上位机用来向微处理器报告自身的状态,DTR和RTS用来通知上位机当前微处理器的状态。

2 现有在线升级方法分析

2.1 保留原有程序的升级方法

保留原有程序的升级方法通常将处理器的内部flash分为三个区,分别为Boot区、Low区和High区,其中Boot区包含了可完成代码升级的程序,用户代码存放在Low区和High区。用户可根据程序标志区的标志来判断当前程序是运行在High区还是Low区。当程序运行在Low区时,可对High区进行更新;反之,当程序运行在High区时可对Low区进行更新。当完成了应用程序的升级后,运行的是新的程序,但原有程序仍然存在。代码在flash上的分配如图1所示。

这种方法保证了系统不管软件升级成功与否都可以运行有效的代码。缺点是在Low区和High区中有一个区运行有效代码时,另一个区被闲置,浪费了内部flash的空间。另外当用户代码比较大时,flash上没有足够的空间来存放两个区的代码,这种方法就无法使用。

2.2 不保留原有程序的升级方法

不保留原有程序的升级方法[3]只是简单地将处理器的内部flash分为Boot区和用户代码区。同样,Boot区包含了可完成代码升级的程序。若升级成功,则运行更新后的程序,否则每次上电后都会进入等待升级的状态。与前一种方法相比,这种方法的优势在于节省了很多flash存储空间。

本文在不保留原有程序的升级方法的基础上分析了无串口协议时传输速率与编程字节数之间的关系,实现了串口传输协议并且提出了程序有效性判定的方法。根据应用的需要,还提供了在保证程序正确的前提下通过串口在线升级的优化方案。

3 在应用编程的软件升级方法

本文以ADS1.2为开发环境实现了IAP功能。由于IAP代码是Thumb代码,所以要设置编译器以支持从ARM指令集到Thumb指令集的转换[4]。

3.1 应用程序结构

由于完成升级功能的代码要对应用程序所在的flash地址空间进行擦除和编程,所以升级代码和应用程序代码必须放在flash的两个相互独立的空间内。LPC2214的内部flash的大小为256K,分为从0到17个块,其中sector 17用来存放boot block,用户程序不允许对该块进行操作,所以将升级代码放在sector 16,即地址0x0003C000~0x0003DFFF的范围内,而将应用程序代码放在从地址0x00000000开始的地方。Flash的空间分配如图2所示。

当用户需要进行软件升级时,可跳转到sector 16的地址(即0x0003C000)处执行;执行完升级代码后可通过reset或重新上电来执行更新后的程序。

3.2 无串口传输控制的在线升级过程

首先讨论在通过串口传输数据时不进行流量控制的情形。在这种情况下,由于没有串口传输协议的控制,微处理器就必须同时进行两个过程,即在从串口接收数据的同时,还要将已经接收到的数据编程到内部flash上。这种情况的升级过程如图3所示。

由于LPC2214中uart0的FIFO大小只有16字节,所以在将buffer中的数据编程到内部flash的同时,必须保证FIFO不会溢出,否则会导致上位机传来的数据丢失,使升级后的代码无法正确运行。同时LPC2214对buffer的大小也有限制,即一次只能编程512、1024、4096或者8192个字节,所以升级代码必须能确保FIFO在溢出之前就已经完成了对内部flash的编程。

假设将buffer内容编程到内部flash所需的时间为tprog,串口的波特率为v,则tprogv之间必须满足如式(1)所示的关系。

v<=16×10tprog(1)

其中,16为FIFO的大小,10为传输包的大小(包括8位数据位,1位起始位和1位停止位)。由式(1)可以得出对于不同大小的buffer所对应的最大串口波特率,如式(2)所示。一旦串口波特率超过了vmax,则在将buffer编程到内部flash以后,FIFO已经发生了溢出。

vmax=160tprog(2)

式(2)中,tprog可通过LPC2214的定时器1来进行计时,得到其对应的pclk的个数,然后转换成时间,结果如表1所示。在表1中程序运行时的微处理器频率设置为44236800Hz,对于不同的微处理器频率,表1中的数据会有所不同。

从表1可以看出,当应用程序对串口传输速率有特定要求时,buffer的大小也要受到限制。比如,当串口波特率固定为9600bps时,buffer的大小就只能为512字节或者是1024字节。通常情况下,若对串口的传输速率没有特殊要求,则使buffer的大小为512字节时始终可以达到最快的升级速度。

对于内部flash比较小的情形,只要buffer的大小和vmax满足表1所示的制约关系,软件就不需要对串口数据的传输进行多余的控制,从而使得IAP的实现更加容易,节省软件成本。此时使用LPC2214的uart0(只有收发功能)就可以完成软件升级的功能,从而使uart1能够用于其它用途。

3.3 包含了串口传输控制的在线升级过程

由表1可以知道,当串口的传输速率很高(超过57600bps)时,FIFO肯定会溢出,3.2节中所述方法就行不通了。此时就需要对串口数据的传输进行必要的控制,这可通过LPC2214的uart1控制器来实现。

在IAP程序中,有一个大小为1K字节的缓冲区用来存放接收到的数据。本文使用DTR或者RTS来控制数据的传输过程,IAP的执行过程与图3所示流程相似。其基本协议如下所示:

(1) 上位机必须把CTS和DSR置高来通知LPC2214已经就绪,并准备发送数据。

(2) 在串口初始化之后,IAP程序将DTR/RTS置高,用来通知上位机已经准备好接收数据。

(3) 当缓冲区中的剩余字节数小于200时,IAP程序将DTR/RTS置低以通知上位机停止发送数据。

(4) 当缓冲区中的剩余字节数大于200时,IAP程序将DTR/RTS置高以通知上位机可以继续发送数据。

IAP程序与上位机通过DTR或者RTS来进行通信从而控制串口数据的传输,这样就保证了在串口传输速率较高的情况下,在将缓冲区的内容编程到内部flash的同时,使FIFO不再接收数据,从而避免了FIFO溢出而导致的数据丢失。

3.4 程序有效性检测

ARM的中断向量[1]保存在地址0x00000000到0x0000001C的空间内,其中位于0x00000014的保留中断向量必须为所有剩余中断向量和的2的补码,这样就使得所有的中断向量的校验和为0。本文将这一条件作为判定程序有效性的依据。

因此,为了保证从上位机传来的程序是有效的代码,在缓冲区第一次接收完数据之后,IAP程序需计算缓冲区中前32个字节校验和,即8个中断向量的校验和。若校验和为0则将缓冲区中的内容编程到内部flash,否则报错。

3.5 应 用

本文在一款基于LPC2214微处理器的手持设备上,通过所讨论的方法实现了固件升级。用来下载的测试二进制文件大小为31788字节,根据表1得到不同buffer对应的最大波特率,然后测得的升级时间如表2所示。

由表2可以看出,在对串口传输速率没有特殊要求的情况下,buffer大小为512字节时升级所花的时间最少。当用于下载的二进制文件很大时,时间将主要取决于串口传输速率的大小,buffer不同时升级的时间差也会随文件的增大而明显增加。

以上是无传输控制时的情况,当有传输协议时,由于串口传输速率没有要求,可以使用最大的速率115200bps,测得的升级时间为2.917s,而且随着升级文件的增大,带传输控制的升级过程的时间优势将会越来越明显。

在该手持设备上,uart1(全串口)要用于其它用途,而且应用程序大小为100多K,本文折中考虑使用了uart0,即不使用传输控制,设置buffer大小为512字节,波特率为57600时,取得了较好的效果。

4 结 论

本文在基于ARM微处理器的平台上,提出了一种通过IAP和串口来升级应用程序的解决方法,使得升级程序在使用简单串口的情况下在确保程序有效性的同时能够以最快的速率传输数据,并且通过全串口传输协议来确保当串口传输速率较高时在线升级的成功。

摘要:以ARM微处理器LPC2214为平台,并结合串口实现了通过IAP(In-application Programming)进行固件升级的功能。针对不同的应用,提出了快速并且可靠的固件升级方式。

关键词:ARM,IAP,串行接口

参考文献

[1]Philips Semiconductors.LPC2114-2124-2212-2214USER MANUAL[EB/OL].http://www.zlgmcu.com/philips/arm/lpc2114-2124-2212-2214-02-user-cn.pdf,2004,5.

[2]Electronic Industry Association,EIA-232-E.http://en.wikipedia.org/wiki/RS-232.

[3]姜晓梅,等.基于ARM的IAP在线及远程升级技术[J].计算机应用,2008,(2):519-521.

ARM处理机 篇7

Cortex-M0+基于32位ARMv6内核架构, 支持Thumb/Thumb-2子集ISA, 单核心, 采用低成本的90nm LP工艺制造, 核心面积区区0.04平方毫米, 每MHz单位频率消耗的电流、功耗分别仅有9μA、11μW, 是当今任何8/16位微处理器的大约三分之一, 而性能上又比它们高出许多 (1.77 CoreMark/MHz、0.93 DMIPS/MHz) , 这也是古老的8/16位系统升级的好机会。

从命名上就可以看出, Cortex-M0+来源于Cortex-M0, 后者已经得到了领先半导体厂商的50多份授权, 同时加入了多项全新设计的特性, 包括加速GPIO和外围设备访问的单循环IO、改进调试和追踪能力、减少每指令循环 (IPC) 数量和改进Flash访问的两级流水线、更是纳入的节能降耗技术等等。

Cortex-M0+继续支持简单易用的C语言友好编程模式, 兼容现有的Cortex-M0处理器工具和RTOS, 也享受Cortex-M整个家族生态系统和软件兼容性的完整支持, 可以轻松升级到更高性能的Cortex-M3/4处理器。

ARM处理机 篇8

1 RISC架构

RISC的英文全称为“Reduced Instruction Set Computing”,中文即“精简指令集”,它的指令系统相对简单,它只要求硬件执行很有限且最常用的那部分指令,大部分复杂的操作则使用成熟的编译技术,由简单指令合成。目前在中高档服务器中普遍采用这一指令系统的CPU,特别是高档服务器全都采用RISC指令系统的CPU。在中高档服务器中采用RISC指令的CPU主要有Compaq(康柏,即新惠普)公司的Alpha、HP公司的PA-RISC、IBM公司的Power PC、MIPS公司的MIPS和SUN公司的Spare。RISC架构服务器是指采用精简指令系统计算结构(RISC)的服务器,与IA架构服务器(Intel Xeon处理器、AMD Opteron处理器)比较最大的区别在于:RISC架构服务器一般应用于中端UNIX领域,其在安全性、可靠性方面具有不言而喻的优势。在嵌入式处理器设计领域,RISC已经成为处理器结构设计的必然选择。

2 嵌入式微处理器

嵌入式系统是以应用为中心,以计算机技术为基础,软硬可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。并且该系统是以提高对象体系智能性、控制力和人机交互能力为目的,通过相互作用和内在指标评定的,嵌入到对象体系中的专用计算机系统。而嵌入式微处理器是嵌入式系统的核心部件,是决定嵌入式系统功能强弱的主要因素,也决定了嵌入式系统的应用范围和开发复杂度。那么嵌入式微处理器与通用微处理器有什么区别呢?嵌入式微处理器是具备强的中断、IO、内存和能效管理能力,具有定制多类体系架构的特征,适应计算处理性能的微处理器。

3 ARM微处理器

ARM(Advanced RISC Machines),既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。

ARM公司成立于1990年11月,全称是“Advanced RISC Machines Ltd.”,它是由英国Acorn公司提供技术和12名工程师、美国苹果电脑和VLSI Technology(目前已被飞利浦收购)出资合手组建的美英混血公司。是微处理器行业的一家知名企业,设计了大量高性能、廉价、耗能低的RISC处理器、相关技术及软件。技术具有性能高、成本低和能耗省的特点。适用于多种领域,比如嵌入控制、消费/教育类多媒体、DSP和移动式应用等。

4 ARM微处理器应用领域

到目前为止,ARM微处理器及技术的应用几乎已经深入到各个领域:

1)工业控制领域:作为32的RISC架构,基于ARM核的微控制器芯片不但占据了高端微控制器市场的大部分市场份额,同时也逐渐向低端微控制器应用领域扩展,ARM微控制器的低功耗、高性价比,向传统的8位/16位微控制器提出了挑战。

2)无线通讯领域:目前已有超过85%的无线通讯设备采用了ARM技术,ARM以其高性能和低成本,在该领域的地位日益巩固。

3)网络应用:随着宽带技术的推广,采用ARM技术的ADSL芯片正逐步获得竞争优势。此外,ARM在语音及视频处理上行了优化,并获得广泛支持,也对DSP的应用领域提出了挑战。

4)消费类电子产品:ARM技术在目前流行的数字音频播放器、数字机顶盒和游戏机中得到广泛采用。

5)成像和安全产品:现在流行的数码相机和打印机中绝大部分采用ARM技术。手机中的32位SIM智能卡也采用了ARM技术。

除此以外,ARM微处理器及技术还应用到许多不同的领域,并会在将来取得更加广泛的应用。

5 ARM微处理器的特点

采用RISC架构的ARM微处理器一般具有如下特点:

1)体积小、低功耗、低成本、高性能;

2)支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容8位/16位器件;

3)大量使用寄存器,指令执行速度更快;

4)大多数数据操作都在寄存器中完成;

5)寻址方式灵活简单,执行效率高;

6)指令长度固定;

6 ARM微处理器产品

1)ARM7微处理器系列

ARM7系列微处理器为低功耗的32位RISC处理器,最适合用于对价位和功耗要求较高的消费类应用。

ARM7系列微处理器的主要应用领域为:工业控制、Internet设备、网络和调制解调器设备、移动电话等多种多媒体和嵌入式应用。

2)ARM9微处理器系列

ARM9系列微处理器在高性能和低功耗特性方面提供最佳的性能。

ARM9系列微处理器主要应用于无线设备、仪器仪表、安全系统、机顶盒、高端打印机、数字照相机和数字摄像机等。

ARM9系列微处理器包含ARM920T、ARM922T和ARM940T三种类型,以适用于不同的应用场合。

3)ARM9E微处理器系列

ARM9E系列微处理器为可综合处理器,使用单一的处理器内核提供了微控制器、DSP、Java应用系统的解决方案,极大的减少了芯片的面积和系统的复杂程度。ARM9E系列微处理器提供了增强的DSP处理能力,很适合于那些需要同时使用DSP和微控制器的应用场合。

ARM9系列微处理器主要应用于下一代无线设备、数字消费品、成像设备、工业控制、存储设备和网络设备等领域。

ARM9E系列微处理器包含ARM926EJ-S、ARM946E-S和ARM966E-S三种类型,以适用于不同的应用场合。

4)ARM10E微处理器系列

ARM10E系列微处理器具有高性能、低功耗的特点,由于采用了新的体系结构,与同等的ARM9器件相比较,在同样的时钟频率下,性能提高了近50%,同时,ARM10E系列微处理器采用了两种先进的节能方式,使其功耗极低。

ARM10E系列微处理器主要应用于下一代无线设备、数字消费品、成像设备、工业控制、通信和信息系统等领域。

ARM10E系列微处理器包含ARM1020E、ARM1022E和ARM1026EJ-S三种类型,以适用于不同的应用场合。

5)ARM11

ARM11是ARMv6体系结构的第一个实现,ARM11微结构的设计目的是为了高性能,而实现这一目的流水线是关键。ARM11微结构的流水线与以前的ARM不同(如图1),它包含8级流水线,分别为预取1、预取2、解码、发送、转换/MAC1、执行/MAC2、内存访问/MAC3和写入等八个单元,使贯通率比以前的提高40%。

6)Secur Core微处理器系列

Secur Core系列微处理器专为安全需要而设计,提供了完善的32位RISC技术的安全解决方案,因此,Secur Core系列微处理器除了具有ARM体系结构的低功耗、高性能的特点外,还具有其独特的优势,即提供了对安全解决方案的支持。

Secur Core系列微处理器主要应用于一些对安全性要求较高的应用产品及应用系统,如电子商务、电子政务、电子银行业务、网络和认证系统等领域。

Secur Core系列微处理器包含Secur Core SC100、Secur Core SC110、Secur Core SC200和Secur Core SC210四种类型,以适用于不同的应用场合。

7)Strong ARM微处理器系列

Inter Strong ARM SA-1100处理器是采用ARM体系结构高度集成的32位RISC微处理器。它融合了Inter公司的设计和处理技术以及ARM体系结构的电源效率,采用在软件上兼容ARMv4体系结构、同时采用具有Intel技术优点的体系结构。

Intel Strong ARM处理器是便携式通讯产品和消费类电子产品的理想选择,已成功应用于多家公司的掌上电脑系列产品。

8)Xscale处理器

Xscale处理器是基于ARMv5TE体系结构的解决方案,是一款全性能、高性价比、低功耗的处理器。它支持16位的Thumb指令和DSP指令集,已使用在数字移动电话、个人数字助理和网络产品等场合。Xscale处理器是Intel目前主要推广的一款ARM微处理器。

7 结语

ARM将其技术授权给世界上许多著名的半导体、软件和OEM厂商,每个厂商得到的都是一套独一无二的ARM相关技术及服务。利用这种合伙关系,ARM很快成为许多全球性RISC标准的缔造者。目前,总共有30家半导体公司与ARM签订了硬件技术使用许可协议,其中包括Intel、IBM、LG半导体、NEC、SONY、菲利浦和国民半导体这样的大公司。至于软件系统的合伙人,则包括微软、升阳和MRI等一系列知名公司。同时随着新的应用的不断产生,新的嵌入式微处理器也层出不穷,可见ARM微处理器的还有很大的发展空间。

参考文献

[1]周立功.ARM嵌入式系统基础教程[M].北京:北京航空航天工业大学出版社,2005.

ARM处理机 篇9

关键词:节水灌溉,ARM嵌入式系统,WinCE,土壤含水率

0 引言

水资源危机已经成为全球性的突出问题,越来越受到世界各地的重视和关注。我国是世界13个严重缺水的国家之一,人均水资源尚不足世界人均水平的1/4。据资料显示,我国用水量的70%消耗在农业方面,而大部分农业用水又用于农田灌溉,且在农田灌溉方面绝大部分农田采用的是效率极差的漫灌方式,使我国农业用水系数仅为0.40左右,而一般发达国家是0.7~0.8[1]。因此,发展节水灌溉技术,提高灌溉水的利用率,是解决未来水资源短缺的根本出路,也是现代农业的基本要求[1,2]。

目前的灌溉控制系统多采用PLC/单片机来完成;但是,PLC/单片机的计算能力、资源管理能力、需水诊断能力等有限,且反应速度慢、可靠性相对低、外围设计电路复杂、易受到外界因素的干扰、系统更新不便,因此现存的灌溉系统大多数功能比较简单、精度低、可靠性差[3]。

嵌入式ARM处理器具有低功耗、高性能、程序执行速度快、抗干扰能力强、系统硬件容易扩展等优点,同时还具有实时性、多任务、多线程以及友好的人机交互界面。其支持的操作系统中WinCE被广泛应用于系统开发中,它具有Windows一样的友好的开发界面及软件设计平台。近年来,基于ARM WinCE的嵌入式系统被广泛地应用于控制领域,这使得以ARM为控制核心、以WinCE为嵌入式系统的灌溉自动控制系统的实现成为可能。

基于上述,本文设计了一套节水灌溉闭环自动控制系统,研究采用高性能ARM处理器作为灌溉自动控制系统的控制核心,利用土壤水分传感器检测装置实现对大田土壤含水的实时采集;然后,通过ARM控制系统内置的灌溉控制程序,对灌溉时间和施水量进行决策分析,确定是否需要灌溉;最后,通过控制电磁阀对水泵的控制,进而实现灌溉自动化。与此同时,该系统具有人性化的人机交互界面,能够实现灌溉方式的控制、参数设定、数据管理及登录功能。其中,参数设定可以根据不同作物、不同时期对水分的需要,对需水阈值进行设定。而数据管理更是具有提供数据查询、数据导出等功能,更会给科学研究提供数据支持。

1 系统理论依据

李文华等研究发现,不同土壤水分处理对树种的茎重、根重、总生物量影响显著,作物的叶片相对含水量和单株耗水量均随土壤水分的降低而降低,只有当土壤含水量高于某一阈值时,作物才能存活,在此之上更高的某一阈值时,作物才能有较大的生物量[4,5]。本系统设计的理论依据在于对土壤含水量的实时检测及判定,即对土壤含水量生存阈值的判定,实现灌溉的自动控制。

大量试验结果表明,在农田灌溉过程中,土壤含水量及水势变化具有入渗排气、渗吸增能、吸脱水减能和缓慢脱水减能的阶段性特征。当土壤处于水分亏缺状态急需补充水分(土壤吸水)时,土壤水势梯度大于1.0cmH2O/cm;当土壤水分得到充分补给达到过水(土壤含水量不变,且水通量不为零)状态时,土壤水势梯度等于1.0cmH2O/cm;当土壤中水分过剩而处于脱水(流出大于流入水量)状态时,土壤水势梯度小于1.0cmH2O/cm。由此,根据上述特征指导农田灌溉调控节水,其中土壤层下部(深度15~60cm)的水势梯度等于或小于1.0cmH2O/cm可作为监测及预警节水灌溉的阈值[6]。在实际应用中,本系统分别选择中层和下层土壤的含水率变化作为灌溉的起始阈值和停止阈值,实现农作物需水的自动灌溉。

2 系统整体设计

2.1 系统组成及功能

系统结构如图1所示。

其主要由人机交互界面、嵌入式控制器、土壤水分传感器和电磁阀控制器等组成。

土壤水分传感器主要用于准确、实时地检测土壤含水量;电磁阀控制器主要用于对水泵的启/闭进行控制。ARM控制器是控制系统的核心,它通过对土壤水分含量的分析决策,进而发送命令,控制电磁阀控制器的开/关,传感器与ARM控制器之间利用RS-485总线进行通讯。传感器和电磁阀控制器都有多组,分布在大田中,用来检测不同地区的土壤水分信息和对不同地区水泵的控制。

系统主要功能包括以下几方面:

1)系统能对土壤含水量进行实时监测;

2)系统通过预定的含水量阈值来判定;

3)控制电磁阀、水泵进行灌溉,实现对大田灌溉的自动化控制;

4)全中文人机交互界面,动态显示工作状态。

2.2 系统工作过程

ARM控制器定时通过RS-485总线向相应的土壤水分传感器发送数据采集命令,水分传感器收到命令后对土壤含水量数据进行采集;之后通过RS-485总线将采集的数据返回给灌溉控制器;ARM控制系统按照已经设定的作物含水量阈值的判定,从而控制电磁阀的开/关,进而控制水泵启动/关闭;ARM控制系统不断重复之前的过程,进行含水量的不断检测,如此反复,构成了一个闭环的自动灌溉控制系统。

系统采用博创8寸带触摸屏的TFT真彩LCD显示屏作为人机交互界面,ARM9为控制核心,利用每隔一定时间获取一次土壤水分含量,在ARM中进行判断(利用作物生存阈值):若是含水量低于生存阈值,即发出灌溉命令,控制电磁阀开启控制水泵灌溉;在这过程中不断通过传感器检测水分含量,超过生存阈值即停止灌溉。

3 灌溉系统的硬件设计

灌溉自动控制系统的硬件设计在整个系统设计中是一个重要的环节,也是系统软件设计的基础。系统的硬件框图如图2所示。

灌溉控制系统使用32位SAMSUNG ARM9 S3C2410处理器为核心,利用IMP811T复位电路实现手动复位和欠压自动复位功能。土壤水分传感器先将A/D转换电路相连,再通过总线与处理器相通讯,其中传感器选用TM-100MLV,其输出电压0~2V,精度<2%完全可以满足系统设计要求。由于I/O直接出来的信号较弱,不足以驱动电磁阀开/关,必须添加中间继电器,所以先将系统I/O口与中间继电器相连,再与电磁阀相连实现灌溉控制。人机交互界面是管理人员与控制系统之间交互的窗口,为了实现人与系统更人性化交互,系统利用博创有触摸功能的8寸640×480TFT真彩LCD来实现;对数据的存储选用AT24C01芯片实现。与此同时,还扩展了外接键盘接口、报警电路,完全满足应用需求。

4 灌溉系统的软件设计

4.1 WinCE系统的移植

WinCE是一个功能强大的实时嵌入式操作系统,而且提供了众多强大的工具,允许用户用较短的时间开发出下一代智能化小体积连接设备。开发工具Platform Builder4.2是一个完全集成的开发环境(IDE),并且包括一个SDK (软件开发工具包)导出工具等。

WinCE移植到ARM系统是本自动控制系统的基础,也是一个重要环节,其移植的主要步骤如下:

1)安装Platform Builder4.2。Platform Builder4.2是为基于Microsoft Windows CE.NET操作系统构建定制嵌入平台而提供的集成开发环境。

2)在Platform Builder4.2集成环境中实现对Wince系统的制定。其中,包括创建项目、添加组件、测试、调试,以及生成NK.bin操作系统镜像文件等;因需要在平台上进行软件开发需要安装BSP(板级支持包);通过Visual Studio2005和Platform Builder4.2配合,可由Platform Builder4.2 导出SDK (软件开发工具包)。

3)将Windows CE操作系统镜像烧写到ARM系统的FLASH存储芯片中,包括烧写NBOOT,TOC,EBOOT;配置EBOOT参数;通过Platform Builder4.2下载WinCE内核等步骤完成对Wince的移植。

4.2 应用软件

系统应用软件部分使用Visual Studio2005集成开发环境,Visual Studio2005是支持Microsoft、Net Framework版本的应用程序开发平台。Visual Studio2005是一个嵌入式集成开发环境,其所开发的应用程序可在WinCE4.2操作系统上运行。控制平台主要包括实时诊断模型程序、控制灌溉模型程序的编写和基于MiniGUI的系统控制人机交互界面的开发设计等。

图3是软件设计框图。软件中一共设置4种功能:模式设定功能、参数设置功能、管理功能和登录功能。其中,模式设定功能用来设定自动灌溉或者是人工设定灌溉;参数设置功能主要包括不同种类的作物的生存阈值设定,传感器初始化设定和软件相关参数设定;管理功能主要用来管理数据,完成数据的存储和导出,以及将历史数据画成曲线显示的功能;登录功能包括用户登录和修改密码。

5 实验结果与分析

5.1 实验环境

为了验证本系统的工作状况,在西北农林科技大学的实验田进行了系统的测试。在距地表8,12,20cm处各埋设一个TM-100MLV型土壤水分传感器,用于监测附近土壤水分的变化情况以及灌溉水的下渗和地下水的向上补给情况。在系统控制时,保证中层土壤的含水率稳定在所设灌溉阈值附近,下层土壤含水率在灌溉前后保持稳定。

5.2 实验结果与分析

利用TM-100MLV型土壤水分传感器所获取的各层土壤含水率如图4所示。图4反应了2010年11月15 日-17 日大田土壤含水率的变化情况, 自上而下的3 条曲线分别为土壤上层、中层和下层的含水率变化曲线。

通过该图4可以看出,上层土壤含水率变化较大,随着土壤深度逐渐增加,土壤含水率变化减缓,所得结果与理论土壤含水率变化特点相符合。另外,在15日和16日,土壤中层含水率两次达到系统所设置的灌溉阈值,系统开启电磁阀进行灌溉,当系统检测到下层土壤含水率上升达到一定阈值时,停止灌溉,达到了节水目的。由此证明本系统可以将土壤中的含水率控制在灌溉设定值附近, 既保证作物正常生长所需要的水分环境, 又不至于出现过量灌溉现象, 基本上防止了水分通过下层渗漏流失造成浪费。

6 结论

基于ARM处理器的灌溉自动控制系统,不仅能够采集农田中土壤水分传感器的数据信息,还能够实现存储、导出共享。初步实验结果表明,该系统工作稳定可靠,能正确采集传感器信息,并实现灌溉自动控制。该系统的实现是下一步田间试验的关键步骤,也是实现灌溉自动控制系统的核心工作。通过未来大田实验数据对系统进行验证和改进,能开发出更加贴合实际应用及功能更加完善的灌溉自动系统。因此,该系统对我国农业节水灌溉自动化的进程有一定的推进作用,对相关课题的研究开发工作具有一定的参考价值。

参考文献

[1]李世英.对我国节水灌溉技术发展的几点思考[J].节水灌溉,2001(1):56-58.

[2]郭振宇.我国节水灌溉设备生产企业的现状与发展建议[J].节水灌溉,2004(4):50-52.

[3]张兵,袁寿其,成立,等.基于PLC的全自动灌溉控制系统的设计[J].农田水利,2004(3):16.

[4]云建英,杨甲定,赵哈林.干旱和高温对作物光合作用的影响机制研究进展[J].西北作物学报,2006,26(3):641-648.

[5]李文华,刘广权,马松涛.干旱胁迫对苗木蒸腾耗水和生长的影响[J].西北农林科技大学学报(自然科学版),2004,32(1):61-65.

ARM处理机 篇10

嵌入式图像处理在军事领域、自动化生产、航天航空、通信领域、电子医疗、工农业生产、公共安全等领域得到了越来越广泛的应用。嵌入式图像处理技术与传统的PC机图像处理技术相比,其最为显著的优点是嵌入式系统具有体积小、功耗低、成本低、性能高、 速度快等。基于ARM的嵌入式图像处理系统的实现,体现出了其稳定性好、易于开发维护、通用性强、成本低等特点。嵌入式系统的强大的兼容性,模块化设计,使其开发的时间短,易于维护,嵌入式图像处理系统的小巧性,使其配置拆装灵活,设计出实时的,能够高速处理图像数据的嵌入式通用图像处理系统是十分有研究意义的[2]。 本研究设计的通用图像处理系统能实现图像采集、显示、保存、关闭,并能对图像预处理,如,图像灰度化、二值化、腐蚀、膨胀、锐化、直方图均衡化、平滑、边缘检测等。

2系统硬件平台的搭建

如图1所示,本系统通过摄像头进行图像采集,并将采集数据送至ARM处理器进行图像处理,配载512M的DDR2作为系统内存和512M的Nand Flash为系统存储器以挂载嵌入式Linux操作系统和运行图形用户应用程序,期间通过LCD显示屏将采集图像及处理过程实时显示给用户,并可以通过触摸屏进行人机交互,处理结果既可以保存于掉电数据不丢失的Flash存储器中,也可以利用USB接口或SD卡接口将图像存储于U盘和SD卡中,以备后续查询和操作。 为了调试程序、烧写系统以及与PC机的通信,保留了USB接口、USB转串口和网线接口以连接到上位PC机,最后加入电源管理,组成了整个硬件开发平台[3]。

本系统选用三星公司生产的S5PV210微处理器,运行最大频率可达1GHz,处理器内部为64/32位总线结构,32/32KB一级缓存, 512KB二级缓存。它在图像处理方面有独特的优势:S5PV210的视频编码支持MPEG-4/H.263/H.264等格式,解码支持MPEG2/ VC1/Xvid等格式,支持高清HDMI TV输出;内嵌了图形加速引擎(SGX540),对图像处理提供强大的硬件加速支持。本系统选用的摄像头是最高分辨率为640×480的彩色USB摄像头,其传感器为CMOS,最大帧数为30帧/S.系统选用的显示器是最大分辨率为800 ×480的彩色液晶电容屏。摄像头通过ARM外扩的USB接口与系统连接,液晶屏通过薄膜线与ARM外扩的薄膜线卡槽相连进行数据传送[1]。

3系统软件平台的设计

嵌入式软件设计包括嵌入式操作系统和图形用户应用程序,在设计视频图像采集程序之前,应预先移植嵌入式操作系统。本研究搭建的是Linux嵌入式操作系统环境。通过使用arm-linux-gcc建立交叉编译环境、移植Bootloader、移植Linux内核、制作根文件系统等步骤,完成ARM平台上嵌入式Linux系统的搭建[1]。然后在PC上基于Qt编写ARM平台下的图形用户应用程序,实现的主要内容包括:人机交互界面的编写,提供友好的人机交互平台,方便用户操作;图像的采集、显示、保存和关闭功能;编写图像处理算法对采集的图像进行去噪、灰度化、二值化、锐化、边缘检测等处理。图2是软件平台结构:

3.1视频图像采集程序的设计

本视频图像采集程序是基于Video 4 Linux 2(V4L2)接口进行设计的。V4L2是V4L的改进版。V4L2是Linux系统中关于视频设备的内核驱动,其主要用来图片、视频、音频等信息的采集。目前V4L2被广泛应用于远程会议、可视电话、视频监控以及其他多种嵌入式多媒体终端。在Linux系统下,所有的外设都被当作一种文件,即“设备文件”,USB摄像头也一样。V4L2提供了一系列的接口函数,用于TV卡、视频捕捉卡和USB摄像头等视频设备的应用编程[4]。V4L2为USB摄像头提供了基本的I/O操作函数open、read、 write、close,并把这些函数定义在file_operations结构体中。本系统采集视频图像程序的流程如图3。

通常来说,应用程序和设备有3种交换数据的方法,直接read/ write、用户指针和内存映射三种。很多设备带有自己的数据缓冲区, 或者驱动本身在内核空间中维护一片内存区域,为了让用户空间程序安全的访问,内核往往要从设备内存或者内核空间内存复制数据到用户空间,从而便多了复制内存数据这一环节,增加了系统处理时间。本设计采用内存映射的方法,用mmap函数把在内存空间中获取的视频帧映射到用户空间。应用程序在调用缓存数据时,缓存符合先进先出的模式。采集图像时,利用两帧图像的缓存,一帧图像缓存存完后发送出去,将第二帧图像覆盖前一帧,交替使用,从而实现了视频图像的实时采集。

3.2图像预处理

图像预处理是指对原始图像进行修复、增强、二值化、色彩空间转换等操作,以便于执行后续的处理。当前预处理相关的主要方法有:图像去噪、图像锐化和边缘检测等。

3.2.1图像灰度化

考虑到彩色的图像的数据量较大,而灰度图像的数据量较小但图像的边缘、形状等特征依然存在,为了在不影响后续的图像处理的要求下,减小系统的数据处理量、增加系统的处理速度,本设计中,把ARM平台采集的彩色的视频图像通过灰度化处理将其变成灰度图像[5]。设计采用加权平均法,对彩色图像的三个分量R、 G 、 B分别设置不同的权值,然后求取它们的加权平均值,如公式(1)所示:

其中f(x, y) 表示灰度图像在(x, y) 处的灰度值。利用Qt里的q Gray()函数可以直接实现图像灰度化,图4(b)为灰度化的图像。

3.2.2图像二值化

式中的T表示二值化阈值,处理后的二值化图像中0表示黑色, 255表示白色。本设计T取80。图5(a)为二值化后的图像。

3.2.3图像去噪

本系统图像噪声的来源有三个方面:1)光电、电磁转换过程中引入的噪声;2)CMOS图像传感器单像素模数转换的误差和采集图像的不稳定性;3)由物理量的不连续性引起的自然起伏性噪声。本系统的图像平滑采用邻域平均法对原始图像中的噪声进行消除。

邻域平均法是一种简单的空域平滑滤波技术,可以看作是平滑线性滤波器即均值滤波,设有一幅N N的原始图像f(x, y) , 经过邻域平均法处理后的图像为g(x, y) ,如公式(3)所示。

其中, a b (n 1) / 2 , w(s,t) 为滤波系数,本设计n 3 , 即选用33模板

使用邻域平均法对图像去噪后会使图像略微模糊,但图像变得更加平滑。去噪后的图像如上图5(b)所示。

3.2.4图像锐化

图像锐化就是补偿图像的轮廓,直接图像的边缘及灰度跳变的部分,使图像变得清晰,图像平滑往往使图像中的边界、轮廓变得模糊,经过图像锐化处理,图像的边缘、轮廓线以及图像的细节会变得清晰[6]。本设计设置一个阀值T,像素的RGB分量梯度大于T,则像素的RGB分量加上某一个值a,若加上a后像素的RGB分量大于255, 则RGB分量取为255。

设有一幅N N的原始图像f(x, y) , 经过锐化处理后的图像为g(x, y) ,公式如下。

先利用差分方程计算梯度 f :

本设计T 100 , a 120 ,锐化后的图像如图6(a)所示。

3.2.5边缘提取

其中, Gy为垂直方向边缘检测的像素, Gx水平方向边缘检测的像素, g(x, y) 处的像素取为水平方向与垂直方向边缘检测到的(x,y)点处像素绝对值中的最大值。处理后的图像如上图6(b)所示。

4结语

本研究设计了以S5PV210为核心的嵌入式图像处理系统,首先搭建系统的硬件平台与软件平台,然后在Qt上编写基于Video 4 Linux 2(V4L2) 视频图像采集与处理程序,对采集到的图像做各种处理,并对一些图像处理算法做了改进。实现结果验证了该系统的可靠性,该系统能实时、高速处理图像数据。本研究设计的基于ARM的嵌入式图像处理系统可用于各领域的图像处理,并对研究手持式、便携式的图像处理具有很大的参考价值。

参考文献

[1]邱文胜,牛丽,苏秉华,王源圆.基于ARM的嵌入式超分辨率复原系统设计[J].深圳大学学报(理工版),2015(3):311-316.

[2]王学宾.于ARM的嵌入式图像处理技术的研究[D].河北工业大学,2012.

[3]吴健.基于ARM的嵌入式USB图像采集与处理系统[D].合肥工业大学,2012.

[4]张欢欢.基于嵌入式图像处理的仪表智能识别技术研究[D].浙江理工大学,2015.

[5]谢浪平.基于ARM的视频图像采集与处理系统的设计与实现[D].湖南大学,2014.

上一篇:教材体系下一篇:鉴定能力