# ls /mnt
命令将宿主机的 NFS 输出共享目录挂载到/mnt 目录下,因此如果NFS 配置正确的话,应该可以在/mnt 目录下看到/home/work 共享目录的内容。
2.2.2 目标板端NFS 客户端的配置
在宿主机端的设置成功之后,还需要对客户端进行相关的设置。在目标板系统的命令行下,执行如下命令来进行NFS 共享目录的挂载:
/> mkdir /mnt/nfs //建立宿主机输出共享目录的挂载点
/> mount –t nfs –o nolock 192.168.0.10:/home/work /mnt/nfs
/> cd /mnt/nfs
/> ls
此时,目标板终端所显示的内容即为宿主机的输出目录的内容,即宿主机的输出目录/home/work 通过NFS 映射到了嵌入式目标板的/mnt/nfs 目录。由于Linux 默认下不启动NFS,每次宿主机进入Linux 之后都要重新完成NFS 的启动和挂载,比较麻烦。可以将以上的命令写入宿主机的脚本文件/etc/rc.d/rc.local 中,宿主机启动时会执行此文件。
www.55dianzi.com
3 嵌入式Linux 应用程序的开发
完成上述工作之后,嵌入式Linux 开发平台搭建成功。在这个平台上即可以进行相关应用程序的开发。本文采用NFS 方式进行应用程序的开发。
基于 NFS 方式的应用程序开发,首先在宿主机上通过vi 编辑器进行源代码的编辑,然后通过交叉编译,最后生成可执行文件,在嵌入式目标板端通过NFS 方式挂载宿主机的共享分区,让应用程序直接运行在嵌入式目标系统,并进行调试。基于 NFS 方式的开发流程如图4 所示。
图 4 基于NFS 方式的开发流程图
当开发人员完成了应用程序的调试之后,可以将调试好的应用程序下载到目标系统的Flash 中或者直接编译到嵌入式Linux 内核中,从而最终形成一个独立的嵌入式应用系统。下面介绍一个示例来说明基于嵌入式 Linux的应用程序开发流程。该示例使用MiniGUI的静态框、按钮和编辑框空间,实现一个Login 系统登录的对话框。对话框中要求输入用户名和密码,如果输入正确的用户名和密码(例如用户名为51,密码为888888)则进入系统(显示一个主窗口),否则弹出错误对话框,并要求用户再次输入用户名和密码。实现本示例之前,必须确保已经搭建好MiniGUI 编译和开发板上的运行环境。
实验步骤如下:
第一步:编辑源程序
在宿主机的工作目录/home/work 下使用vi 编辑器编辑源程序,源程序名为login.c。
部分程序源代码如下:
// 定义对话框
statIC DLGTEMPLATE MyDlg =
{ WS_BORDER | WS_CAPTION,
WS_EX_NONE,
2, 50, 235, 190,
"登录",
0,
0,
6,
NULL,
0
};
// 定义对话框中的控件
static CTRLDATA CtrlInitData[] =
{
{ "static",
WS_VISIBLE | SS_SIMPLE,
25,10, 200, 16,
IDC_SLOGIN,
"请输入用户名和密码.",
0,
WS_EX_NONE
},
{ "static",
WS_VISIBLE | SS_SIMPLE,
10,40, 60, 16,
IDC_SUSER,
"用户名:",
0,
WS_EX_NONE
},
{ "static",
WS_VISIBLE | SS_SIMPLE,
10,80, 60, 16,
IDC_SPASS,
"密码:",
0,
WS_EX_NONE
},
{ "edit",
WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP,
70,40, 140,25,
IDC_EUSER,
"",
0,
WS_EX_NONE
},
{ "edit",
WS_CHILD | WS_VISIBLE | WS_BORDER | ES_PASSWORD | WS_TABSTOP,
www.55dianzi.com
70,80, 140,25,
IDC_EPASS,
"",
0,
WS_EX_NONE
},
{ "button",
WS_VISIBLE | WS_TABSTOP | BS_DEFPUSHBUTTON,
80,120, 80,25,
IDOK,
"确定",
0,
WS_EX_NONE
}
};
//设置用户名和密码
#define USER_NO 3
statIC char *g_user[USER_NO] = {"root",
"51",
"WXM"
};
static char *g_pass[USER_NO] = {"******",
"888888",
"2046"
};
第二步:修改对应的 Makefile.am 文件,设置编译login.c 文件
在命令行下输入 # make
当命令执行完毕之后,会在当前目录下生成名为login 的可执行文件。
第三步:在目标板挂载共享目录,并运行程序。
/> cd usr
/>usr> portmap&
[26]
/usr> mount –t nfs 192.168.0.10:/home/work /usr/pro –o noLOCk //挂载共享目录
/>cd /usr/pro
/usr/pro ./login //运行程序,显示登入对话框
第四步:使用目标板上的功能键 0~9 输入用户名和密码,使用TAB 键转移到下一个焦点,使用BACK 键删除已输入的字符,使用ENTER 确定输入。当用户名和密码输入正确时,登录成功,登入界面被关闭,并显示一个MiniGUI 主窗口。如图5 示:
图5 “登入”对话框和欢迎界面
4 结束语
作为实时放射性气体气溶胶监测系统的数据采集系统开发的重要组成部分,本文通过分析ARM7 和uCLinux 特点,将二者有机结合,构建了ARM7+uCLinux 的嵌入式通用开发平台,并展示了应用该开发平台开发应用程序的详细过程。该平台的应用克服了大多数实时监测系统因采用8 位单片机为控制核心实现数据采集而带来的硬件电路复杂、稳定性差、升级困难等问题。故本文作者创新点:通过采用ARM7+uCLinux 的嵌入式通用开发平台克服了大多数实时监测系统硬件电路复杂、稳定性差、升级困难等缺点;同时采用该开发平台在开发过程中使用NFS 方式下载开发的应用程序,为嵌入式应用软件的开发节省了大量的时间,大大提高了开发效率。