ARM的发展战略

2024-05-23

ARM的发展战略(通用9篇)

ARM的发展战略 篇1

随着网络技术及现代通信技术的飞速发展, 嵌入式系统在相关领域的重要性也备受关注, 特别是ARM嵌入式微处理器, 其不仅成本低、体积小, 而且性能卓越且功耗低, 因而得到了广泛的应用和发展。

1 ARM嵌入式微处理器相关内容概述

⑴ARM。ARM是微处理器相关领域一家知名度较高的企业, 该企业设计了许多性能高、功耗低的廉价处理器及各种软件。可以这么说, ARM代表的不仅是一个企业, 更代表了一种技术、一种微处理器, 甚至一种产业的发展模式。

⑵ARM微处理器的种类。目前, 有关ARM微处理器应用较多的有ARM7、ARM9、ARM9E、ARM10及Strong ARM等系列。其中, ARM7系列在多媒体、嵌入式设备及无线设备中得到了广泛的应用;ARM9系列在引擎管理、安全系统、各种仪表仪器、打印机及网络电脑中得到了广泛应用;ARM9E系列是一种综合处理器, 因而加强了数字信号方面的处理功能, 因此, 在需DSP及微控制器相结合的情况下使用, 同实时系统开发需求相适应;ARM10系列的核心, 即通过向量浮点单元进行高性能浮点解决方案的提供, 以提高处理器的浮点运算功能及其整型性能;Strong ARM系列将Intel技术同ARM结构相结合, 以便为手提式通信以及电子设备的消费提供科学的解决方案。

⑶ARM微处理器的特点。ARM微处理器具有以下特点:一是体积较小、功耗和成本较低, 且性能较高;二是其支持Thumb/ARM双指令集, 因此, 可以较好地进行8位/16位器件的兼容;三是其使用了大量寄存器, 因而指令的执行速度相当快;四是许多数据操作均完成于寄存器之中;五是寻址的方式十分灵活和简单, 因此执行率相当高;六是指令的长度较为固定。

2 ARM嵌入式微处理器的发展及应用

目前, ARM是嵌入式技术中使用最为广泛的一种。在市场需求的推动下, ARM嵌入式技术得到了飞速的发展, 而且在市场中占据相当大的份额。在2003年嵌入式技术产品中, 全世界的产值高达2000亿美元, 潜在产值估计超过1万亿美元。此外, 还有报告表明, 在计算机芯片的市场中, ARM嵌入式设备生产的计算机芯片量达到每年十几亿个, 占总量的八成到九成, 远远超过了台式机或便携机生产的芯片量。如今, 随着ARM嵌入式技术的不断发展和应用, ARM嵌入式微处理器也已经发展成为应用最为广泛的嵌入式微处理器。ARM嵌入式技术及其微处理器已深入到各领域中来。

⑴工业化控制领域。ARM嵌入式微处理器是32位RISC架构, 以此为基础的微控制器芯片的市场份额已经占到微控制器高端市场中绝大部分, 于此同时, ARM嵌入式微处理器正逐步朝着低端应用领域中发展, 由于ARM嵌入式微处理器功耗低、性价比高, 因此, 8位/16位的传统微控制器正面临着巨大的挑战。

⑵无线通信领域。如今, 85%以上的无线通信设备已采用了ARM嵌入式微处理器, ARM因其低成本及高性能已经在此领域中占据了绝大多数的市场份额。

⑶网络应用领域。宽带技术日益推广和应用, 推动了ARM技术的崛起, 与此同时, ARM嵌入式微处理器在视频及语音处理方面正在逐步进行优化, 并得到了广泛的支持, 因此也为DSP的应用提出了挑战。

⑷电子消费类产品。目前, 有关ARM嵌入式微处理器已经在当前极为流行的数字机顶盒、游戏机以及数字音频播放器等产品中获得了广泛的应用。

⑸成像及安全类产品。如今, 多数数码相机及高端打印机中也应用了ARM嵌入式微处理器, 不少手机中所使用的32位SIM卡采用的也是ARM嵌入式微处理器。同时, ARM嵌入式技术及其微处理器还在许多领域中得到了应用, 相信其未来发展前景必将更为广阔。

3 ARM嵌入式微处理器未来发展所面临的挑战

在如今这个信息化和数字化时代, 有关ARM嵌入式产品得到了普遍的关注和广泛的应用, 其面临着各种发展机遇的同时, 市场也向ARM嵌入式微处理器提出了更多挑战。例如, 要求ARM产品能够适应功能密度的不断增长, 网络联接更加灵活, 适应移动化需求, 可以对多媒体信息进行处理, 当然, 最重要的是应当能够对付激烈逐步加剧的市场竞争。由于ARM嵌入式产品多数同Internet相孤立, 因此, 为适应时代需求, 如何将ARM嵌入式系统同Internet相结合是如今摆在其面前的巨大挑战。

当今ARM嵌入式微处理器的发展趋势为标准化、便携化和平台化, 高效率的操作系统、智能管理的电源、超强的互联网功能以及单系统芯片是未来ARM嵌入式技术发展的方向。虽然ARM嵌入式技术的地位越来越重要, 但是ARM嵌入式技术要适应现代化网络的步伐, 还需要在硬件和软件上进行改革。增加网络接口和网络支持模块, 使用ARM嵌入式技术浏览器, 解决上网的地点问题。紧密结合软硬件设备, 简化核心部件, 降低成本, 实现资源的最佳化配置, 优化各个软件性能。

4 结语

工业半导体技术的飞速发展, 也必将带动ARM嵌入式微处理器的不断进步, 并扩大ARM嵌入式微处理器的应用范围和领域。因此, ARM嵌入式技术的未来将更加辽阔, 产品产值也将会迅速增加, ARM嵌入式微处理器也将会给人类带来科技的力量和生活美好。

摘要:在如今这个信息化时代, ARM嵌入式系统在各个领域均得到了广泛的应用。本文从ARM的概念入手, 就ARM嵌入式微处理器的相关内容进行了概述, 并重点就ARM嵌入式微处理器的应用及发展情况, 以及未来发展过程中所面临的挑战等进行了分析。

关键词:ARM,嵌入式微处理器,发展,挑战

参考文献

[1]郑文波, 曹金安.嵌入式系统的产业化发展——市场、技术与前景[J].自动化博览, 2011 (1) :17-19.

[2]张春生, 徐志军.基于嵌入式实时操作系统uc/os-II的数据采集系统的设计[J].舰船电子对抗, 2010 (2) :36-39.

ARM的发展战略 篇2

一、ARM简介

ARM 公司是一家IP供应商,其核心业务是IP核以及相关工具的开发和设计。半导体厂商通过购买ARM公司的IP授权来生产自己的微处理器芯片。由此以来,处理器内核来自ARM公司、各芯片厂商结合自身已有的技术优势以及芯片的市场定位等因数使芯片设计最优化,从而产生了一大批高度集成、各据特色的SOC芯片。

ARM微处理器具有以下特点:采用RISC指令集、使用大量寄存器、ARM/THUMB指令支持、三/五级流水线具有低功耗、低成本、高性能等。

到目前为止,ARM公司的IP核已经由ARM7,ARM9发展到今天的ARM11版本,ARM微处理器及技术的应用已经广泛深入到国民经济的各个领域, 如工业控制领域、网络应用、消费类电子产品及成像和安全产品等领域。

鉴于ARM7所具备的强大功能完全可以满足本次设计要求,本次设计仍使用ARM7系列芯片。

二.步进电机细分控制方案

1、步进电机细分技术简介

细分驱动技术在七十年代中期由美国学者首次提出,基本原理是将绕组中的电流细分。由常规的矩形波供电改为阶梯波供电,此时绕组中的电流将按一定的阶梯顺序上升和下降,从而将每一自然步进行细分。步进电机细分控制的本质是通过对励磁绕组中的电流控制,使步进电机合成磁场为均匀离散化的圆形旋转磁场。采用细分驱动技术可以改善步进电机的运行品质,减少转矩波动、抑制振荡、降低噪音、提高步距分辨率。

2、硬件框图设计

系统总体硬件框图设计如图2-1所示:

0

图2-1总体设计框图

3、软件总体设计流程图

图2-2 软件设计流程图

4、步进电机

图2-3 28BYJ-48-5VDC步进电机

中间部分是转子,由一个永磁体组成,边上的是定子绕组。当定子的一个绕组通电时,将产生一个方向的电磁场,如果这个磁场的方向和转子磁场方向不在同一条直线上,那么定子和转子的磁场将产生一个扭力将定子扭转。依次改变绕组的磁场,就可以使步进电机正转或反转(比如通电次序为A->B->C->D正转,反之则反转)。而且按照通电顺序的不同,可分为单四拍(A-B-C-D)、双四拍(AB-BC-CD-DA)、单双八拍(A-AB-B-BC-C-CD-D-DA)三种工作方式。单四拍与双四拍的步距角相等,但单四拍的转动力矩小。八拍工作方式的步距角是单四拍与双四拍的一半,因此,八拍工作方式既可以保持较高的转动力矩又可以提高控制精度。

由于步进电机的驱动电流较大,单片机不能直接驱动,一般都是使用ULN2003达林顿阵列驱动,当然,使用下拉电阻或三极管也是可以驱动的,只不过效果不是那么好,产生的扭力比较小。

5、电机驱动ULN2003简介

ULN2003 是高耐压、大电流复合晶体管阵列,由七个硅NPN 复合晶体管组成。ULN2003是大电流驱动阵列,多用于单片机、智能仪表、PLC、数字量输出卡等控制电路中。可直接驱动继电器等负载。输入5VTTL电平,输出可达500mA/50V。ULN2003是高耐压、大电流达林顿陈列,由七个硅NPN达林顿管组成。

图2-4 ULN2003芯片引脚图

该电路的特点如下: ULN2003的每一对达林顿都串联一个2.7K的基极电阻,在5V的工作电压下它能与TTL和CMOS电路 直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。ULN2003 是高压大电流达林顿晶体管阵列系列产品,具有电流增益高、工作电压高、温度范围宽、带负载能力强等特点,适应于各类要求高速大功率驱动的系统。ULN2003 工作电压高,工作电流大,灌电流可达500mA,并且能够在关态时承受50V 的电压,输出还可以在高负载电流并行运行。其接线图如下所示:

