位置:51电子网 » 技术资料 » 通信网络

嵌入式实时操作系统与网络构件的设计

发布时间:2008/5/29 0:00:00 访问次数:438

1、引言

  近年来,嵌入式实时操作系统接入网络后将使远程监测、远程控制、远程诊断和远程维护变得越来越容易。从根本上讲,嵌入式设备接入网络,当前基本上所采用的网络协议是基于tcp/ip通信协议。

由于嵌入式系统是以计算机技术为基础、软硬件可裁减并对成本、体积、功耗有严格要求的专用系统,它对tcp/ip通信协议的支持有其自身的特点,这些特点也决定嵌入式实时操作系统与网络构件的体系结构。

本方案以lpc2210为核心元件研究了嵌入式实时操作系统与网络构件的硬件电路,同时在μc/os-ⅱ平台上编写了应用软件程序。

2、嵌入式实时操作系统与网络构件的系统整体结构

  系统采用philips公司lpc2210微处理器,外扩一片flash sst 39vf160,并接入rtl8019as以太网芯片(webchip),再与接口连接器hr901170a相连。并将开放源代码的tcp/ip协议栈 lwip移植到μc/os-ⅱ系统上。

rtl8019as以太网芯片(webchip)是独立于各种微控制器的专用网络接口芯片,它通过标准的输入、输出口与mcu相连。具有16位的数据总线 和24为的地址总线,并且内部集成了dma控制器、isa总线控制器和集成16k sram、网络phy收发器,兼容ne2k标准。用户可以通过dma方式把需要发送的数据写入片内sram中,让芯片自动将数据发送出去;而芯片接收到数 据后,用户可以通过dma方式将其读出。

hr901170a是中山市汉仁电子有限公司生产的rj45接口连接器(带网络变压器/滤波器),该连接器满足ieee802.3和ieee902.3ab标准,能够较好的抑制电磁干扰。通过hr901170a系统就可以连接到以太网上了。

该方案设计相对简单,硬件电路中采用的lpc2210是philips公司推出的微处理器,带有16k ram,76个通用i/o口,12个独立外部中断引脚,集成有8通道的10位a/d,能够基于芯片设计复杂的系统。虽然lpc2210具有较快的访问速 度,但片内没有集成flash,所以这里扩展一片16mbit flash sst 39vf160保存用户程序。其架构满足了μc/os-ⅱ正常运行的基本要求。

3、嵌入式实时操作系统与网络构件的软件设计

为使嵌入式实时操作系统与网络构件具有交好的实时性和稳定性,在实时多任务操作系统μc/os-ⅱ平台上设计系统软件。系统中各个任务在宏观上按照一定的 关系并行工作,cpu资源得到充分利用,系统可靠性得到很大的保证,方便组织开发任务。在μc/os-ⅱ平台上,软件设计工作主要包括三个方面的内容: μc/os-ⅱ在lpc2210上的移植和lwip协议在μc/os-ⅱ上的实现以及系统应用软件的编写。

该系统采用源码公开的嵌入式实时操作系统μc/os-ⅱ,版本号为v2.52。其特点是源码公开、可读性强、移植性好、可配置、可裁剪。它采用优先级抢占 式调度方案,优先级最高的任务一旦准备就绪,则拥有cpu的所有权并开始投入运行。μc/os-ⅱ的软硬件体系结构图如图3所示。应用程序建立在操作系统 之上,处于系统的顶层,每个任务在宏观上是并行运行。与cpu类型无关的代码提供了系统服务,即内核、任务管理、内存管理等。μc/os-ⅱ的移植部分用 于完成与不同处理器的接口工作。μc/os-ⅱ的移植必须要求处理器及其编译器满足一定的条件。

μc/os-ⅱ的移植工作主要集中在下面几个文中:os_cpu.h,os_cpu_a.asm,os_cpu_c.c。另外,在includes.h中 必须包括lpc2210文件lpc2210.h;os_cfg.h用于系统应用μc/os-ⅱ中的初始化配置。os_cpu.h主要包括了一些与处理器和 编译器相关的常量和类型定义等,而且要注意的是lpc2210的堆栈方向是由高到低,用os_stk_growth来设置堆栈的增长方向。因此将 os_stk_growth设为1。
os_cpu_a.asm中需要编写4个汇编语言函数:os_task_sw(),os_intctxsw(),osstarthighrdy()和ostickisr()。

osstarthighrdy()代码如下:

ldr r4, addr_ostcbcur

;获得当前任务tcb地址

ldr r5, addr_ostcbhighrdy

;获得优先级最高任务tcb地址

……

;恢复cpu工作模式

ldmfd sp!, {r4}

msr spsr_cxsf, r4

ldmfd sp!, {r4}

msr cpsr_cxsf, r4

ldmfd sp!, {r0-r12, lr, pc}

os_task_sw( )函数汇编代码如下:

stmfd sp!, {lr} ;保存pc

stmfd sp!, {lr} ;保存lr

stmfd sp!, {r0~r12}

;保存寄存器和返回地址

……

;得到当前任务tcb地址

ldr r4, addr_ostcbcur

ldr r5, [r4]

str sp, [r5]

;保存sp在被占先任务的tcb

;得到最高优先级任务的tcb地址

ldr r6, addr_ostcbhighrdy

ldr r6, [r6]

ldr sp, [r6]

;得到新任务堆栈指针

;ostcbcur = ostcbhighrdy

str r6, [r4]

;设置新的当前任务的tcb地址

……

osintct

