微波EDA网,见证研发工程师的成长!
首页 > 通信和网络 > 通信网络技术文库 > 基于ARM9的嵌入式网关的研究

基于ARM9的嵌入式网关的研究

时间:11-17 来源:互联网 点击:
软件部分设计

嵌入式系统的软件部分分为BootLoader的编写、操作系统与文件系统的移植、应用程序的编写三部分。

BootLoader的编写

BootLoader是系统加电后运行的第1段软件代码,即处理器芯片复位后进入操作系统之前执行的一段代码,主要是为运行操作系统提供基本的运行环境,如初始化CPU堆栈、初始化存储器系统等。BootLoader代码与CPU芯片的内核结构、具体芯片和使用的操作系统等因素有关,其功能类似于PC机的 BIOS。通过运行BootLoader程序,可以初始化存储器等硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,为最终调用操作系统内核准备好正确的环境。其一般编写的步骤为:

(1)屏蔽所有的中断。为中断提供服务通常是操作系统或设备驱动程序的责任,因此,在BootLoader的执行全过程中可以不必响应任何中断;

(2)设置中断向量;

(3)设定存储器控制寄存器;

(4)初始化堆栈和寄存器。系统堆栈初始化取决于用户使用了哪些中断,以及系统需要处理哪些错误类型、并且定义处理器的几种工作方式。一般来说管理者堆栈必须设置,如果使用了IRQ中断,则IRQ堆栈也必须设置;

(5)如有必要则需要改变处理器模式、状态;

(6)初始化C语言所需的存储器空间。为正确运行应用程序,在初始化期间应将系统需要读写的数据和变量从ROM拷贝到RAM中。一些要求快速响应的程序,如中断处理程序,需要在RAM中运行;如果使用Flash,对Flash的擦除和写入操作也是在RAM里运行的。

嵌入式系统的启动程序是严重依赖于硬件的,所以需要用汇编语言来进行编写。完成上述步骤后,系统就完成了对硬件和软件运行环境的初始化。最后将实时操作系统代码从Flash读入到内存空间中,开始运行实时操作系统。

操作系统与文件系统的移植

Linux作为一种优秀的操作系统,近几年在嵌入式领域异军突起,成了最有潜力的嵌入式操作系统。突出的一个优点就是免版税和开放源码,另外它可应用于多种硬件平台,具有良好的移植性、高的可靠性、优秀的网络功能、完备的文件系统以及丰富的API,为嵌入式网关提供了强大的软件支持。因此,本文选择 Linux作为嵌入式网关的操作系统。对Linux的移植有以下几个步骤:

(1)下载Linux源代码,建立交叉编译环境;

(2)配置和编译内核;

(3)制作文件系统,编写相应的设备驱动程序;

(4)下载,调试和执行内核,并在文件系统中添加自己的应用程序。

应用程序的编写

本文利用Socket套接字和TCP/IP协议编写了一个简单的客户机/服务器模式的网络应用程序。因为本系统只是起到网关的作用,只需实现现场总线和以太网上位机两方之间的通信,并不需要处理其数据的逻辑意义和内容。在这种模式下,以太网上位机被设定为服务器,它运行了服务器端的应用程序。该程序主要用于监听服务器端口、接受客户端的连接请求、接受客户端的信息、向客户端发送信息等。网关系统中运行的是客户端程序,该程序主要是用于申请连接到服务器、将现场总线方发来的消息向服务器发送、处理服务器发来的信息、将这些信息发送给现场总线系统。应用程序软件流程如图2所示。



软件中调用的函数主要有:

(1)intsocket(intfamily,inttype,intprotocol)。此函数为通信创建一个端口,若正常调用将返回一个整型的文件描述符,错误调用将返回-1。

(2)intbind(intsockfd,conststructsockaddr

*address,size-taddress-len)。此函数一旦Socket调用成功并返回了一个文件描述符,便将该Socket与服务器本机上一个端口相关联,就可以在该端口监听服务请求。该函数只用于服务器端程序,客户端无须调用此函数。

(3)intlisten(ints,intbacklog)。服务器用来监听是否有服务请求。

(4)intaccept(intsockfd,void*addr,int*addrlen)。连接端口的服务请求。但某个客户端试图与服务器监听的端口连接时,该连接请求将排队等待服务器调用此函数接受它。

(5)intsend(intsockfd,constvoid*msg,intlen,intflags);recv(intsockfd,void*buf,intlen,unsignedintflags)。发送和接收数据。

(6)intconnect(intsockfd,structsockaddr*serv-addr,intaddrlen)。此函数用来与远端服务器建立一个TCP连接。

(7)intclose(intsockfd)。结束数据传输。

结束语

本文介绍了以S3C2410处理器为核心、用RTL8019AS作为网络接口芯片的嵌入式以太网接口的具体软、硬件方法,可用于工业现场实现现场节点的自动上网,从而实现对现场远程控制,具有很好的发展前景。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top