您当前的位置:五五电子网电子知识单片机-工控设备嵌入式系统-技术基于ARM9的32位高端嵌入式微处理器和嵌入式操作系统内核研究 正文
基于ARM9的32位高端嵌入式微处理器和嵌入式操作系统内核研究

基于ARM9的32位高端嵌入式微处理器和嵌入式操作系统内核研究

点击数:7825 次   录入时间:03-04 11:39:06   整理:http://www.55dianzi.com   嵌入式系统-技术

  本文研究的是基于 ARM9 的32位高端 嵌入式 微处理器 和嵌入式 操作系统 内核,设计新型数据采集系统平台,是得到重庆大学创新实验室资助的研发项目。开发软件在uclinux操作系统下进行,本文详细介绍了uclinux开发环境的建立及编译运行、RS232串口模块和以太网模块的软件设计。

  本文是基于嵌入式系统ARM9平台的设计,并得到了重庆大学创新实验室的资助,其系统设计及网络软件编程均经过实践检验,具有较强的通用性,部分功能的改变只需添加或删除相关的代码,不必对整个系统进行大改动,提供的实验步骤具有可操作性。本文是研发小组在研发过程中进行的软件部分总结而编写的。

  1 嵌入式数据采集平台整体设计

  一个完整的嵌入式数据采集平台系统包括硬件和软件两部分。在硬件方面,由于ARM9芯片本身集成的接口比较多,而ARM7本身集成的接口较少,从整个系统的成本来看,选择ARM9与选择ARM7作为控制器的系统总体成本基本上相差不大;而从效果来看,由于ARM9大多数接口都在芯片内部集成,对硬件设计和调试来说,都方便了很多,因此我们采用三星的ARM9芯片S3C2410。由于ARM9芯片的封装基本上都采用BGA封装格式,电路板的设计、制作以及芯片的焊接都比较麻烦,因此采用核心板的方式,这样底板就可以使用两层板,可以节省电路板的制作费用(BGA封装的芯片一般必须使用多层板,制板费比较贵),并且核心板可以重复利用,只要接口相同,同一块核心板可以在不同的底板上使用。

  2 嵌入式数据采集平台硬件

  Embest Arm EduKit II 开发板是实验系统的主要硬件平台,它是英蓓特公司开发的一款全功能ARM开发板,基于Samsung 公司的S3C2410x处理器(ARM920T),资源丰富,特别集成了可连接多种液晶控制器及串行USB主/从控制器单元。硬件系统包含了嵌入式系统开发应用所需的

  大部分设备,如串口、以太网口、USB口、音频输出、LCD及TSP触摸屏、5*4的小键盘、大容量的FLASH和SDRAM等等,完全自主设计的软硬件系统,可以支持使用Embest 或ARM JTAG 仿真器的开发调试[1]。

  由ARM完成了数据包的预处理功能,包括数据包类型的读取;源IP地址,目的IP地址的读取、比较;数据包协议类型的提取;IP数据包头的奇偶校验;TCP/UDP数据包端口提取,检测等。特征值的数据采样也由ARM完成[3]。

  3 嵌入式数据采集平台软件设计

  3. 1 建立uclinux开发环境

  为了实现基于uclinux的应用系统的开发和研究,就必须建立一个完备的 uclinux开发环境。基于uclinux系统的应用开发环境一般是由目标板和宿主PC机所构成。目标板用于运行操作系统和系统应用程序,而目标板所用到的操作系统的内核编译、应用程序的开发和调试则需要通过宿主PC机来完成。双方之间一般通过串口和以太网口建立连接。

  3.1.1 宿主机安装uclinux-Cygwin软件

  Cygwin软件是一个运行于Windows下的Linux模拟环境。它由二部分组成: 其一:动态链接库Cygwin.dll。作为Windows环境下的Linux模拟层,提供标准的Linux API函数。 其二:一组Linux 工具集。使用户可以在Windows环境下使用Linux 环境所提供的各种工具。

  Cygwin提供的一组功能强大的工具,包括大多数GNU软件(如gCC,gdb,xfree86,bash,tetex,opengl,perl,python等),可以将应用程序从Linux移植到Windows平台。 Cygwin对于学习掌握Linux操作环境,或者进行某些特殊的开发工作,尤其是使用GNU工具集在Windows上进行嵌入式系统开发,非常有用[3]。

  3.1.2 宿主机安装开发工具链

  (1)工具链源代码

  工具链源代码从uclinux官方网站下载,下载地址为 http://www.uclinux.org/pub/uClinux/arm-elf-tools/tools-20030314

  (2)工具链的安装

  Win2000系统Cygwin环境的工具链安装软件和Linux系统下的工具链安装解压包:arm-elf-compiler.tar.gz ,linux系统下工具链安装解压包,在控制台使用以下命令安装tar xvzf arm-elf-compiler.tar.gz ,安装arm-elf-tools-cygwin.sh 。

  Win2000下工具链安装脚本文件,在Cygwin下使用以下命令安装,./arm-elf-tools-cygwin.sh ,显示提示信息后直接按回车键安装,工具链将被安装到 /usr/LOCal/armtools目录。

