基于AVR单片机的多任务嵌入式Internet系统设计

发布者:初入茅庐最新更新时间:2013-09-29 来源: dzsc关键字:AVR单片机  嵌入式  Internet系统 手机看文章 扫描二维码
随时随地手机看文章

  1 引言

  目前,嵌入式系统已经广泛渗透到人们的工作、生活中。从家用电器、信息终端、手持通信设备到仪器仪表、制造工业、过程控制等领域,嵌入式设备已随处可见。另一方面,近几年来Internet技术的飞速发展给嵌入式应用带来了新的契机,在未来嵌入式系统中应用Internet技术具有很大的优势。

  目前嵌入式Internet技术的实现主要有下面三种方式 :

  第一种方式是EMIT技术,采用支持TCP/IP协议的高性能服务器作为网关(emGateway), 嵌入式设备通过RS-232、RS-485或者CAN总线等与网关服务器连接,间接通过服务器网关连接Internet。经过多年的发展EMIT技术已经在工业设备的网络化中得到了广泛的应用。但该技术也存在着以下的缺点:由于需要使用高性能的网关服务器,再加上emGateway网关的使用需要缴纳相应的版税,从而使得成本很高;而且网关和设备之间需要专门布线,在嵌入式设备比较分散的情况下极为不便,通信的距离、速度都受到一定的限制。

  第二种方式是采用硬件协议栈芯片进行网络连接,比如Seiko公司的S7600,嵌入式MCU通过接口对其进行控制以达到Internet通信的目的,这时软件只需要增加一段和协议栈芯片通信的接口程序即可,因此开发难度小、周期短。其缺点是系统的硬件成本非常高,而且由于使用的是硬件协议栈,扩展不灵活。

  第三种方式是在嵌入式MCU上用软件实现TCP/IP协议栈,然后通过网络接口芯片连接Internet。在这种方式中由于使用了软件协议栈使得嵌入式MCU本身具有了Internet通信能力,从而省去了高性能网关和硬件协议栈芯片,因此成本非常低,而且扩展起来非常方便灵活,再配上小型嵌入式实时操作系统的支持,就可以实现性价比很高的嵌入式多任务Internet平台。但是要在资源有限的16位甚至8位单片机上实现复杂的操作系统和网络协议栈有一定难度,但近年来随着单片机处理速度的不断提高和内部资源的不断扩展,再加上小型的实时操作系统和网络协议栈的相继推出,使得利用单片机来实现低成本嵌入式多任务网络平台成为可能。

  基于以上背景,本文就来介绍应用在研究课题“低码率视频信号的网络传输”系统中的一种基于AVR单片机的多任务嵌入式网络系统软硬件平台的设计。

2 硬件平台设计

  考虑到以太网接入方式技术成熟、可靠性高、通信速度快和成本低的优点,本系统的硬件平台采用单片机加以太网接口控制芯片组成。由于操作系统和协议栈需要用到大量的数据存储器,因此需要外扩RAM存储器。为了提高通信性能,单片机与以太网接口芯片之间采用并行总线扩展方式进行连接,接口芯片和外部的RAM存储器统一编址。本系统采用了可编程GAL器件ATF16V8进行地址译码,这样不仅可以充分利用地址资源,而且只需要修改ATF16V8的源程序即可实现地址的改变,提高了系统的扩展能力。

  单片机选用高性能的AVR单片机ATmega128。AVR是ATMEL公司结合了成熟的51系列和PIC系列单片机的优点而推出的高性能8位单片机,具有以下特点 :

l   性价比高: AVR单片机内部集成了8路10位的ADC、PWM、E2PROM、WDT、RTC等,具有了片上系统(SOC)的雏形,大幅度降低了系统的整体体积和成本。

  速度快:AVR单片机采用了先进的RISC体系架构,大多数指令可以在一个时钟周期内完成,理论上速度可以达到1MIPS/MHz。而且具有只需要两个时钟周期的硬件乘法器。

l   接口丰富:AVR单片机除可以进行并行扩展外,还具有USART、SPI和I2C串行总线。

l   ISP&IAP:其内部的可擦写FLASH存储器不仅可以进行在线下载,而且具有片上的BOOT程序实现在应用可编程,真正实现同时读写操作。

l   开发方便:AVR是第一款真正为C语言开发设计的单片机,具有多种编译器。而且具有JTAG接口,可以进行在线调试。