图2-5 步进电机驱动电路 6、12864液晶显示简介

12864是128*64点阵液晶模块的点阵数简称。液晶屏类型:STN FSTN;模块显示效果:黄绿底黑字、蓝底白字、白底黑字;驱动方式:1/64 DUTY 1/9 BIAS;背光:LED白色、LED黄绿色;控制器:KS0108或兼容 ST7920 T6963C;数据总线:8 位并口/6800 方式 串口;工作温度:-20℃~+70℃;储藏温度:-30℃~+80℃;点阵格式:128 x 64;现实角度:6:00直视;基本用途:该点阵的屏显成本相对较低,适用于各类仪器,小型设备的显示领域。其接线图如下所示:

图2-6 12864液晶显示与LPC2131接口接线图

三、硬件电路图

图2-7 系统硬件电路图

四、总结

此次基于ARM的步进电机细分驱动控制设计,由于掌握知识及时间有限,我们目前只实现了对步进电机正反转控制以及三种运行方式(单四拍、双四拍、单双八拍)的选择控制,并且实现了在12864液晶显示屏上显示相关的信息。连接好硬件电路,上电复位,程序开始运行。此时步进电机不转动,按下启停键,步进电机开始转动,初始值设为正传,按反转键开始反转,再按正传键则开始正传。当按下加速键时电机开始加速,当按下减速键时电机开始减速。

当然,此次课程设计还存在很多问题,实现的功能较简单,这都需要以后不断加强相关知识的学习从而不断提高自己。

最后,感谢李红岩老师和黄梦涛老师的辛勤教诲。

五、心得体会

这次课程设计的硬件部分由我来完成,虽然不用焊接电路,但是在画硬件图的过程中仍遇到很多问题。例如对Protel软件的不熟悉,许多操作需要多次尝试,才能正确完成;还有就是在电路的连接过程中,由于自己的马虎,线路有错连和少连的现象。但是经过自己的不断努力,最终还是完成了任务。

通过这次课程设计,我从一开始对系统的不太熟悉,到能开发一个简单的系

统,在这整个过程中我学到了很多东西,掌握了一些常用的开发技能,也发现了大量的问题,有些在设计过程中已经解决,有些还有待今后慢慢学习。只要学习就会有更多的问题,有更多的难点,但也会有更多的收获。

在本次ARM课程设计训练中,不仅锻炼了自己的动手能力,也在向同学老师请教的过程中学到了不少东西,十分感谢老师和同学的帮助。通过本次课程设计,我最深的感触便是,许多东西都需要自己亲自去做去实践去学习,才能真正的弄懂,才能真正的学到东西。

在整个的设计和实践过程中,通过老师的指导和同学的帮助,我们组最终在最后时间完成了任务。通过这次课程设计,才知道自己需要学习的东西还有很多,下来之后一定得加紧学习。平常我们都只是在课堂上学习,通过这次课程设计,实现了从理论到实践的飞跃。增强了认识问题,分析问,解决问题的能力。

最后感谢老师对我们此次课设的耐心指导和帮助!

经过这次ARM课程设计,使我对这学期ARM课程做了全面的复习,并学会将其应用于实践,在这次基于ARM的步进电机细分控制中,我对于ARM、步进电机、液晶显示及相关软件都有了进一步的认识,也是我发现团队合作的重要性,更激起了我对于电子设计方面的热情。

不过,通过这次课程设计,我同样感受到了自身知识的缺乏,如不太熟悉使用上位机进行监控、ARM的掌握不够透彻、还不能脱离参考资料独立进行软硬件设计等,这些都需要我以后不断加强学习锻炼加以增强,这将对于我今后进一步的学习打下基础,我以后会不断根据自身缺点进行学习锻炼,使自己不断提高。最后,感谢老师的辛勤教诲!

六、参考文献

1.ARM嵌入式系统基础教程[第2版] 主编 周立功 北京航空航天大学出版社.2008 2.步进电动机及其驱动控制系统 主编 刘宝廷 哈尔滨工业大学出版社.1997

附录

#include“config.h” #define

MOTOA

1<<10

// P0.10

#define

MOTOB

1<<11

// P0.11

#define

MOTOC

1<<12

// P0.12 #define

MOTOD

1<<13

// P0.13 #define

key1

1<<17

// 加速 #define

key2

1<<18

// 减速 #define

key3

1<<19

//正反转 #define

key4

1<<20

//启停

#define

KEYCON 0x001e0000 // LED控制字 #define

MOTOCON 0x00003c00 // MOTO控制字

#define

GPIOSET(PIN)IO0SET = PIN

// 方便修改置位端口 #define

GPIOCLR(PIN)IO0CLR = PIN

// 方便修改清位端口 #define

RS

1<<9

//P0.9 #define

SID

1<<6

//P0.6 #define

E

1<<4

//P0.4 #define

PSB

1<<2

//P0.2并行或串行,选择低电平串行模式 #define

RST

1<<25

//P1.25,复位脚

unsigned char DAT1[64]=“低速—单四拍A-B-C-D运行方式”;unsigned char DAT2[64]=“中速—双四拍AB-BC-CD-DA运行方式”;unsigned char DAT3[64]=“高速—单双八拍A-AB-B-BC-C-CD-D-DA运行方式”;unsigned char DAT4[64]=“低速反转—单四拍D-C-B-A运行方式”;unsigned char DAT5[64]=“中速反转—双四拍AD-DC-CB-BA运行方式”;unsigned char DAT6[64]=“高速反转—单双八拍D-CD-C-BC-B-AB-A-DA运行方式”;unsigned char DAT7[64]=“

”;unsigned char DAT8[64]=“步进电机细分控制测控1002班:刘怡楠&石娟利”;

void TransferCom(unsigned char data0);void TransferData(unsigned char data1);void delay(unsigned int m);void lcd_mesg(unsigned char *adder1);void SendByte(unsigned char Dbyte);void init(void);void LCD12864_init(void);void DelayNS(uint32 dly);void MOTO_Mode1(uint8 i);

// A-B-C-D void MOTO_Mode10(uint8 i);void MOTO_Mode2(uint8 i);

// AB-BC-CD-DA-AB void MOTO_Mode20(uint8 i);void MOTO_Mode3(uint8 i);

// A-AB-B-BC-C-CD-D-DA-A void MOTO_Mode30(uint8 i);

int main(void){

unsigned int t=0;//启停标志

unsigned int f=0;//正反转标志

unsigned int i=0;//电机运行模式标志

PINSEL0=0x00000000;

PINSEL1=0X00000000;

PINSEL2&=~(0x00000006);//设置所有I/O口为普通GPIO口

IO0DIR =MOTOCON;// 配置I/O输入输出方向

LCD12864_init();//液晶端口初始化

while((IO0PIN&key1)&&(IO0PIN&key2)&&(IO0PIN&key3)&&(IO0PIN&key4)!=0)

{ init();

lcd_mesg(DAT8);

//显示界面

}

while(1)

{

if(t==0)//电机停止

{ init();

lcd_mesg(DAT7);

IO0CLR=MOTOCON;

if((IO0PIN&key4)==0)t=!t;//key4控制启停转换

} else if(t==1)//电机启动

{ if((IO0PIN&key1)==0)//key1控制加速

{ if(i>=2)i=2;

else i++;

DelayNS(10);

}

if((IO0PIN&key2)==0)//key2控制减速

{ if(i<=0)i=0;

else i--;

DelayNS(10);

}

if((IO0PIN&key3)==0)f=!f;//key3控制正反转

if((IO0PIN&key4)==0)t=!t;

if(f==0)

//正转

{ if(i==0)MOTO_Mode1(10);//低速

else if(i==1)MOTO_Mode2(10);//中速

else if(i==2)MOTO_Mode3(10);//高速

}

else if(f==1)//反转

{ if(i==0)MOTO_Mode10(10);//低速

else if(i==1)MOTO_Mode20(10);//中速

else if(i==2)MOTO_Mode30(10);//高速

} }

}

return(0);}

void DelayNS(uint32 dly){ uint32 i;

for(;dly>0;dly--)

for(i=0;i<5000;i++);} void MOTO_Mode1(uint8 i)

//单四拍A-B-C-D运行方式 {

while((IO0PIN&key1)&&(IO0PIN&key2)&&(IO0PIN&key3)&&(IO0PIN&key4)!=0)

{

init();

lcd_mesg(DAT1);//显示字符串DAT1

/* A */

GPIOSET(MOTOA);

DelayNS(i);

GPIOCLR(MOTOA);

/* B */

GPIOSET(MOTOB);

DelayNS(i);

GPIOCLR(MOTOB);

/* C */

GPIOSET(MOTOC);

DelayNS(i);

GPIOCLR(MOTOC);

/* D */

GPIOSET(MOTOD);

DelayNS(i);

GPIOCLR(MOTOD);

} } void MOTO_Mode10(uint8 i)

//单四拍D-C-B-A运行方式 {

while((IO0PIN&key1)&&(IO0PIN&key2)&&(IO0PIN&key3)&&(IO0PIN&key4)!=0)

{

init();

lcd_mesg(DAT4);

//显示字符串DAT4

/* D */

GPIOSET(MOTOD);

DelayNS(i);

GPIOCLR(MOTOD);

/* C */

GPIOSET(MOTOC);

DelayNS(i);

GPIOCLR(MOTOC);

/* B */

GPIOSET(MOTOB);

DelayNS(i);

GPIOCLR(MOTOB);

/* A */

GPIOSET(MOTOA);

DelayNS(i);

GPIOCLR(MOTOA);

} } void MOTO_Mode2(uint8 i)

//双四拍AB-BC-CD-DA运行方式 {

while((IO0PIN&key1)&&(IO0PIN&key2)&&(IO0PIN&key3)&&(IO0PIN&key4)!=0)