1、引言

  近年来,嵌入式实时操作系统接入网络后将使远程监测、远程控制、远程诊断和远程维护变得越来越容易。从根本上讲,嵌入式设备接入网络,当前基本上所采用的网络协议是基于tcp/ip通信协议。

由于嵌入式系统是以计算机技术为基础、软硬件可裁减并对成本、体积、功耗有严格要求的专用系统,它对tcp/ip通信协议的支持有其自身的特点,这些特点也决定嵌入式实时操作系统与网络构件的体系结构。

本方案以lpc2210为核心元件研究了嵌入式实时操作系统与网络构件的硬件电路,同时在μc/os-ⅱ平台上编写了应用软件程序。

2、嵌入式实时操作系统与网络构件的系统整体结构

  系统采用philips公司lpc2210微处理器,外扩一片flash sst 39vf160,并接入rtl8019as以太网芯片(webchip),再与接口连接器hr901170a相连。并将开放源代码的tcp/ip协议栈 lwip移植到μc/os-ⅱ系统上。

rtl8019as以太网芯片(webchip)是独立于各种微控制器的专用网络接口芯片,它通过标准的输入、输出口与mcu相连。具有16位的数据总线 和24为的地址总线,并且内部集成了dma控制器、isa总线控制器和集成16k sram、网络phy收发器,兼容ne2k标准。用户可以通过dma方式把需要发送的数据写入片内sram中,让芯片自动将数据发送出去;而芯片接收到数 据后,用户可以通过dma方式将其读出。

hr901170a是中山市汉仁电子有限公司生产的rj45接口连接器(带网络变压器/滤波器),该连接器满足ieee802.3和ieee902.3ab标准,能够较好的抑制电磁干扰。通过hr901170a系统就可以连接到以太网上了。

该方案设计相对简单,硬件电路中采用的lpc2210是philips公司推出的微处理器,带有16k ram,76个通用i/o口,12个独立外部中断引脚,集成有8通道的10位a/d,能够基于芯片设计复杂的系统。虽然lpc2210具有较快的访问速 度,但片内没有集成flash,所以这里扩展一片16mbit flash sst 39vf160保存用户程序。其架构满足了μc/os-ⅱ正常运行的基本要求。

3、嵌入式实时操作系统与网络构件的软件设计

为使嵌入式实时操作系统与网络构件具有交好的实时性和稳定性,在实时多任务操作系统μc/os-ⅱ平台上设计系统软件。系统中各个任务在宏观上按照一定的 关系并行工作,cpu资源得到充分利用,系统可靠性得到很大的保证,方便组织开发任务。在μc/os-ⅱ平台上,软件设计工作主要包括三个方面的内容: μc/os-ⅱ在lpc2210上的移植和lwip协议在μc/os-ⅱ上的实现以及系统应用软件的编写。

该系统采用源码公开的嵌入式实时操作系统μc/os-ⅱ,版本号为v2.52。其特点是源码公开、可读性强、移植性好、可配置、可裁剪。它采用优先级抢占 式调度方案,优先级最高的任务一旦准备就绪,则拥有cpu的所有权并开始投入运行。μc/os-ⅱ的软硬件体系结构图如图3所示。应用程序建立在操作系统 之上,处于系统的顶层,每个任务在宏观上是并行运行。与cpu类型无关的代码提供了系统服务,即内核、任务管理、内存管理等。μc/os-ⅱ的移植部分用 于完成与不同处理器的接口工作。μc/os-ⅱ的移植必须要求处理器及其编译器满足一定的条件。

μc/os-ⅱ的移植工作主要集中在下面几个文中:os_cpu.h,os_cpu_a.asm,os_cpu_c.c。另外,在includes.h中 必须包括lpc2210文件lpc2210.h;os_cfg.h用于系统应用μc/os-ⅱ中的初始化配置。os_cpu.h主要包括了一些与处理器和 编译器相关的常量和类型定义等,而且要注意的是lpc2210的堆栈方向是由高到低,用os_stk_growth来设置堆栈的增长方向。因此将 os_stk_growth设为1。
os_cpu_a.asm中需要编写4个汇编语言函数:os_task_sw(),os_intctxsw(),osstarthighrdy()和ostickisr()。

osstarthighrdy()代码如下:

ldr r4, addr_ostcbcur

;获得当前任务tcb地址

ldr r5, addr_ostcbhighrdy

;获得优先级最高任务tcb地址

……

;恢复cpu工作模式

ldmfd sp!, {r4}

msr spsr_cxsf, r4

ldmfd sp!, {r4}

msr cpsr_cxsf, r4

ldmfd sp!, {r0-r12, lr, pc}

os_task_sw( )函数汇编代码如下:

stmfd sp!, {lr} ;保存pc

stmfd sp!, {lr} ;保存lr

stmfd sp!, {r0~r12}

;保存寄存器和返回地址

……

;得到当前任务tcb地址

ldr r4, addr_ostcbcur

ldr r5, [r4]

str sp, [r5]

;保存sp在被占先任务的tcb

;得到最高优先级任务的tcb地址

ldr r6, addr_ostcbhighrdy

ldr r6, [r6]

ldr sp, [r6]

;得到新任务堆栈指针

;ostcbcur = ostcbhighrdy

str r6, [r4]

;设置新的当前任务的tcb地址

……

osintct

相关IC型号

热门点击

 

推荐技术资料

耳机的焊接
    整机电路简单,用洞洞板搭线比较方便。EM8621实际采... [详细]
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!