l   低功耗:AVR单片机具有六种睡眠模式,可以最大程度的降低系统的功耗。 以太网接口控制芯片采用Realtek公司生产的以太网接口控制器RTL8019AS ,其10M处理能力对于本课题需要的码率为4Mbps视频流的网络传输来说完全满足要求。另外8019AS片内集成了16KByte的RAM用作发送和接收的缓冲区,对其访问可以使用远程DMA方式,从而大幅提高接口的通信能力。需要注意的是,由于ATmega128数据总线是8位,RTL8019AS的IOCS16B引脚应当下拉接地以选择8位总线方式,而且JP引脚要接高电平以选择跳线模式。

  地址译码采用的是ATF16V8,具体是把MCU地址线的高8位作为16V8的译码输入,16V8的3位输出作为译码片选输出:低端RAM(32KB)、高端RAM(32KB)和8019AS的片选。由于8019AS的地址空间仅需要32Byte,而且与高端RAM的地址重叠,为了给RAM分配尽可能多的地址空间,为8019AS分配顶部的256Byte,而把剩余的地址空间全部分配给RAM。上述译码的CUPL描述如下:

CS_RAM_L = ! A15;

CS_RAM_H = A15 & ! (A14 & A13 & A12 & A11 & A10 & A9 & A8);

CS_8019 = A15 & A14 & A13 & A12 & A11 & A10 & A9 & A8;

3 操作系统移植

  uC/OS-II是一个专门为中小型嵌入式应用设计的抢占式的实时操作系统内核,具有源代码公开、移植性好、可裁减、可固化、实时性和安全稳定性高的特点 ,非常适合本系统的应用。uC/OS-II的系统框图如图2所示。

  uC/OS-II与硬件平台无关的代码文件:UCOS_CORE.C、UCOS_II.C等

  uC/OS-II配置代码文件:INCLUDES.H 、OS_CFG.H

图2:uC/OS-II的系统框图[page]

在设计之初就充分考虑了移植性,移植起来非常方便。从图2可以看出,与移植有关的只有3个文件:OS_CPU.H,OS_CPU_C.C和OS_CPU_A.S。

  第1个文件是OS_CPU.H,其中主要定义了一些与编译器有关的数据类型、堆栈的生长方向、临界代码区的保护方式。需要说明的是uC/OS-II中临界代码区的保护方式有3种,本设计采用第3种,即在进入临界区之前把CPU状态寄存器SREG的内容保存到一个局部变量cpu_sr中,在退出临界区之后再还原SREG,这样做的好处是临界区保护不会对SREG产生影响。其中SREG的保存和返回函数必须由汇编语言来写,放在OS_CPU_A.S文件中。

  第2个文件OS_CPU_C.C中主要是任务堆栈初始化函数OSTaskStkInit(),任务创建时调用此函数来初始化任务的堆栈结构。该函数一开始把传入的任务函数的指针存放到硬件堆栈的栈顶,看上去就像该函数在执行过程中发生了中断一样(低字节在先),这样返回后就可以从新的任务开始执行了。需要特别注意的是,在这个函数中必须把CPU状态寄存器SREG的值设为0x80,也就是全局中断使能,否则系统将崩溃。

  最后一个文件OS_CPU_A.S是一个汇编源文件,主要定义了6个汇编函数。首先是临界区保护用到的SREG保存和恢复函数。然后定义的是OSStartHighRdy()函数,它只在系统启动时由OSStart()函数调用一次,所做的工作主要是让系统从最高优先级的任务开始执行,实现的方法和后面要介绍的OSCtxSw()函数相似。OSCtxSw()函数实现的是任务级的切换,首先把当前的任务的状态保存到其任务控制块TCB中,然后把当前优先级最高的任务的TCB中的内容加载到工作寄存器中,这样函数返回后就可以从此任务开始执行了。接下来的OSIntCtxSw()函数实现的是中断级的任务切换,它和OSCtxSw()函数的唯一不同是它是在中断中调用的,因此不需要保存工作寄存器的内容,剩下的和任务级的切换过程完全一样。最后一个定义的是节拍时钟的中断服务子程序,在这个函数中的开始要令中断欠套全局变量加1,并且调用时钟管理函数OSTimeTick(),中断退出时调用系统提供的中断退出函数OSIntExit()。