{

init();

lcd_mesg(DAT2);

//显示字符串DAT2

GPIOSET(MOTOA);

GPIOSET(MOTOB);

DelayNS(i);

GPIOCLR(MOTOA);

GPIOCLR(MOTOB);

/* BC */

GPIOSET(MOTOB);

GPIOSET(MOTOC);

DelayNS(i);

GPIOCLR(MOTOB);

GPIOCLR(MOTOC);

/* CD */

GPIOSET(MOTOC);

GPIOSET(MOTOD);

DelayNS(i);

GPIOCLR(MOTOC);

GPIOCLR(MOTOD);

/* DA */

GPIOSET(MOTOD);

GPIOSET(MOTOA);

DelayNS(i);

GPIOCLR(MOTOD);

GPIOCLR(MOTOA);

} } void MOTO_Mode20(uint8 i)

//双四拍AD-DC-CB-BA运行方式 {

while((IO0PIN&key1)&&(IO0PIN&key2)&&(IO0PIN&key3)&&(IO0PIN&key4)!=0)

{

init();

lcd_mesg(DAT5);

//显示字符串DAT5

GPIOSET(MOTOA);

GPIOSET(MOTOD);

DelayNS(i);

GPIOCLR(MOTOA);

GPIOCLR(MOTOD);

/* DC */

GPIOSET(MOTOD);

GPIOSET(MOTOC);

DelayNS(i);

GPIOCLR(MOTOD);

GPIOCLR(MOTOC);

/* CB */

GPIOSET(MOTOC);

GPIOSET(MOTOB);

DelayNS(i);

GPIOCLR(MOTOC);

GPIOCLR(MOTOB);

/* BA */

GPIOSET(MOTOB);

GPIOSET(MOTOA);

DelayNS(i);

GPIOCLR(MOTOB);

GPIOCLR(MOTOA);

} } void MOTO_Mode3(uint8 i)

//单双八拍A-AB-B-BC-C-CD-D-DA运行方式 {

while((IO0PIN&key1)&&(IO0PIN&key2)&&(IO0PIN&key3)&&(IO0PIN&key4)!=0)

{

init();

lcd_mesg(DAT3);

//显示字符串DAT3

/* A */

GPIOSET(MOTOA);

DelayNS(i);

GPIOCLR(MOTOA);

/* AB */

GPIOSET(MOTOA);

GPIOSET(MOTOB);

DelayNS(i);

GPIOCLR(MOTOA);

GPIOCLR(MOTOB);

/* B */

GPIOSET(MOTOB);

DelayNS(i);

GPIOCLR(MOTOB);

/* BC */

GPIOSET(MOTOB);

GPIOSET(MOTOC);

DelayNS(i);

GPIOCLR(MOTOB);

GPIOCLR(MOTOC);

/* C */

GPIOSET(MOTOC);

DelayNS(i);

GPIOCLR(MOTOC);

/* CD */

GPIOSET(MOTOC);

GPIOSET(MOTOD);

DelayNS(i);

GPIOCLR(MOTOC);

GPIOCLR(MOTOD);

/* D */

GPIOSET(MOTOD);

DelayNS(i);

GPIOCLR(MOTOD);

/* DA */

GPIOSET(MOTOD);

GPIOSET(MOTOA);

DelayNS(i);

GPIOCLR(MOTOD);

GPIOCLR(MOTOA);

} } void MOTO_Mode30(uint8 i)

//单双八拍D-CD-C-BC-B-AB-A-DA运行方式 {

while((IO0PIN&key1)&&(IO0PIN&key2)&&(IO0PIN&key3)&&(IO0PIN&key4)!=0)