www.55dianzi.com

  3.1.3编译运行uClinux

  uClinux源代码包,文件名为uClinux-dist.tar.gz。

  解压uCLinux源代码包,执行命令:

  mkdir /usr/LOCal/SRC,

  cd /usr/local/src ,

  tar xzvf /tmp/uclinux-dist/uclinux-dist.tar.gz ,解压完毕后,在/usr/local/src下面会有一个文件夹uclinux-dist存放源代码,以后的操作均在此目录下进行。

  3.1.4 配置uClinux

  执行 make xconfig 命令后弹出配置窗口。点击 Target Platform Selection(目标平台选择),弹出窗口,用户根据要求进行设置。

  3.1.5 用户程序配置

  在上节的目标平台配置过程中,选择定制用户程序后将弹出用户程序配置窗口,该窗口详细列出了用户程序配置选项,用户根据应用的需求进行选择,选中的用户程序最终将出现在文件系统中并影响文件系统的大小,用户需要考虑系统是否有相当的资源。在配置过程中不涉及修改的选项采用默认设置。

  编译uClinux ,在Cygwin中依次执行以下命令完成uClinux的编译过程:

  cd /usr/local/src/uclinux-dist , make dep , make clean ,PATH=”/usr/local/armtools/

  bin:$PATH” , make lib_only , make user_only ,make romfs ,make image ,最终在images目录下生成2个文件: zImage( uClinux 内核2.4.x的压缩方式可执行映像文件)、romfs.img (文件系统的映像文件)。

  3.1.6 运行uClinux

  烧写映像文件 使用Embest Flash Programmer 和Embest ARM 仿真器或者其他烧写工具

  将启动软件映像文件bootloader.bin、自己编译生成的内核映像文件zImage、文件系统映像文件romfs.img 烧写到扇区。 然后配置并启动超级终端,启动Win2000下超级终端软件,并设置超级终端为115200 波特率,无校验,1 位停止位,无数据流控制。运行uClinux ,复位系统,在超级终端将显示提示信息,在出现命令提示符“/>”后可输入uclinux各类命令进行操作。

  3.2 以太网模块软件设计

  Linux Socket是通过标准的UNIX文件描述符和其它程序通信的一个方法,其实质是提供了一个进程的端点,可以看作是一种特殊的管道。每个套接字都有一个半相关描述协议,本地地址、本地端口,或者一个全相关描述协议,本地地址、本地端口、远程地址、远程端口。每一个套接字都有一个本地的由 操作系统 分配的唯一的套接字号。本文采用的流式Socket提供可靠的、面向连接的通信流,并使用TCP协议,从而保证了数据传输的正确性。Socket是最为通用的一种基于TCP/IP的网络通信编程机接口,也是在Internet上进行应用程序开发最为通用的一种API。 嵌入式 Socket通信所要调用的主要库函数有:Socket()函数、 bind()函数、connect()函数、listen()函数、aCCept()函数、send()和receive()函数、 receive()函数。

  3.3 网络协议分析及socket编程相关原理

  uCLinux 下的 TCP/IP 网络协议栈的各层之间是通过一系列互相连接层的软件来实现 Internet 地址族的。其中 BSD socket 层由专门用来处理 BSD socket的通用套接字管理软件来处理,它由 INET socket 层来支持。INET socket 为基于 IP 的协议 TCP 和 UDP 管理传输端点。UDP(用户数据报协议)是一个无连接协议,而 TCP(传输控制协议)是一个可靠的端对端协议。传输 UDP 包的时候,uCLinux 不知道也不关心它们是否安全到达了目的地。TCP 则不同。在 TCP 连接的两端都需要加上一个编号,以保证传输的数据被正确接收。在IP 层,实现了 Internet 协议代码,这些代码要给传输的数据加上一个 IP 头,并且知道如何把传入的 IP 包送给 TCP 或者 UDP 协议。在 IP 层以下,就是网络设备来支持所有的 uCLinux 网络工作,如 PLIP、SLIP 和以太网。

  网络的 socket 数据传输是一种特殊的 I/O,socket 也是一种文件描述符,也具有一个类似文件的函数调用 socket()。该函数返回一个整型的 socket 描述符,随后的连接建立、数据传输等操作都是通过该 socket 函数实现的。常用的socket 类型有两种:流式 socket 和数据报式 socket。两者的区别在于:前者对应于 TCP 服务,后者对应于 UDP 服务。

www.55dianzi.com

  3.4 实现步骤与结果

  基于uClinux下的网络接口编写应用程序,要求实现一个简单的客户机/服务器应用,服务器程序接收客户机发送来的字符串并回传给客户端,同时将接收到的字符串打印到串口终端。在uClinux系统下映射主机目录进行程序的调试[3]。

  本节由两部分组成:(1) 开发板做客户端,PC机做服务器;(2)开发板做服务器,PC机做客户端。

[1] [2]  下一页


本文关键字:嵌入式  微处理器  操作系统  嵌入式系统-技术单片机-工控设备 - 嵌入式系统-技术