4 网络平台设计

  LwIP是一套专门为嵌入式系统设计的源码开放的轻型协议栈,最新版本是LwIP1.1.0。LwIP在保持TCP/IP协议基本要求的前提下,通过层与层之间共享内存,避免了许多繁琐的复制处理,这样做虽然破坏了严格的分层思想,但却大幅度地节省了代码和数据存储空间,因此非常适合嵌入式应用。与其他轻型协议栈不同的是,LwIP不仅支持一般的网络协议,比如UDP协议、DHCP协议、PPP协议等,而且还支持多网络接口、IPv6和标准API 。

4.1 LwIP在uC/OS-II上的移植

  针对uC/OS-II和AVR的ICC编译器,LwIP的移植只需要编写arch文件夹下的3个文件——cc.h、sys_arch.h和sys_arch.c。其中cc.h中有与CPU和编译器有关的定义,包括数据结构和大小端存储方式等。其中关键代码区的保护用uC/OS-II中的相应函数替换一下即可。剩下的两个与操作系统有关的文件是移植工作的重点。

  为了增强移植性,LwIP专门把和操作系统有关的数据结构和函数放在一起组成操作系统封装层,为诸如定时、进程同步和消息传递等操作系统服务提供统一的接口,移植时仅需针对不同的操作系统来实现特定的操作系统封装层,这些是由sys_arch.h和sys_arch.c实现的。其中sys_arch.h主要定义与操作系统相关的数据结构——信号量、邮箱和进程号,这些在uC/OS-II中都有对应的实体,要注意的是LwIP中的邮箱对应于uC/OS-II中的消息队列。

  sys_arch.c中要实现和操作系统有关函数的定义,包括系统的初始化以及信号和邮箱的操作——创建、删除、投递和等待,这些功能只需要用uC/OS-II中相应的函数进行重新封装即可。另外,TCP/IP协议栈中需要许多定时器的功能,这在LwIP中是用sys_timeout结构体队列和相应的函数实现的 。每个sys_timeout结构体包括本线程的timeout时间长度,以及超时后的回调处理函数。sys_arch.c中sys_arch_timeouts()函数的功能就是返回当前进程所对应的sys_timeout结构体队列的头指针。本系统用的方法是在系统初始化的时候根据最大的LwIP进程数创建一个sys_timeout结构体指针的数组,以后每创建一个LwIP进程其优先级都从一个连续的已知区间进行分配,sys_arch_timeouts()函数通过调用OSTaskQuery()函数获得进程的优先级进而获得对应的sys_timeout结构体队列的头指针。

4.2 RTL8019AS驱动程序的编写

  RTL8019AS驱动程序做的工作主要是8019AS的初始化、发送和接收以太网数据包。

  初始化函数rtl8019_init()是在添加以太网络接口时由netif_add()函数调用,调用过程中首先初始化此接口对应的全局网络接口结构体,然后设置8019AS的各功能寄存器 。初始化完8019AS之后调用arp_init()函数启动ARP功能,然后用sys_timeout()函数启动ARP缓冲列表生命周期的定时器。

  数据包的发送首先从ARP缓冲队列中查找目的MAC地址,然后构造以太网数据帧的头部,最后调用底层的发送函数low_level_output()将数据帧发送出去。如果找不到对应的IP/MAC项,发送ARP请求数据帧。数据包的接收由中断处理函数rtl8019_ISR()调用,它的执行过程是先调用最底层的接收函数low_level_input()从8019AS中接收数据帧,如果接收的是IP数据包,则更新ARP缓冲队列并把数据包传给网络接口结构指定的函数进行处理。如果接收的是ARP数据包,则调用etharp_arp_input()函数处理。为了提高性能,最底层的接收发送函数采用的都是8019AS的远程DMA工作方式 。

5 总结

  嵌入式设备与Internet的结合代表着嵌入式系统的未来发展方向,目前已有不少科研机构和公司纷纷加入了嵌入式Internet技术的研究行列。在这种背景之下,本文设计了一种基于8位AVR单片机的多任务嵌入式Internet系统平台,并且已经应用在研究课题“低码率视频信号的网络传输”系统中,对于嵌入式Internet技术的推广应用具有参考意义。本文作者创新点:将实时嵌入式操作系统和轻型TCP/IP协议栈结合起来,应用在8位AVR单片机上,实现了低成本的多任务嵌入式网络系统平台。

参考文献:

