会员注册
发布信息

嵌入式Linux NFS方式下应用程序的实现
    

  0 前言

  嵌入式Linux下的应用程序的开发,与Windows下应用程序的开发大不相同。在Windows环境中,可以直接在PC上使用各种集成编译开发工具,完成程序编辑、编译和运行,而在嵌入式Linux环境下,缺少简单、高效的开发工具,程序的开发需要在PC+嵌入式Linux平台完成。因此,在程序的调试运行过程中,需要在Linux服务器和嵌入式开发板间交换信息,这种信息交换目前最常用的方式是FTP方式,即:先在Linux服务器上编辑源文件,然后交叉编译生成可执行文件,再通过FTP下载到嵌入式主机系统中运行,如出现错误则回到Linux服务器上重新编译,再下载运行,直到程序正确运行为止。但FTP方式缺点是效率比较低,而且无法在线调试。这里笔者讨论另一种更高效率的信息交换方式,即:NFS(网络文件系统)方式下嵌入式Linux下的应用程序的实现方法。本文以三星公司ARM9内核芯片S3C2410开发板接口为基础,软件采用Linux 2.4.21,编译器为arm-linux-gcc的交叉编译器。

  1 嵌入式Linux开发平台的建立

  在嵌入式Linux下开发应用程序,必须建立一个完善的嵌入式Linux开发环境。

  1.1 嵌入式Linux开发平台构架

  嵌入式Linux 开发平台构架主要包括:嵌入式Linux 服务器、工作站、嵌入式开发板系统,其结构如图1所示。