{

init();

lcd_mesg(DAT6);

//显示字符串DAT6

/* D */

GPIOSET(MOTOD);

DelayNS(i);

GPIOCLR(MOTOD);

/* CD */

GPIOSET(MOTOC);

GPIOSET(MOTOD);

DelayNS(i);

GPIOCLR(MOTOC);

GPIOCLR(MOTOD);

/* C */

GPIOSET(MOTOC);

DelayNS(i);

GPIOCLR(MOTOC);

/* BC */

GPIOSET(MOTOB);

GPIOSET(MOTOC);

DelayNS(i);

GPIOCLR(MOTOB);

GPIOCLR(MOTOC);

/* B */

GPIOSET(MOTOB);

DelayNS(i);

GPIOCLR(MOTOB);

/* AB */

GPIOSET(MOTOA);

GPIOSET(MOTOB);

DelayNS(i);

GPIOCLR(MOTOA);

GPIOCLR(MOTOB);

/* A */

GPIOSET(MOTOA);

DelayNS(i);

GPIOCLR(MOTOA);

/* DA */

GPIOSET(MOTOD);

GPIOSET(MOTOA);

DelayNS(i);

GPIOCLR(MOTOD);

GPIOCLR(MOTOA);

} } void delay(unsigned int m){

unsigned int i,j;

for(i=0;i

for(j=0;j<50;j++);} void init(void){ delay(40);

//大于40ms的延时程序

IO0SET=PSB;//设置为串行工作方式

delay(1);

IO1CLR=RST;//复位

delay(1);

IO1SET=RST;//复位置高

delay(10);

TransferCom(0x30);//RE=0,G=0,图片显示关

delay(100);

TransferCom(0x0C);//D=1,显示开

delay(100);

TransferCom(0x01);//清屏

delay(10);

TransferCom(0x06);//模式设置,光标从右向左加1位移动

delay(100);} void lcd_mesg(unsigned char *adder1){ unsigned char i;

TransferCom(0x80);

delay(100);

for(i=0;i<32;i++)

{ TransferData(*adder1);

adder1++;

}

TransferCom(0x90);

delay(100);

for(i=32;i<64;i++)

{ TransferData(*adder1);

adder1++;

} } void SendByte(unsigned char Dbyte){ unsigned char i;

for(i=0;i<8;i++)

{ IO0CLR=E;

if((Dbyte&0x80)==0x80)IO0SET=SID;

else IO0CLR=SID;

Dbyte=Dbyte<<1;

IO0SET=E;

IO0CLR=E;

} }

void TransferCom(unsigned char data0){

IO0SET=RS;

SendByte(0xf8);

// 11111,RW=0,RS=1,0

SendByte(0xf0&data0);//高4位

SendByte(0xf0&data0<<4);//低4位

IO0CLR=RS;

} void TransferData(unsigned char data1){

IO0SET=RS;

SendByte(0xfa);

// 11111,RW=0,RS=1,0

SendByte(0xf0&data1);//高4位

SendByte(0xf0&data1<<4);//低4位

IO0CLR=RS;} void LCD12864_init(void){

IO0DIR|=(E|SID|RS);//设置为输出

IO0CLR=(E|SID|RS);

IO1DIR|=RST;

IO1CLR=RST;

//复位

delay(1);

IO1SET=RST;

ARM的发展战略 篇3

三网融合给ARM及其合作伙伴带来机遇

ARM中国总经理兼销售副总裁吴雄昂表示:“三网融合对ARM、对整个中国的电子产业都是非常好的推动, 电视、机顶盒等各种消费电子产品都会因为网络化的关系进一步更新换代。A R M可以为这些厂商提供A R M的平台, 使这些基于中国标准的厂商在芯片性能上、应用上能够跟国际接轨。另外, ARM的商业模式是一个开放合作的模式, 用户可以提出各种需求, ARM帮助提供解决方案, 支持合作伙伴的技术功能开发。目前, ARM在全世界有650多家合作伙伴, 在国内有60多家, ARM坚持把产业链上最大的价值留给合作伙伴, 这是我们一贯的宗旨。”

ARM家庭应用市场经理邹诚认为:“三网融合和NGB的发展带来了硬件平台、软件平台、应用和网络融合的加速, 这个过程要求更加开放的平台, 目前在中国的数字电视产业内, Android平台非常受欢迎。”

Android平台正在应用到数字家庭领域

近几年, ARM一直在发展手机市场以外的领域, 数字家庭是其发展的重点方向, 同时ARM也把Android平台的应用从手机移植到了数字家庭平台上。Android有着跨平台、兼容、开源免费等优势, 降低了开发的门槛, 数字电视厂商可以基于此平台开发出各种个性化的新功能, 同时Android平台的软件技术特点能够为其带来很好的网络应用。

吴总表示:“借助Android平台, ARM通过多年来积累的经验和技术可以给合作伙伴大力支持, 使Android平台在家庭应用上得到良好的体现和发展。当然我们并不认为Android平台会成为数字电视领域唯一的平台, 但是我们看好这种开放式的方式, 在过去的几年中, 开放式模式发展非常快。目前很多大的机顶盒厂商已经把机顶盒换成ARM的架构, 运用Android平台来开发新的功能, 同时也有广电的运营商对Android平台表示了极大的兴趣, 目前都在紧密交流中。”

时代飞腾科技有限公司总经理杨玉会在谈到Android平台在数字电视领域的应用时说:“Android更多的是给数字电视厂商提供了一个全新的平台, 传统的电视应用与Android结合可以给现在的厂商带来更多的商业模式。在以前的商业模式和技术下, 很难考虑在一个单一的平台上可以运营自己个性化内容、做有自己特色的应用, Android作为一个开放式的平台, 给了每一个厂家这样的机会。同时它的开发成本和规模, 都是中国的企业可以承受的。”

Skyviia公司系统工程部处长杨景尧也表示, 公司很早就跟ARM合作投入Android的开发, 为了配合三网融合, 已成功研发出可以支持1080P高清播放的芯片。

Android平台在中国的发展潜力被看好

ARM和其合作伙伴都对Android平台在中国的发展前景持肯定的态度, 目前国内市场对Android的呼声很高, 从芯片公司、系统厂商到运营商, 都表示很有兴趣。

去年在金融危机的背景下, ARM在中国的出货量依旧是增长的趋势, 今年ARM将加大在中国的投入。吴总在谈到今年ARM在中国的战略部署问题上时提及:“ARM在中国市场要加大售后技术支持服务, 另一方面, ARM正在准备成立应用软件方面的研发中心, 用以推动基于Android平台的技术开发。今年ARM在中国市场的工作重点是希望帮助芯片合作伙伴提高出货量和市场占有率, 使其芯片在家庭应用方面比例进一步提高。”

ARM的发展战略 篇4

摘要: 介绍基于ARM的嵌入式Linux系统平台的系统硬件系统构架,软件系统的组成和主要功能模块的实现。由于本系统采用的S3C2440 ARM9芯片具有较高性能和丰富的外围接口资源,因此具有控制能力强,硬件结构简单,方便功能扩展等优点,在控制系统中有较高的实用价值。

关键词: 嵌入式系统;Linux;S3C2440

中图分类号:TP3文献标识码:A文章编号:1671-7597(2010)0610166-01

0 引言

随着计算机技术的发展,嵌入式系统已成为计算机领域的一个重要组成部分。由于嵌入式系统应用的场合日趋复杂,只使用嵌入式控制器控制将难以满足要求,所以嵌入式操作系统得到了飞速的发展。

本文拟采用RISC体系结构的ARM处理器扩展外设及存储器等作为硬件平台;采用功能强大,易于移植的嵌入式Linux作为系统软件平台便于有效管理内存、实现多任务编程,是对市面上较多以8位、16位机为主控CPU的控制器的发展进步。嵌入式Linux系统的特点

Linux是一套类Unix的操作系统,具有Unix系统的程序接口和操作方式,也继承了Unix稳定和高效率的特点。目前内核已发展到2.6版本。

Linux内核遵循开放系统互连(OSI:OpenSystem Interconnect)国际标准,凡遵循该标准开发的硬件和软件,都能彼此兼容,方便程序移植到其它系统平台。其次,Linux具有良好的用户界面。传统用户界面是基于文本的命令行界面,有很强的程序设计能力,系统调用是给用户提供编程时使用的界面,用户可以在编程时直接使用系统提供的系统调用命令。完善的内置网络是Linux的一大特点,Linux在通信和网络功能方面优于其他操作系统,为用户提供了完善的、强大的网络功能,这一点也是继承了UNIX的优良传统。嵌入式Linux系统硬件架构及开发平台

本文采用的硬件平台是基于ARM9构架的嵌入式芯片S3C2440A,主频533MHz,支持Linux,Wince等操作系统。此外,外接了64M RAM,64M Flash,以太网控制芯片CS8900A。外围接口配有以太网口、RS232,USB等以便为建立交叉开发环境做好通讯、调试等方面的准备;配置LCD,触摸屏等以便实现人机交互系统。

硬件设计分为系统电路和功能电路两部分,系统电路为S3C2440A运行操作系统提供最小系统;功能电路提供各种接口实现控制器功能需求。

系统电路主要包括:电源电路、复位电路、时钟电路、存储器扩展和JTAG接口。为了流畅运行操作系统,本文在存储器扩展部分选用2M NOR Flash存储启动代码和操作系统,64M NAND Flash存储文件系统和应用程序代码。前者选用AMD公司的AM29LV160DB(1Mb×16),后者用三星的K9F1208U0A(64Mb×8)。

功能电路主要包括:液晶、触摸屏电路、以太网接口电路、USB Host

接口电路等。主要提供人机交互系统,网络链接,usb设备链接的功能。嵌入式Linux系统软件的设计

在开发系统前,必须安装Linux操作系统。然后在宿主机即PC机上建立交叉开发环境,安装交叉编译器cross_2.95.3.tar.bz2。然后编译ARM Linux 内核,在Linux的终端下,先进入ARM Linux内核源代码的目录下,执行make menuconfig命令就会出来内核配置主界面。在配置内核的时候可以静态的把CS8900A芯片、LCD、触摸屏以及U盘支持的驱动加入内核。保存对内核的设置后退出,然后在命令行下输入:

#make dep 建立整个内核程序间的依赖关系

#make zImage编译内核为zImage模式

编译完成后,在arch/arm/boot 目录下将生成ARM Linux 内核映像文件zImage。这就是要下载到硬件系统的内核映像文件。此内核包含了上述的以太网、LCD等模块,为下面设计提供了必需的系统软件功能。上位机软件的具体实现功能:通过以太网口可以实现远程控制,LCD、触摸屏提供人机交互界面,通过USB接口实现U盘读取数据等。

在应用程序开发上,系统的软件模块主要实现U盘读写、键盘和触摸屏控制、液晶屏图形驱动显示、断电数据保护、内存管理和串口通讯,以太网通讯等。操作系统的移植以及扩展,辅助开发平台上已有完备的软件平台,无须做过多修改就可移植到我们的平台上。可以将各功能模块编制成独立的任务,通过操作系统提供的API,有效的调度任务,实现任务之间的同步与通信,更好的完成工作。以下便是各功能的简单介绍和具体实现过程。网络系统的设计

TCP和UDP是TCP/IP协议中的两个传输层协议,它们使用IP路由功能把数据送到目的地。TCP提供的是面向连接的、可靠的数据流传输,而UDP提供的是非面向连接的、不可靠的数据流传输,对数据不进行重传和确认。当要求传输的数据完整、可控、可靠时,应该选择TCP协议。当强调传输的实时性而不是完整性时,例如传输音视频信号时,应选择UDP协议。

CS8900A是CIRRUS LOGIC公司生产的16位以太网控制器,芯片内嵌片内RAM,10BASE-T收发滤波器,直接ISA总线接口。该芯片的突出特点是使用灵活,其物理层接口、数据传输模式和工作模式等都能根据需要而动态调整,通过内部寄存器的设置来适应不同的应用环境。发送过程中,首先添加以太网帧头(包括先导字段和帧开始标志),然后生成CRC校验码,最后将此数据帧发送到以太网上。接受时,他将从以太网收到的数据帧在经过解码、去掉帧头和地址检验等步骤后缓存在片内。通过CRC校验后,它会根据初始化配置情况,通知主机CS8900A收到了数据帧,最后用上面介绍的某种传输模式传到主机的存储区中。液晶显示系统设计

本设计采用Linux为显示设备提供的帧缓冲(framebuffer)接口,把显存抽象后的一种设备,他允许上层应用程序在图形模式下直接对显示缓冲区进行读写操作。这种操作是抽象的,统一的。用户不必关心物理显存的位置、换页机制等等具体细节。这些都是由Framebuffer设备驱动来完成的。结束语

解决方案采用先进的基于ARM的32位先进处理器,并移植扩展好的嵌入式实时操作系统构成我们的开发平台,提出了一种新的思路,做出了大胆的尝试,相信随着工作的进一步深化、进展,定能取得另人满意的控制效果。

参考文献:

基于ARM的波浪浮标设计 篇5

在众多海浪发电装置设备中均存在着对海浪能量的转换效率低下的问题。针对效率转换问题, 蔡元奇教授提出了利用实时调节海浪发电装置中摆子的固有自振频率与海浪频率相同的方法, 进而与海浪产生谐振, 从而减少了发电装置的能量损耗, 提高转换效率[1,2]。因此, 需要实时掌握海浪的频率参数, 要保证得到的海浪频率的准确可靠。

本文设计了多功能海浪识别仪, 以Cortex-A8作为主处理器, 基于Linux操作系统, 有很强的可移植性与扩展性。通过加速度传感器采集浮标的加速度, 对此信号采取EMD处理, 并对分解之后的IMF进行阈值筛选, 获得有效分量, 然后对该分量进行希尔伯特黄变换, 从而准确计算出海浪的实时频率[3]。通过陀螺仪、电子罗盘、GPS可以精确定位波浪识别仪的准确方位以及姿态。通信网络采用GPRS网络, 实时将采集到的数据传输到岸边监控中心。

1 系统总体结构及功能

海浪数据采集传输系统主要由数据采集、数据传输及数据处理三部分[4]组成, 系统框图如图1所示。数据采集部分由加速度传感器、陀螺仪、电子罗盘及GPS组成, 主要作用是采集浮体的线加速度、角加速度、方位角以及GPS坐标。数据传输部分由GSM/GPRS收发模块组成, 能够通过网络使手机短信实时接收现场数据。数据处理部分由S5PV210处理器完成数据筛选、算法及处理。

2 系统硬件设计

2.1 S5PV210处理器

S5PV210是三星公司推出的高性能应用处理器, 采用了Cortex-A8内核, 运行主频可达1 GHz, 可搭载Linux系统, 带有2路SPI、4路I2C与4路UART接口。

2.2 加速度传感器

选用基于VTI的3D-MEMS电容传感技术的高性能低功耗的SCA3060三轴加速度传感器, ±2 g的测量量程、精度可达1 mg, 完全满足设备测量环境的客观要求。将采集到的三个轴方向上的加速度数据通过SPI总线传输给处理器。电路图如图2所示。

2.3 陀螺仪模块

选用L3GD20三轴陀螺仪芯片。它提供了较宽的测量量程, 用户有足够的选择空间。为了满足测量所需, 同时保证测量精度, 该系统中选用±500°/s量程, 测量精度可达±0.015°/s。该芯片采用I2C总线方式与处理器进行数据传输。

2.4 GPS模块

采用Gstar GS-87模块, 它是一个高效能、低功耗的智能型卫星接收模块。其工作电压为3.3 V, 定位精度可达10 m以内, 通过串口与处理器进行通讯, 通过GPRS网络将所需数据传回监控中心。

2.5 GSM/GPRS模块

选用中兴的MF210模块, 本设计中利用SIM卡通过联通网络进行实时数据传输, 外围电路图如图3所示。

2.6 电子罗盘

选用SCH9005集成电路模块, 该芯片集成了高精度气压传感器和高精度磁传感器, 且具有温度测量、气压测量、指南针方位测量功能。气压测量分辨率为±1 h Pa, 测量范围是300 h Pa~1 000 h Pa, 罗盘精度为±2°, 分辨率为1°, 以地磁的正北角为0°, 模块采用I2C接口将数据传送给处理器。

3 系统软件设计

3.1 数据采集部分

Linux操作系统中, 上层用户空间通过调用内核空间的系统接口函数来完成对底层硬件的操作。因而要完成芯片的功能, 首先需要编写底层的驱动程序, 其次是上层的应用程序。本设计中所选芯片运用到了I2C、SPI、UART 3种通信协议方式。虽然Linux系统内核一般自带有3种总线的驱动程序, 但是其总线子系统框架复杂, 不易移植, 且编写应用程序时不方便, 因而考虑重新编写基于对GPIO端口操作的字符设备驱动来完成对传感芯片的数据操作[5]。

S5PV210芯片带有3路I2C、两路SPI接口和4路UART接口。电子罗盘和陀螺仪选用I2C方式通信, 在I2C字符驱动程序中, 直接通过地址映射对寄存器进行操作, 配置寄存器I2CCON、I2CSTAT, 设置其工作方式为主机模式, 使能I2C中断, 设定其工作频率为400 k Hz。

GPS和GPRS的串口传输选用“dev/tty S0”和“dev/tty S1”, 在上层用户空间中直接编写应用程序, 设置串口波特率为9 600 bit/s, 8 bit数据传输, 无奇偶校验位。程序读取GPS返回的GPRMC (推荐定位信息) , 该信息包含了UTC时间, 定位状态, 经纬度, 地面速率以及航向角。

3.2 数据传输部分

系统采用GPRS网络传输方式实现现场和岸边通信。

对于GPRS网络传输时, 处理器将经过处理后得到的海浪频率、仪器的倾斜角、GPS地理方位等数据发送给GPRS网络, GPRS网络提供通信链路, 将这些信息发送给固定IP地址, 在监控中心的上位机程序需要进行socket网络编程, 通过静态IP地址看到数据。

在ARM发送端, Linux系统启动之后, 首先要对串口进行初始化, 配置串口参数, 其次, 对GSM模块设置AT指令, 主要用到的指令有AT+CGDCONT=1, “IP”, “CMNET”接入网络;AT+TCPSERV设置上位机IP地址, AT+TCPPORT配置上位机监听端口设置。然后, 通过AT+CONNETCIONSTART请求建立网络连接, 再通过AT+OTCP登陆网络, 数据传输时, 将数据打包封装直接发送到GPRS网络, 流程如图4所示。

3.3 数据处理

3.3.1 海浪频率的提取

以所测得的三轴加速度为数据分析对象推算出海浪频率, 由于海浪波形具有随机性, 混乱性, 而且在测量加速度信号时, 采集系统的测量误差、外界环境的干扰或其他因素的影响, 使得测量到的加速度信号包含大量的噪声。这些噪声理论上可以使用傅里叶变换和小波变换进行分析处理, 可是在实测数据中, 发现所测信号为非平稳非线性信号, 而傅里叶变化并只能处理平稳信号, 虽然小波变换在理论上能够处理非平稳非线性信号, 但是在实际实践过程中, 发现处理效果并不理想, 所以引入了希尔伯特黄变换算法。

该算法可以简单的表示为两个步骤, 首先需对原始信号进行EMD分解。EMD分解主要目的是将原始信号分解为多个IMF分量。IMF具有以下两个特点:其极点数个数和零点数个数最多相差一个;其极大值点确定的包络线与极小值点确定的包络线的和必须为零。

(1) 将信号x (t) 的极大值与极小值形成的包络线取平均得到均值曲线l (t) , 之后用原始信号x (t) 减去均值曲线l (t) 得到l1 (t) , 判断l1 (t) 是否满足IMF分量的两个条件, 若满足则得到第一个IMF, 若不满足, 则将l1 (t) 视为新的原始信号继续重复以上步骤。最后得到n个IMF与一个残余分量r。

在n个IMF中, 为了获取原始信号中的主要成分信号分量, 将分量信号与原始信号的相关系数设为筛选参考量, 当相关系数大于0.7时, 可确定该IMF为原始信号主要成分, 筛选阈值设为0.7。

(2) 进行Hilbert变换。对于信号x (t) , Hilbert变换定义为:

对每一个IMF进行Hilbert变换, 从而得到了信号的瞬时频率。借助Hilbert变换, 可得到x (t) 的解析信号:

其中x (t) 可表示为:

则信号瞬时幅值、相位分别为:

对θ (t) 求导, 即可获得瞬时频率:

根据式 (2) , 推出Hilbert变换卷积形式为:

则由卷积定理:

其中g (t) 的傅里叶变换为F[g (t) ]=-jsgn (ω) , 且:

因此, 在实际编程过程中可以以傅里叶变换为基础得到Hilbert变换[6], 即:

3.3.2 浮体倾角的提取

L3GD20陀螺仪可以测得三个方向上的角加速度, 对各方向上的角加速度积分即可得到该方向上的倾角度数。由于陀螺仪在输出时, 会存在数据漂移, 如果直接对数据积分会造成偏移误差越来越大, 最后导致数据无法使用。因此, 用卡尔曼滤波对数据进行处理[7], 卡尔曼滤波实质上是依据实测数据对随机量进行最小二乘估计, 可以对物体的实时运行状态进行估计和预测。

3.4 软件整体流程

海洋波浪作为观测对象, 其频率很低不会超过5 Hz, 根据采样定理, 将三轴加速度传感器的采样频率设定为10 Hz。采样点数为2 048, 采样时间为3.5 min。将陀螺仪采样频率设为20 Hz。软件整体流程如图5所示。

4 实验条件及结果

为了较为准确地测试系统采集数据的稳定性及准确性, 将测试地点选为湖水面积为33 km2的东湖内, 湖面的波浪相比于海浪, 没有海风的作用、气压变化、地形因素等客观条件影响, 其波浪形成条件虽然不如海浪严苛和复杂, 且波浪振幅和频率均比海浪小。但是, 两者之间具有波浪的共性, 均是由风产生的水面波动, 均可视作由无限多个振幅不同、频率不同、方向不同、相位杂乱的波组成, 因此可以作为测试场地达到我们测量波浪频率的目的。

试验现场平均波高为3~5 cm, 频率为1 Hz左右, 但是由于试验期间受到冲锋舟的影响, 致使波高有时达到10 cm左右, 频率降低到0.5 Hz左右。

利用MATLAB对采集到的角度与线加速度进行分析, 其角度曲线图如6所示, 经过卡尔曼滤波之后的角加速度进行积分, 不会再产生多大的漂移与误差, 效果良好, 其波形近似正弦曲线, 间接反映出良好的波浪震荡特性。角度的大小可近似反应波浪振幅的强度, 当角度震荡越大, 波浪振幅强度越强。

由希尔伯特算法计算得到的频率数据如表1所示, 算法处理时间约为10 s, 能够很迅速地处理数据, 分析得出波浪频率, 保证实时性。计算所得频率与实际频率相符, 经多次验证, 该算法能够很好地从非平稳非线性的随机信号中, 获取信号主要成分, 能够保证数据输出的可靠性。

本文借助ARM及Linux开发平台完成了对波浪频率、温度及气压的测量, 实现了浮标的姿态及定位, 通过GPRS网络实时地将数据反馈到监控中心, 达到了远程海浪数据监测的目的。

该设计具有良好的实时性、可靠性及准确性。其创新点在于将希尔伯特算法运用于加速度信号的分析当中, 并且通过希尔伯特变换计算出了波浪的瞬时频率, 同时以Linux系统为平台, 具有很强的扩展性, 方便波浪浮标采集系统的二次开发。

参考文献

[1]蔡元奇.共振波力发电装置:中国, CN201110233308.7[P].2011-08-16.

[2]蔡元奇.共振波力发电装置:中国, CN201120295878.4[P].2011-08-16.

[3]文圣常.海浪理论与计算原理[M], 北京:科学出版社, 1984.

[4]刘国栋.波浪浮标数据处理方法研究[D].天津:天津大学, 2011.

[5]徐海林.基于ARM-Linux的IIC串行通信[J].微处理器与可编程控制器, 2013 (20) :85-86.

[6]贾玮.基于DSP的EMD算法实现[D].太原:中北大学, 2009.

基于ARM的工业控制器 篇6

嵌入式系统广泛应用于制造工业、过程控制、通信、仪器、仪表、汽车、船舶、航空、航天和军事装备等工业领域,同工业自动化紧密结合在一起,并相互推动。随着电子信息技术的发展,32位、64位的微处理器必将成为工业控制器的核心。ARM是一种近年来在嵌入式系统中有着强大影响力的微处理器设计商和制造商,基于ARM技术的微处理的应用约占据了32位RISC微处理器75%以上的市场份额,已经遍及工业控制、消费类电子产品、通信系统和无线系统等各类产品市场。

随着工业自动化的高速发展,生产规模日益扩大,对工业控制器提出了更高要求,如智能化、网络化等。但当前智能工业控制系统的应用越来越广泛,同时对工业控制器的温度控制系统提出了越来越高的要求。在大多数工业过程中,对于温度的调节,最初采用PID控制。但PID参数的整定是一项很繁琐的工作。目前传统的工业控制器往往采用低端的8位/16位单片机,不区分操作系统和应用程序,因此软件开发难度比较大,扩展性差且不易修改。同时由于单片机等处理器本身的资源有限,对于复杂、多任务并行运行的工业控制器在时间同步、大量数据传输上已经逐渐不能满足要求。因此,本文采用最新的ARM微处理器,结合模糊控制理论和方法,设计了ARM嵌入式工业控制器的温度控制系统。因此,为了解决实际中对工业控制器更高要求的问题,本文采用最新的32位ARM嵌入式微处理器代替传统的8位单片机作为微处理器,结合模糊控制技术。实验结果证明该方法具有可行性。

1 嵌入式工业控制器系统模糊设计

在大多数温度控制工业过程中,由于系统本身的非线性、多变量、强耦合和时滞的存在,使温度成为一个非线性时变参数,加上工作环境的随机性及其干扰的影响,因而难以用常规的数学工具建立精确的数学模型。而模糊控制技术能处理控制对象的不确定性、干扰及非线性、时变性、时滞性等影响,具有鲁棒性强、效果好等优点,因此在嵌入式工业控制系统的温度控制设计和改进中采用了模糊控制的理论和方法。

基于对温度控制稳定性和精确度的要求,并考虑到系统的性价比,因此选择二维模糊控制器。本设计的二维模糊控制器包括以下四个组成部分:

(1)模糊化:采用正态分布确定模糊变量的赋值表,将温度误差e和误差变化量△e的精确量转化成模糊量;

(2)模糊推理:按照IF-THEN语言规则进行模糊推理,求出系统全部模糊关系所对应的控制规则并置于规则库;

(3)模糊判决:用“最大隶属度法”得到控制参数的模糊量;

(4)去模糊化:把模糊判决后的结果由模糊量转化成为可以用于实际控制的精确量。

将这样的模糊控制器应用于工业温度控制中,形成一个闭环控制系统。微处理器ARM将采集到的温度与设定值相比较,得到温度误差e和温度误差的变化量△e,并对e和△e这两组数据进行模糊化处理,确定其隶属度,从而得到模糊推理的输入量E和△E。根据熟练工人的经验,离线制定控制量查询表,该表以IF-THEN的规则形式存储于规则库中,用于在工业控制系统运行期间的模糊推理过程中进行查询。推理所得到的输出量用最大隶属度法进行模糊判决,从而得到相应的控制参数。对这一控制参数进行去模糊化的处理,得到用于实际控制的精确值,从而作用于被控对象即工业控制器的温度。

2 嵌入式工业控制器系统总体硬件设计

2.1 控制方案的比较

第一种方案:对于工业温度的调节,最初通常是PID控制。但是这种方法需要在良好的PID参数整定的条件下才能奏效,而且PID参数的整定是一项很繁琐的工作,常常需要经验丰富的操作员进行手动操作。随着生产规模的扩大,现有的工业温度控制系统已经很难满足生产工艺的要求。

第二种方案:对现有的信号采集、显示、算法及控制全部采用单片机设计。随着采集的信息内容更多,信息量更大,目前的设备难以胜任。主要存在如下的问题:

(1)单片机的运算速度和内存容量有限,有限的资源已成为其发展的障碍;

(2)大量的现场数据信息处理困难;

(3)难以实现网络传输。

而且工业控制现场干扰源多,干扰信号强,如果采用单片机设计,则整套系统的抗干扰能力弱,一旦出现控制系统“死机”的情况,加上又没有其它的应急保护措施,很可能给机组设备的安全运行带来严重的影响。

第三种方案:采用ARM微处理器和CPLD共同来设计工业控制器。由于8/16位单片机速度不够快并且内存不够大,较难满足嵌入式设备的上网要求。近年来异军突起的一些32位ARM微控制器工作主频高达几百兆,具有小体积、低功耗、低成本、高性能的特点,在国内逐步推广使用,实时性问题得到了很好的解决。

2.2 嵌入式工业控制器系统总体硬件设计

本设计主要针对工业控制领域现场仪器仪表的开发,系统总体硬件设计如图一所示,图中各部分的功能及特点如下:

(1)主处理器

主处理器即ARM微控制器,采用AT91M40800微处理器,用来实时处理各种现场仪器仪表的数据以及各种数据的处理、交换、传输等。

(2)模拟量采样通道(A/D采样转换)模块

本系统中设计了8路模拟量的采集通道CH1~CH8,具体实现了热电阻温度测量电路。由热电阻对温度传感器得到的温度信号进行采样,其输出电压经调理放大后进入A/D通道,转换后得到数字信号,等待ARM微处理器处理。

(3)CPLD控制模块

CPLD主要对以太网控制器RTL8019AS、LCD液晶显示和MAX197的控制电路进行译码,具体采用Altera公司的CPLD芯片EPM7032A来实现。本设计中CPLD应用在Quartus II开发平台,在图形编辑器中完成所需设计,实现系统的硬件软件化。

(4)人机交换接口模块(LCD)

智能化的LCD是用来提供良好的人机交换界面,使用户可方便地了解系统运行情况、修改参数等。本系统中LCD显示模块主要用于显示温度测量值、系统运行参数和图像界面。

(5)网络接口通信模块

本系统选用RTL8019AS外扩一个ETHERNET接口。其功能用来实现功能完善、安全可靠的实时信息网络平台,实现同层次、上位机和下位机之间的信息交换和信息共享。

(6)D/A输出电路

选用TI公司的12位数模转换器DAC7512实现0~5V D/A输出,从而把数字信号转换为模拟信号输出。

(7)RS-232通信模块

RS-232作为标准的计算机串行接口广泛地使用,在测控系统中也越来越多地被采用。RS-232可以使下位机之间的信息数据互相通信而且可以把现场下位机采集处理的数据传送到中控室PC机上,实现遥观、遥调和遥控。

(8)其余辅助模块

比如:电平转换模块(系统中AT91M40800为3.3V逻辑电平,而RTL8019AS和MAX197芯片采用5V TTL逻辑)等辅助电路模块。

3 ARM微处理器硬件电路设计

ARM微处理器硬件电路是本设计的核心,其硬件设计框图如图二所示。

(1)电源模块设计

系统ARM、CPLD、SRAM和FLASH等需要3.3V数字电源,网络通信模块需要5V的数字电源。由此可见,整个系统包括5V电源和3.3 V电源。所以系统需要把5V的电压转化为3.3V电压。系统采用HDN1-5S3.3型号电源模块,实现5V转换到3.3V,满足ARM内核的电源等级要求。

(2)ARM时钟电路

系统中AT91M40800微处理器是完全静态设计的,内部没有起振电路,系统只能使用有源晶振。主要工作在外部信号MCKI引脚引入的外部时钟的主时钟频率下,主时钟频率也可以通过MCKO引脚镜像输出,这一引脚与通用I/O口线是复用的。当NRST信号有效时,MCKO保持低电平。复位后,该引脚的功能是MCKO,输出MCKI信号的映像。也可以通过PIO控制器编程,将该引脚改为标准的I/O口。

(3)ARM监控复位电路

为了提高系统的可靠性和稳定性,本系统采用DS1832l实现系统监控电路。为了提高系统的可靠性,分别可以通过上电和手动两种方式进行复位。

(4)JTAG仿真接口电路

JTAG(Joint Test Action Group)仿真器也称为JTAG调试器,是通过ARM芯片的JTAG边界扫描口进行扫描的设备。JTAG扫描逻辑电路用于仿真和测试,采用JTAG可在线仿真,同时也是调试过程中装载数据、代码的唯一的通道。通过JTAG接口可将仿真器与目标板相连接,进行数据通信。

(5)输入输出接口设计

AT91M40800芯片P0~P31共有32个I/O引脚,I/O口是3.3V并具有5V容限输入,可以与5V的外围设备直接接口,不需要进行其它的电平转换电路。为了保证系统的实时稳定性,最好还是采用3.3V等级电压。设计中利用处理器的I/O线实现:I2C总线、设置报警蜂鸣器、工作指示灯、中断控制以及对于执行机构的控制功能等。

(6)存储器外围模块

AT91M40800微处理器嵌入了8K的片内SRAM。所有片内存储器都是32位的,访问时间是一个时钟周期。其包括FLASH存储器设计(FLASH存储器用于存储系统的启动程序、应用软件程序及重要数据,它具有可擦写、易操作等优点)和RAM存储器设计(主要是用来存储图像采集的数据)。

4 工业控制器系统软件设计

任何系统都要求软硬件的密切配合,硬件可以增加系统软件的稳定性和灵活性,软件可以降低硬件的成本,两者是相辅相成的。嵌入式工业控制器的软件实现主要包括ARM微处理器软件设计、网络接口通信软件设计和CPLD控制采集的软件设计等。各部分软件相互配合,实现整个系统的所有功能。系统主程序流程图如图二所示:

5 结束语

本文以嵌入式系统为研究方向,面向工业控制领域,以仪器仪表为应用对象,结合模糊控制技术,构建和开发了基于ARM的嵌入式工业控制器通用平台。考虑到硬件平台的适用性,主要模块的控制电路通过CPLD产生,实现硬件功能的软件化。减少系统中的分立元件,提高硬件的集成度,为以后的进一步开发和应用提供方便。本设计的工业温度控制系统,能够提高控制的稳定性和精确度,而且能够实时地将现场数据通过网络上传,实现数据的远程采集。该设计表明,将最新的ARM微处理器代替传统的单片机,并且将模糊控制方法应用于工业过程,具有较高的使用价值和广阔的应用前景。

摘要:面向工业控制器智能化和网络化的发展需求,本文在分析ARM内核处理器的基础上,开发了以AT91M40800为核心的嵌入式工业控制器的软硬件平台。根据当前实际的工业控制器的要求,设计了相应的模块:模数转换、数模转换、液晶显示和网络通信等,并完成了各个模块的功能。通过相应任务调度实例,对系统模块进行功能测试。系统测试结果表明该嵌入式工业控制器平台的设计是可行的,达到了预期目标。

关键词:工业控制器,ARM,CPLD

参考文献

[1]马忠梅等.AT91系列ARM核微控制器结构与开发[M].北京:北京航空航天大学出版社,2003.

[2]蔡自兴编著.智能控制[M].北京:电子工业出版社,2003.

[3]Xian-min Ma,Xiao-ru Song.“Coal Gangue On-line Recognition and Automation Selection System Based on ARM and CAN Bus”[J].IEEE System,2005,(08):988-992.

[4]马忠梅.ARM嵌入式处理器与嵌入式系统[J].电子世,2003,(03).

[5]A.M,Fox,J.E.Cooling.N.S.Cooling Integrated design approach for real-time embedded systems[J].Software,IEEE Proceedings,1999,(04):75-85.

[6]刘晓莉.ARM的CAN总线控制系统智能数据采集节点的设计[J].湖南科技大学学报(自然科学版),2006,(12).

[7]费浙平.基于ARM的嵌入式系统程序开发要点(二)—系统的初始化过程[J].单片机与嵌入式系统应用,2003,(09):80-83.

[8]蒋鹏等.ARM与MCS-51时序转换方法研究[J].机电工程,2003,(01).

基于ARM的深海测控系统研究 篇7

随着微电子技术的飞速发展,ARM系列32位RISC(Reduced Instruction Set Computer)处理器以低功耗、低成本、高性能的优点在嵌入式领域内得到广泛应用,其中PHILIPS公司的32位ARM单片机LPC2138是一款很不错的ARM单片机,特别适合深海测控领域。

1 LPC2138 ARM单片机[1]

LPC2138微控制器是基于一个支持实时仿真和嵌入式跟踪的32位ARM7TDMI-S CPU,并带有512kB嵌入的高速Flash存储器。128位宽度的存储器接口和独特的加速结构使32位代码能够在最大时钟速率下运行。对代码规模有严格控制的应用可使用16位Thumb模式将代码规模降低超过30%,而性能的损失却很小。基本性能如下:

(1)32位ARM7TDMI-S核,超小LQFP64封装。

(2)32kB的片内静态RAM和512kB的片内Flash程序存储器。

(3)通过片内boot装载程序实现在系统编程/在应用编程(ISP/IAP)。单个Flash扇区或整片擦除时间为400ms。256字节行编程时间为1ms。

(4)Embedded ICE RT和嵌入式跟踪接口通过片内Real Monitor软件对代码进行实时调试和高速跟踪。

(5)2个8路10位的A/D转换器,共提供16路模拟输入,每个通道的转换时间低至2.44μs。

(6)1个10位的D/A转换器,可产生不同的模拟输出。

(7)2个32位定时器/外部事件计数器(带4路捕获和4路比较通道)、PWM单元(6路输出)和看门狗。

(8)低功耗实时时钟具有独立的电源和特定的32kHz时钟输入。

(9)多个串行接口,包括2个16C550工业标准UART,2个高速I2C总线(400 kbit/s)、SPI和具有缓冲作用和数据长度可变功能的SSP。

(10)向量中断控制器。可配置优先级和向量地址。

(11)小型的LQFP64封装上包含多达47个通用I/O口(可承受5V电压)。

(12)多达9个边沿或电平触发的外部中断管脚。

(13)通过片内PLL(100μs的设置时间)可实现最大为60MHz的 CPU操作频率。

(14)片内集成振荡器与外部晶体的操作频率范围为1MHz~30MHz,与外部振荡器的操作频率范围高达50MHz。

(15)低功耗模式:空闲和掉电。

(16)可通过个别使能/禁止外部功能和外围时钟分频来优化功耗。

(17)通过外部中断或BOD将处理器从掉电模式中唤醒。

(18)单电源,具有上电复位(POR)和掉电检测(BOD)电路。CPU操作电压范围:3.0V~3.6V(3.3 V±10%),I/O口可承受5V的电压。

2 硬件设计

为了开发海洋资源,开采海底矿产、石油,人类必须首先了解海底环境。然而海底环境十分复杂,对海底探测的要求很高。深海环境下要求采集的参数比较多,包括深度、温度、盐度、PH值、溶解氧以及各种化学元素等。目前海底测控通常采用电池模块供电,而电池能量有限,这就对测控系统的功耗有较高要求。同时水下测控系统要放入特制的高压舱中,所以对体积、重量也有严格要求。深海测控系统具有采集参数多、控制机构多、功耗要求低、体积、重量要求小的特点。

2.1 模拟输入信号调理电路

输入信号调理电路将现场传感器测量的物理信号转变为电信号,模拟量经过放大、滤波输入ARM单片机A/D。LPC2138有2个10位A/D转换器,能处理16路模拟信号,但是每个A/D的转换范围是0~3.3V,而深海测控中常用到的电量传感器输出0~5V,0~10V等电压信号,有必要将输入的电压信号缩小。本文采用分压的方法同时辅之电压跟随器设计,如图1所示,这种方式可以方便、灵活地应用于各种电压范围广的领域。使用时,首先根据传感器输出值调电位器Rx。当传感器输出电压为零时,运放电路输出也应为零;当传感器输出电压为最大值时,调节Rx,使运放电路输出为LPC2138的A/D转换范围内的最大值。二极管D1,D2的作用是限幅,使AD的电压在0~3.3V之间,保护LPC2138的A/D转换器不受大的信号电压作用而损坏。

2.2 开关量输出调理电路

数字量经过相应的调理后输入到ARM单片机的I/O口等;同时ARM单片机D/A输出的模拟信号经输出调理电路(隔离放大),成为执行机构的功率驱动信号控制执行机构。如图2所示,从LPC2138的I/O口输出的开关量信号进入调理电路,通过3k电阻上拉到5V。输出信号再经过3k限流电阻后到达三极管的基极,以实现虚线框中所示的继电器开关。本文使用的继电器为常开型,即没通电时,继电器是断开的。二极管D1起到保护作用,防止继电器断开时产生的电流击坏三极管Q1。当LPC2138的I/O口输出“0”时,通过三极管后,三极管的集电极由高电平变为低电平,继电器中有电流通过,产生磁场将继电器中的开关由打开状态吸向闭合状态,则24V的电源就通过闭合的开关给MOTO供电以达到启动电机的目的。反之当LPC2138输出“1”时,24V的电源切断给MOTO供电。

2.3 存储器扩展电路

为了避免深海测控系统在工作过程中由于通信线路不畅或是中断等原因造成的数据丢失,本文在深海测控系统中扩展了一片大容量Flash存储器,当系统上岸后可以从Flash存储器中取出数据进行分析。但是由于LPC2138没有外部存储器扩展接口,为此采用了基于SPI接口的串行Flash存储器。

这里采用了Atmel公司的AT45DB081。AT45DB081是一款单电源、低电压、串行接口Flash存储器,它可在系统重复编程,存储容量为8M位,共4096页,每页264字节。除了主存储器外,AT45DB081还包含两个SRAM数据缓冲区,每个缓冲区264字节。当主存储器正在编程时,缓冲区允许接受数据。与传统的并行接口Flash存储器不同,AT45DB081使用串行SPI接口连续地读取数据。简单的SPI串行接口便于硬件引脚排列,提高系统的可靠性,减少了开关噪声,芯片的体积和引脚数目都减少了,从而达到了降低功耗的目的。AT45DB081与LPC2138的连接电路如图3所示。

3 μ C/OS-Ⅱ的移植[2,3]

μ C/OS-Ⅱ是一种专门为微控制器设计的抢占式实时多任务操作系统,它以源代码的形式给出。其内核主要提供进程管理、时间管理、内存管理等服务。系统最多支持64个任务,除了8个μ C/OS-Ⅱ自用的任务外,用户的应用程序最多有56个任务。每个任务均有一个独有的优先级。由于其内核为抢先式,所以总是处于运行态最高优先级的任务占用CPU,系统提供了丰富的API函数,实现进程之间的通信以及进程状态的转化。

μ C/OS-Ⅱ的移植条件是:只要该处理器有堆栈,有CPU内部寄存器入栈、出栈指令;使用的C编译器支持内嵌汇编(inline assembly)或者该C语言可扩展,可连接汇编模块,使得关中断、开中断能在C语言程序中实现。LPC2138芯片内部采用的是ARM7TDMI-S处理器,内部有37个寄存器。其中R13通常用作堆栈指针。堆栈寻址是隐含的,堆栈指针所指定的存储单元就是堆栈的栈顶,堆栈寻址通常有两种方式向上生长和向下生长。ARM处理器有ARM和Thumb两种指令集。每种指令集都有丰富的指令可以对堆栈进行操作。堆栈指针指向最后压入堆栈的有效数据,称为满堆栈(full stack);堆栈指针指向下一个数据项放入的空位置,称为空堆栈(empty stack)。根据堆栈的生长方向不同,可以生成4种类型的堆栈,即满递增、空递增、满递减、空递减。本文所使用的ARM ADS1.2(ARM Developer Suite 1.2 Evaluation Version)开发系统内含的编译器,同样也支持内嵌汇编,所以μ C/OS-Ⅱ完全可以移植到LPC2138上。

深海测控系统根据所需完成的任务,有系统初始化、命令接收、数据采集、数据处理、数据储存、数据发送、状态发送、控制执行机构8个任务。μ C/OS-Ⅱ是按照任务优先级进行任务调度的,必须为每一个任务分配优先级。根据每个任务的实时性要求和重要程度,分别设置以上任务的优先级号,任务优先级号越低,优先级越高。如图4所示。

系统初始化在系统上电开始工作时完成,以后就不进入该任务了。系统初始化包括LPC2138的初始化和各种外部器件如AT45DB081等的初始化。命令接收具有最高的优先级,当系统在读取控制中心发来的命令时是不允许打断,即必须完整地接收命令。数据采集是指从A/D中读取转换的数据到缓冲区,其优先级次之,当数据采集还未完成时,可以进行数据处理和数据储存。数据、状态发送是指将采集到的数据、系统状态上传给控制中心。如果μ C/OS-Ⅱ接收到的命令是驱动执行机构,μ C/OS-Ⅱ还必须执行控制执行机构任务,通过对相应I/O的置“1”和清“0”来实现执行机构的开关。通过μ C/OS-Ⅱ提供的信号量机制,可以很好地完成任务进程的互斥和并发。

4 结束语

通过模拟深海环境实验,基于LPC2138 ARM单片机的深海测控系统在单通道数据采集、多通道分时采集实验中,采集到的海底环境参数符合精度要求,同时能根据系统要求及时输出开关量控制相应的电机工作,通过模拟通信中断实验,串行Flash存储器很好地保存了采集到的参数。移植μ C/OS-Ⅱ操作系统后,工作可靠,性能稳定,基本上满足了低功耗、体积小、重量轻、易扩展的要求。这套系统能广泛应用于海洋油气作业、海洋污染监控和防治、海上渔业生产等,应用前景广阔。

参考文献

[1]LPC2131/2132/2138 User Manual[Z].Philips Semiconductors,2004.

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

ARM的发展战略 篇8

关键词:ARM,BOOTLOADER

1 引言

嵌入式bootloader的作用类似于PC的BIOS,是系统上电后到系统内核接管系统前运行的一段程序,用于完成系统的启动和加载,主要功能是初始化CPU、完成存储器地址映射、为操作系统初始化库函数及堆栈,并在最后跳转到操作系统的入口。它是嵌入式系统开发的一个难点,由于bootloader的设计与硬件环境密切相关,所以几乎找不到一个通用的代码,本文用arm公司的ADS1.2为开发环境,以LPC2210为硬件平台,分析并给出了arm的bootloader的设计思路。

2 bootloader总体分析和部分代码的实现

2.1 设置初始化中断向量表[1]

在arm体系中,中断向量表放在上电后映射在从0x00000000开始的8*4字节的连续存储空间中,其作用是指定了各种异常中断处理程序的入口地址。因为每个异常只对应4个字节,不能放下整个处理程序,只放一条跳转指令,用以跳转到相应程序。中断向量如下:

其中,关键字ENTRY通知编译器保留这一段代码,防止其在做代码优化时认为本段为冗余段而删除,在链接后,确保将该段被链接到地址0处,而且要保证该段的执行域和加载域相同,从而作为整个程序的入口。在部分公司的arm芯片的bootloader中,需要向异常向量表的第六字中写入适当的数值,以保证向量表所有数据32位累加结果为0,才能使用户程序才能脱机运行。

2.2 初始化系统存储设备

这一过程是指对RAM、FLASH的存储设备的地址范围、数据宽度以及DRAM的刷新率进行设置,芯片不同,设置也就不同。本文以LPC2210为例,给出其设置代码:

LPC2210芯片最多可以支持4个分段的存储器,程序中只设置了2个,可以根据自己的要求设置其他两个段,方法相似。

2.3 初始化栈[2]

以arm为IP核的芯片都有7种运行模式,每种模式都需要各自的栈,每种模式都有自己的堆栈指针寄存器SP,且在不同的模式下的指针寄存器的物理地址不相同(系统和用户模式共用一个),通过更改CPSR的模式位可以切换到不同的模式,从而完成对各个模式堆栈的设置。在这一过程中,要最后进入用户模式,原因是一但进入该模式,就不能通过修改CPSR中的状态位进入其他模式。系统在进入初始化堆栈前是工作在管理模式,在这初始化堆栈过程中发生了模式改变,所以要将LR保存,使函数能顺利返回。

2.4 初始化目标板

这一过程包括设定CPU时钟频率、完成地址的REMMAP、打开中断、初始化中断控制器、完成存储设备加速器等一些操作,这一过程在不调用全局变量和静态变量的前提下,可以使用C函数来实现,可以大大减少编码的工作量。本过程与硬件密切相关,所以没有通用代码,需要用户自己编写。

2.5 调用main()主函数[3]

在嵌入式使用C语言编程时,需要很多的C库函数来支持,这些都要在这是调用main()之前要完成相应的初始化,main()函数在ADS1.2中有重要的意义,当其存在的时候,连接器会强制链接到库函数__main和__rt_enry中的代码,如果没有该函数,则不会产生这些链接,C标准函数库则不会被支持。arm的镜像文件是ELF格式,该文件在加载到系统所带的非易失存储器的位置(称之为加载域)和最后执行的位置(称之为执行域)不同,从加载域到执行域的复制也要在调用main()之前完成。在基于ARM的嵌入式系统主程序之前,需要一个完成上述工作的初始化过程,其流程如图1所示。在较高的层面看,初始化程序可以分成三个功能块,__main直接跳到__scattleload,建立运行时的存储器映射,而__rt_entry则负责初始化C库,__scattleload执行代码和数据的复制以及Z I数据的清零。之后跳转到__rt_entry,__rt_entry会进执行4个调用,依次分别是调用__rt_stackheap_init建立堆栈;调用__rt_lib_init初始化库函数并为main()传递参数;,最后跳到应用程序的入口main(),主程序结束后,__rt_entry将库关闭。

__rt_entry函数是arm C库的起点,但是函数本身不能用C语言实现,原因是这个时候为C库函数准备的堆栈还没有建立,需要在__user_initial_stackheap()的配合下通过调用__rt_stackheap_init()来建立C库使用的堆和栈,__user_initial_stackheap()函数的作用是通知__rt_stackheap_init()用户所分配的堆和栈的起点和终点。函数__user_initial_stackheap()的实现方法如下:

该函数要求返回的参说如下:r0作为heap的基地址,r1作为stack的基地址,r2作为heap的长度限制,r3作为stack的长度限制。如果使用内存的单区域模式,则heap和stack被分配到同一段内存,stack从高地址向下增长,heap从该段地址的低端向上增长,此刻r2和r3的值被忽略,如果使用内存的双区域模式,则heap和stack被分开,每个占用一段内存,返回的4个寄存器值都起作用。在复位处理程序中,设置的stack指针由C库初始化代码作为参数自动传递给__user_initial_stackheap,因此在实现该函数的过程中,不必修改r1的值。

2.6 移植u C/OS-II操作系统的相关操作【4】

u C/OS-II的文件系统结构包括核心代码部分、设置代码部分、与处理器相关的移植代码部分,而与处理器相关的移植代码部分则是进行移植过程中需要更改的部分,包括1个头文件os_cpu.h,1个汇编文件os_cpu_a.asm文件,1个C代码文件os_cpu_c.c文件。Os_cpu.h文件包含与处理器相关的常量、宏及结构体的定义,作用是定义数据类型,初始化堆栈方向,设置时钟节拍等一系列工作。os_cpu_c.c文件包含一些oc/os-ii系统运行时所实用的一些程序,其中任务堆栈初始化函数OSTask Stk Init()是系统运行所必需的。Os_cpu_a.asm文件中,需要修改的有4个函数,分别是OSStart High Rdy(),功能是运行优先级最高的就绪任务;OSCtx Sw(),用于实现任务级的任务切换;OSInt Ctx Sw(),实现中断级的任务切换;OSTick ISR(),该函数为时钟节拍中断服务子程序。另外,为了实现uc/os-ii为ARM7提供的通用的中断服务程序的汇编与C函数接口代码,我们还需要在bootloader中编写IRQ.S文件,该文件定义了一个宏,其代码如下:

3 结束语

bootloader是嵌入式系统编程的重要部分,其直接关系到系统应用程序的稳定性和执行效率,写好bootloader是嵌入式编程的关键。本文分析了经过实验验证的LPC2200系列ARM芯片的bootloader启动过程和实现关键,对于其他的以ARM为IP核的SOC的程序设计也有很大的帮助作用。

参考文献

[1]周立功等.ARM微控制器基础与实践[M].北京:北京航空航天大学大学出版社,2003.

[2]ANDREW N.SLOSS、Dominic Symes、Chris Wright.A R M嵌入式系统开发—软件设计与优化[M].沈建华译.北京:北京航空航天大学出版社,2 0 0 5.

[3]杜春雷.ARM体系结构与编程[M].北京:清华大学出版社,2003.

基于ARM的数字温度系统设计 篇9

1 数字温度传感器DS18B20

DS18B20是一种基于片上温度测量技术的数字温度传感装置, 根据传感器数据传输协议由微控制器通过软件在单线总线上产生复位及数据读写时序, 并通过时序进行数据通信。

DS18B20有以下特点:

(1)独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。

(2)测温范围为-55℃~+125℃,固有测温分辨率0.5℃。

(3)支持多点组网功能,多个DS18B20可以并联在唯一的三线上,最多只能并联8个,如果数量过多,会使供电电源电压过低,从而造成信号传输的不稳定,实现多点测温。

(4)工作电源:3~5V/DC。

(5)在使用中不需要任何外围元件。

(6)测量结果以9~12位数字量方式串行传送。

在计算温度值时用资料里面给定的公式:实际温度(触摸屏显示的温度)=测量的温度(温度传感器测量的温度值在存储区)×0.0625。

2 硬件设计

总线控制器采用三星公司的3 2位ARM9微控制器2440, 它有正常,慢速,空闲,睡眠几种模式, 并且性能稳定, 可靠性高。内核为ARM920T, 控制器主频400MHZ。

数字温度传感器输出的是数字信号,可以直接与ARM连接,而不需要ADC。ARM读取DS18B20的数据,每秒提取一次ARM中的数据,进行处理,转化为实际温度。当温度超过35℃时,四个LED全亮,蜂鸣器响,屏幕显示警告对话框。硬件结构如图1所示:

3 软件设计

该设计使用的是TX2440开发板,在实验之前,首先在PC机上搭建软件设计的平台。

VMware6.5中安装Red Hat Linux9.0操作系统。配置Samba服务器,PC机的windows就可以跟虚拟机的Linux共享磁盘。配置nfs服务器,下位机和PC机就可以像访问本地文件一样访问远端系统上的文件。通过nfs挂载, 不需要下载程序,开发板可以运行在PC机上编译好的程序。

安装gcc和arm-linux-gcc。gcc编译出来的程序在本地(PC机)执行,arm-linux-gcc编译出来的程序在目标机 (ARM平台) 上执行。安装Qt和Qt/E。Qt是一个跨平台的C++图形用户界面应用程序框架,它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。Qt/E是Qt的嵌入式版本。

4 运行结果

等待测温时的状态如图3所示:

正常测温时的状态如图4所示:

5 在设备中的应用

在许多设备中,需要实时温度监控。使用数字式温度传感器和合理的现场总线技术,加上系统设计上采用完善的软硬件抗干扰措施,使系统有很强的抗干扰能力.该系统具有投资省,安装施工方便,维护工作量小,测温精度高,运行稳定可靠.性能远优于传统的模拟巡回检测系统.本系统具有广阔的应用前景。

6 结语

本文设计是以S3C2440为控制器,采用数字温度传感器DSl8820进行温度测量。DSl8820集温度测量和A/D转换于一体,直接输出数字信号。大大简化了硬件电路;现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗十扰性,适合于恶劣环境的现场温度测量;而且在一根通信线上可以挂很多这样的数字温度计,能方便地实现多点测温功能。

该测温系统简单,软件界面友好,测温精度高,连接方便,占用口线少,转换速度快,与处理器的接口简单,给硬件设计工作带来了极大的方便,能有效地降低成本,缩短开发周期。

摘要:为了满足测温系统系统对处理速度、实时性和可扩展性等技术指标方面的更高需求, 以高性能的嵌入式ARM9芯片为处理器, 采用嵌入式操作系统Linux, 本文设计了一种软硬件易移植、易裁减, 结构优化的电子交易信息终端。根据资源需求, 给出了测温系统系统设计的硬件结构。在硬件目标平台上移植了Linux操作系统, 构建了嵌入式软件开发平台, 提出了新颖的带中间件模块设计的系统软件结构, 确定了系统任务划分及优先级设定, 并给出了主程序执行流程, 同时阐述了系统实现的一些关键技术。

关键词:ARM,Linux,ds18b20,测温系统

参考文献

[1]宋宝华.设备驱动开发详解[M].人民邮电出版社, 2008.02::21-93

[2]曾庆钟, 温志渝, 陈伯胜.基于ARM的多点测温系统设计[J].现代电子技术, 2007 (17) :127-129

[4]戴振华, 杨海涛, 康云.温室智能温度控制系统设计[J].电子质量, 2007 (12) :31-34

上一篇:企业财务目标评述下一篇:现场教学研究