[1]. RS-232 datasheet http://www.dzsc.com/datasheet/RS-232_584855.html.
[2]. RS-485 datasheet http://www.dzsc.com/datasheet/RS-485_584821.html.
[3]. ATmega128 datasheet http://www.dzsc.com/datasheet/
[4]. RISC datasheet http://www.dzsc.com/datasheet/RISC_1189725.html.
[5]. RTL8019AS  datasheet http://www.dzsc.com/datasheet/RTL8019AS+_1096173.html.
[6]. A15 datasheet http://www.dzsc.com/datasheet/A15_1244519.html.
[7]. A14  datasheet http://www.dzsc.com/datasheet/A14+_1490464.html.
[8]. A13  datasheet http://www.dzsc.com/datasheet/A13+_1244605.html.
[9]. A12  datasheet http://www.dzsc.com/datasheet/A12+_1818348.html.
[10]. A11  datasheet http://www.dzsc.com/datasheet/A11+_1818106.html.
[11]. A10  datasheet http://www.dzsc.com/datasheet/A10+_1817627.html.

关键字:AVR单片机  嵌入式  Internet系统 引用地址:基于AVR单片机的多任务嵌入式Internet系统设计

上一篇:基于AVR单片机电动机智能保护器的设计
下一篇:基于AVR单片机LED显示屏的灰度设计与实现

推荐阅读最新更新时间:2024-03-16 13:28

嵌入式系统的CAN总线接口电路设计
   CAN总线概述   CAN总线即控制器局域网络,是现场总线之一,由德国Bosch公司为汽车的监测、控制系统而设计的总线式串行通讯网络,适合于工业过程控制设备和监控设备之间的互联。是一种多主方式的串行通讯总线,基本设计规范要求有高的位速率,高抗电磁干扰性,而且能够检测出产生的任何错误。主要应用于汽车电控制系统、电梯控制系统、安全监控系统、医疗仪器、纺织机械、船舶运输等方面。CAN具有下下列主要特性:①低成本;②远距离传输(长达lOKm);③高速的数据传输速率;④可根据报文的ID决定接收或屏蔽该报文;⑤可靠的错误处理和检错机制;⑥发送的信息遭到破坏后,可自动重发;⑦节点在错误严重的情况下具有自动退出总线的功能。    嵌