嵌入式Linux开发平台

  嵌入式Linux 服务器由一台PC充当,主要作为嵌入式Linux内核编译、应用程序编译的公共平台,这里安装标准的Redhat Linux操作系统 ,工作站为普通局域网计算机,可以是一台或多台,安装Windows操作系统,一般用来完成各种日常工作,可视需要与Linux 服务器、嵌入式开发板系统连接,嵌入式开发板系统是用来开发嵌入式应用程序,它必须与Linux 服务器进行网络连接,目的是建立网络文件系统,把Linux服务器上的特定目录共享到待调试的嵌入式开发板系统上,从而实时地对应用程序进行编辑、编译、调试。另外嵌入式开发板系统可通过串口与工作站RS232连接,使用工作站上的超级终端作为嵌入式开发板系统上的输入/输出终端。

  1.2 嵌入式开发板操作系统的移植

  嵌入式开发板操作系统就是嵌入式Linux,它指的是标准Linux操作系统的内核,把标准Linux操作系统的进行适当的裁剪,加入一些特定的功能,形成一个小巧、高效的满足特定需要的专用操作系统,然后移植到ARM体系结构的开发板系统上,移植主要包括建立交叉编译环境、修改内核源码、内核裁剪和内核编译4个环节。

  1.2.1建立交叉编译环境

  交叉编译是指利用运行在某台计算机上的编译器编译某个源程序生成在另一种结构计算机上运行的目标代码的过程。编译器的生成依赖于相应的函数库,而这些函数库又得依靠编译器来编译。建立交叉编译环境就是将ARM使用的编译器(如:arm-linux-gcc)和函数库(如:glibc)安装到指定目录,并使用configure配置好Makefile文件。

  1.2.2 修改内核源代码

  Linux内核分为体系结构相关部分和体系结构无关部分。在Linux启动的第一阶段,内核与体系结构相关部分首先执行,它会完成硬件寄存器设置,内存映射等初始化工作。然后把控制权转给内核中与系统体系结构无关的部分。在移植工作中要修改的代码主要集中在与体系结构相关的部分。ARM芯片的体系结构在arch/arm目录下。首先根据芯片手册修改boot/init.S文件中的:片选组基地址寄存器、DRAM存储配置寄存器、DRAM片选寄存器、中断屏蔽寄存器等。然后修改内核的链接及装入ELF。最后将系统中可用页面的数目、文件系统大小等信息以参数形式从启动代码传给内核,完成设置陷阱,初始化中断,初始化计时器,初始化控制台等一系列操作而使内核正常启动。

  1.2.3 内核裁剪和编译

  Linux内核的裁剪支持三种配置方式,即make confg、make menuconfig、make xconfg,一般采用菜单式用命令make menuconfig对系统进行裁剪样较为简单(具体见ARM9配置手册)。内核裁剪之后,最后要进行交叉编译后在arch/arm目录下生成内核映象文件zImage,分别使用命令如下:make clean(清理编译环境);make dep(编译依赖文件);make zImage(编译内核)进行内核编译。

  2 嵌入式Linux NFS开发环境的建立

  NFS(Network File System)即:网络文件系统,它是一种将远程主机上的目录通过网络连接到本地主机的一种机制。通过对网络文件系统的支持,用户可以很方便地在本地主机上操作远程主机上的共享目录。因此,可以通过建立网络文件系统,把Linux服务器上的特定目录共享到嵌入式开发板系统上,这样就可以直接在嵌入式开发板上操作Linux服务器,特别是能够实时在线地对程序进行编辑、调试、运行,极大地提高了嵌入式Linux下的应用程序的开发的效率。

  嵌入式Linux 开发平台下的NFS环境配置,主要是对嵌入式Linux服务器端的NFS配置和嵌入式开发板系统的NFS客户端配置,使其支持NFS。

  2.1 Linux服务器端的NFS配置

  以root账户登录Linux服务器,编辑共享目录配置文件exports,设定共享目录及权限,执行# vi/etc/exports命令,在exports文件中添加 /home/work  192.168.33.*(rw)后保存,其作用是是将/home/work设为共享目录,IP地址在192.168.33.*范围内的计算机可以用读写的方式访问共享目录/home/work;接着执着命令#/etc /rc.d /init.d /protmap start来进行端口映射;最后执行命令#/etc /rc.d /init.d /nfs start来启动NFS服务,启动NFS服务后,还需检查Linux服务器的iptables、ipchains等选项及文件/etc/hosts.deny、/etc/hosts.allow来确保没有屏蔽NFS使用的端口和允许通信的主机。配置完毕后,可以在Linux服务器上运行如下命令:

  # mount –t nfs 192.168.33.1:/home/work /mnt 进行NFS服务器的回环测试,验证共享目录是否能够被访问,若配置成功,执行 # is/mnt命令后,能够在/mnt目录中看到/home/work共享目录中的内容。


相关阅读:  
  • 第29章网络文件系统
  • 基于LPC2210的嵌入式Linux开发平台构建
  • 嵌入式uClinux应用程序的NFS开发
  • ubuntu下mini2440的NFS挂载
  • NetWare与UNIX的互联方法与实现
  • 华恒COLDFIRE系列嵌入式LINUX开发套件常见问题解答
  • 华恒COLDFIRE系列嵌进式LINUX开发套件常见题目解答
  • Linux网络存储器的设计
  • 嵌入式LinuxNFS方式下应用程序的实现
  • 容错技术在分布式多层应用系统中的实现
  • Linux网络存储器的设计
  • 集成WindowsAzure:适用于企业的WindowsAzure平台
  • 基于SVM的0MAP5912非特定人嵌入式语音识别系统的实现
  • 如何开发自己的嵌入式系统
  • Java嵌入式开发之二J2ME之谜
  • 第11章UDP:用户数据报协议
  • 基于分布式环境的子进程监控软件设计与实现
  • 第二章WindowsCE系统结构
  • 第1章嵌进式系统概述
  • 开发WindowsMobile应用程序入门
  • 用于嵌入式计算机性能评测工艺及其方法研究
  •  
     
     

    时间:2011年02月15日 18:52:50 来源: 作者: 上一篇:ARM流水线关键技术分析与代码优化 下一篇:mTouch触摸解决方案具有良好的环境和使用适应性  (电脑版  手机版)
    Copyright by www.chinabaike.com;All rights reserved.