[嵌入式]
基于嵌入式Linux的智能手机系统设计
随着手持通信设备市场的快速发展,手机的功能逐渐增多。现在手机已经不只是用于语音通信的手持设备,而成为集成了短信、彩信、上网以及移动办公等附加功能的嵌入式通信平台。集成了这些功能的手机被称为智能手机。近年,嵌入式处理器的运行速度和功能都有了很大的提高,使得许多以前只能在PC上实现的应用,现在都可以在手持设备上实现。目前,市面上的智能手机主要采用Microsoft公司的ocket PC、Palm OS等商用操作系统,但这些操作系统开放的程序不够高,限制了许多第三方应用软件的移植。为使智能手机能够为第三方应用软件提供一个更为开放的嵌入式平台,笔者对智能手机系统做了比较深入的研究,提出一种以Linux作为嵌入式操作系统、Motorola的
[单片机]
基于<font color='red'>嵌入式</font>Linux的智能手机<font color='red'>系统</font>设计
嵌入式系统中扩展串行口的几种方法
引言   串行接口设备凭借其控制灵活、接口简单、占用系统资源少等优点,被广泛应用于工业控制、家庭安防、GPS卫星定位导航以及水、电、气表的抄表等领域。在这些嵌入式系统中,可能会有很多从设备都通过串行接口与主机进行通信,如GPRS MODEM、红外发送和接收模块、RS485总线接口等。这使得开发人员常常面临嵌入式系统中主机串行通信接口不足的问题,针对此问题,本文介绍了几种常见的解决方法。 软件模拟法   软件模拟法可根据串行通讯的传送格式,利用定时器和主机的I/O口来模拟串行通讯的时序,以达到扩展串口的目的。   接收过程中需要检测起始位,这可以使用查询方式,或者,在端口具有中断功能的主机中也可以使用端口的中断进行处理。接收和发送
[应用]
基于Linux和S3C2410的嵌入式图象传输系统设计
1 引言 如何更好的获得监控现场的图象数据一直是棘手的一个问题,传统的方法是采用CCD摄象机获取现场的视频信息,这种方法易于实现,但成本较高。随着ARM系列处理器应用的越来越广和基于linux的嵌入式技术的迅速发展,利用linux自身带有的TCP/IP协议来实现远程监控、图象传输已成为可能。本文提出的正是一种这样的方法,利用市场上很常见的中星微系列的USB摄象头来得到现场的图象数据,利用linux内核中的Video4Linux编程接口函数采集图象,并把得到的图象通过Internet传输到上位机PC上,在PC上实现图象的保存和显示。 2 硬件系统设计原理 系统的硬件功能框图如图1所示,CPU采用的是三星公司的S3C2410。该
[应用]
EnergyBench 评估嵌入式处理器功耗的工具
各类内置嵌入式处理器的电子产品的功耗目前已经成为系统设计领域的前沿问题。手持式电子产品需要在实现低功耗的同时,最大限度地发挥产品的性能和特色。随着电价的不断提高,高性能系统的设计者不得不面对的挑战是降低能耗,以满足空间限制、散热和能源之星计划所提出的具体要求。但目前尚缺乏一种标准的方法来量化嵌入式器件的实际功耗。   许多处理器厂家在产品参数表中标明了产品功耗,但这些数据却很难相互进行比较。厂家也提供处理器的标准功率,但却很少标示出在测量功率时负载状况。   为解决上述问题,嵌入式微处理器测试基准协会(EEMBC)发明了一种软件工具,显示在运行特定应用负载时处理器的实际功耗。该软件名为EnergyBench,设计者可以利用
[测试测量]
EnergyBench 评估<font color='red'>嵌入式</font>处理器功耗的工具
基于ARM的嵌入式服务机器人是怎样的情况
1 引言 随着人口老龄化进程的加快,更多老年人,尤其是地震和疾病致残的残疾人,都需要照顾。基于此,这里提出一种基于的嵌入式服务机器人控制系统设计。该服务机器人的控制系统是机器人的神经中枢,因而其设计是机器人研究的核心。该控制系统通常以、 等为核心,采用上、下位机二级分布式结构。其中上位机一般为PC机,下位机为或DSP等微控制器。但随着移动机器人的智能化,控制方法的发展,所需计算量增大,一般的单片机等处理器很难完成控制要求。而基于ARM的嵌入式服务机器人的控制器采用分层与结构,充分体现可扩展性、可移植性的设计原则.同时具有低成本、低功耗、体积小巧、可靠性高、智能化高以及通用性等特点。 2 系统整体结构设计 图1为嵌入式
[机器人]
铠侠推出第二代UFS 4.0嵌入式闪存设备
全新的256GB、512GB和1TB闪存设备允许智能手机和移动应用程序充分利用5G网络的高速率 为了继续推动通用闪存(1)(UFS)技术的发展,全球存储器解决方案的领导者铠侠株式会社近日宣布,具有更高性能的第二代 UFS 4.0嵌入式闪存设备 已开始送样(2)。以小封装尺寸提供快速的嵌入式存储传输速度,适用于各种下一代移动应用。铠侠 UFS 产品性能的改进使这些应用程序能够利用 5G 的连接优势,从而加快下载速度、减少延迟时间并改善用户体验。 铠侠UFS 4.0产品将BiCS FLASH™ 3D 闪存和控制器集成在 JEDEC 标准封装中,并结合了 MIPI M-PHY 5.0 和 UniPro 2.0,支持每通道高
[嵌入式]
铠侠推出第二代UFS 4.0<font color='red'>嵌入式</font>闪存设备
市场与高校的缺口:嵌入式人才与培训
近年高校的扩招以及各企业对毕业生经验不断重视,就业已经成为大学生最关心的问题。据中国社会调查所完成的一项在校大学生心理健康状况调查显示,其中75%的大学生认为压力主要来源于社会就业。50%的大学生对于自己毕业后的发展前途感到迷茫,没有目标;41.7%的大学生表示目前没考虑太多;只有8.3%的人对自己的未来有明确的目标并且充满信心。高校培养的人才已经不能满足企业高速发展的需要,特别是对于发展异常迅速的电子、通讯、计算机领域。 ● 嵌入式行业发展状况 嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一。嵌入式系统用在一些特定专用设备上,通常这些设备的硬件资源(如处理器、存储器等)非常有限,并且对成本很敏感,有时对实时响应要求
[焦点新闻]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved