基于ARM的无线餐厅点菜系统

2017-04-27 12:32陆政
电脑知识与技术 2016年29期
关键词:嵌入式无线

陆政

摘要:跟随时代发展的脚步,科技的快速发展,嵌入式技术的应用在生活中越来越普遍,涉及我们生活中的各个领域,如农业活动的生产,水质监测管理,环境工程和餐厅点菜等各个领域之中。其中,关系到我们日常生活的餐厅点菜系统越来越普遍。本次研究开发的课题是基于ARM的无线餐厅点菜系统的实现,使用Smart210SDK1305开发板,用于方便我们日常生活中在餐厅就餐时的点菜,加菜,埋单等各项服务。当PDA终端提交点菜信息时,信息会自动通过无线接口迅速地将点菜信息传送给ARM开发板的无线串口,无线串口通过数据转换将获得到的信息进行转换后,提交给厨房的服务器终端。通过此种方法来实现手持终端点菜与服务器端确认菜单的功能。

关键词:嵌入式;ARM;无线;点菜系统

中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2016)29-0273-03

1无线餐厅点菜系统的研究意义

无线餐厅点菜设备,通过客人点菜形成初步菜单,通过无线的渠道将菜单信息通过无线发送到后厨。无线餐厅点菜设备的出现大大简化了以往纸质的开台,点菜,加菜,退菜,结账等服务。节约了人力的成本,提高了餐厅服务效率与质量,是具有很大研究意义的一个嵌入式设备。

嵌入式系统的主要特点:①专用的计算机系统;②嵌入式系统必须满足环境的要;③嵌入式系统具有较长的生命周期;④嵌入式系统的实时l生和可靠性;⑤软件代码固化;⑥嵌入式系统必须满足对象系统的控制要求。⑦嵌入式系统需要专业的开发工具和方法进行设计。

2系统总体设计

2.1系统需求分析

由于餐厅点菜时,用一根很长的数据线将手持终端与服务器接收终端相连的话,会导致线路复杂,不方便挪动和成本高等不方便因素。关于无线通信的无线点菜系统的实现利用了嵌入式的低价格,费用低和功耗小等优点对实现无线餐厅点菜有着重大的研究意义,也是有很好的利用价值的。因此,根据论文的设计与理论实现无线餐厅点菜系统的原理,我设计出该系统的总体结构图如图1所示。

依據无线餐厅点菜系统的在技术性上的开发和实际使用中的各种情况的分析,要对该无线餐厅点菜系统进行需求分析,需求分析包含系统功能分析和系统性能分析:

1)系统功能需求分析

根据无线餐厅点菜系统的设计在应用中的具体状况和特点,本次论文的无线餐厅点菜系统要主要包括如下几个方面的功能特点:

①能够进行点菜,退菜,结账;②运用无线通信技术实现手持终端点菜的数据信息传送到后厨的服务器终端;③使用起来简单易懂。

2)系统性能需求分析

该无线餐厅点菜系统是一款针对餐厅内的点菜方便的,因此在实现此系统的性能时要注意如下几个方面:

①系统的实时性;②系统的稳定性;③系统的可扩展性;④系统的易维护性。

2.2系统软件总体结构

无线餐厅点菜系统中LCD模块利用图形界面可以有收集用户点餐信息的功能,无线收发模块有将用户点餐后的菜单在发送给后堂厨房时,起到了数据转换的功能。它们通过无线路由器组成的无线局域网与后堂的服务器终端进行数据通信。其中软件的结构图如图2所示。

根据图2可以知道,在ARM板上的软件的获得过程是在本地系统中得到的,之后通过所设定的文件系统将开发好的应用软件进行编译后的程序下载到ARM开发板上再运行。通过开发板的运行,得到用餐者的点菜,加菜,退菜,结账信息,并在操作完成后通过无线模块的TCP/IP协议将数据转换后发送到后堂服务器终端。

本次研究课题是基于ARM的无线餐厅点菜系统,在餐厅点菜中将起到重大的变革作用,可以很好的改善餐厅点菜效率的底下,结账速度慢等一系列问题。

2.3交叉编译环境的建立

在嵌入式系统上进行编写代码,然后运行,这几乎是个不可能事件。但是,我们有办法解决这个问题,那就是采用交叉编译的方式。

所谓交叉编译就是,在我们编程计算机上装上一个虚拟机,在虚拟机内装上一个我们即将在嵌入式开发板上装人的操作系统,在此系统内进行编写代码,最后通过交叉编译工具将我们所编写的代码转换成能够在嵌入式开发板上直接运行的二进制代码形式,再通过一定的传输工具,将所生产的二进制代码传输到嵌入式开发板的文件系统的指定位置。交叉编译环境示意图如图3所示。

所需资源:linux-2.6.10.tar.gz glibc-2.3.2.tar.gz binutils-2.15.tar.bz2

glibc-linuxthreads-2.3.2.tar.fz gcc-3.3.6.tar.gz

3嵌入式系统的移植与实现

嵌入式Linux的移植涉及:BootLoader的移植,嵌入式Linux操作系统内核的移植与嵌入式Linux操作系统根文件系统的移植。

3.1BootLoader的移植

U-boot的启动分为两个过程:第一个过程是将各种不同的硬件设备进行初始化,为下一步准备RAM空间,保存信息,堆栈空间的设置等工作;第二个过程是在第一个过程的基础上加载操作系统的内核和根文件系统,一般是使用C语言设计该部分内容,因为C语言的主要特点是读性和移植性。U-boot的启动流程如图4所示。

3.2嵌入式Linux内核的移植

内核是所有嵌入式Linux系统的核心软件,内核移植是一个相当复杂的任务,也是基于ARM的嵌入式开发过程中十分重要的一个环节。内核移植过程包括内核的配置、内核的编译和内核下的载。

1)内核配置:

①修改Makefile:修改根目录下Makefile中交叉编译器的版本和所要使用的体系结构。

②设置NAND Flash分区:建立Flash分区表,用来划分内存空间的,以及每个分区的起始地址与空间大小。

③配置内核选项:依照所使用的开发板的配置文件进行相应的配置。

2)内核编译:

①清除冗余文件:首先进人根目录,清除之前编译过而残留下来的.config和.o文件。

②编译内核映像和模块:make zImage:编译生成gzip压缩形式的image。

make bzImage:编译生成较大些的内核。比上面一条命令生成的大。

make modules:编译在配置时选择的模块。

make modules_install:将make modules生成的模块文件复制到相应的目录。

③安装模块

#make modules_install

默认情况下模块被安装到/lib/modules目录下。

3)内核下载

首先在开发使用的宿主机上建立一个tftp服务。然后使用超级终端或DNW工具启动目标板。

#tftp 0x30008000 zImage

3.3文件系统移植与实现

文件系统是文件存放在存储设备上的组织方法。主要体现在对文件和目录的组织上,UNIX系統中,文件系统是最基本的资源。在内核和文件系统之间通过制定一个标准的接口实现,在不同文件结构之间可以有不同的文件系统的接口来实现数据的交换。常见的文件系统目录如图5所示:

制作根文件系统:

①建立lu设备的临时挂载点:#mkdir/mnt/lu

②建立一个大小为15MB的临时文件:#dd if=/dev/zero of=/tmp/lu_tmp bs=1k count=15360

③联接设备与临时文件:#losetup/dev/lu0/tmp/lu_tmp

④将/dev/lu0格式化位ext2文件系统:#mke2fs-m0/dev/lu0

⑤把虚拟盘挂载在节点/mnt/lu上:#mount-t ext2/dev/lu0/mnt/lu

⑥用cp命令将需要的文件复制到虚拟盘上。

⑦卸载文件系统,得到文件系统映像:#cd/mnt/lu#un-mount/mnt/lu

⑧压缩文件系统映像:#gzip/tmp/lu_tmp>/tftpboot/ram-disk.gz

4服务器端详细设计

服务器端是用来采集终端设备关于点菜,加菜,退菜等操作的菜单信息采集。并且实时将手持终端发送到的数据保存到数据库中,数据库经过处理后将处理后的数据通过无线收发模块进行传送给指定的IP终端。

服务器端的主程序共有两个子模块。如图6所示,第一个子模块分负责数据采集、数据保存处理;第二个子模块负责监听来自手持终端的命令,及返回请求数据。

主程序代码如下所示。

由以上代码可以看出我创建了两个子进程分别负责采集和监听命令。主进程不做具体事宜只负责进程不被杀死。

5结束语

现在人们的日常生活中的各种便捷式的电子设备的开发都越来越离不开基于ARM的开发了。本次开发过程简单上看是在做一个基于ARM的无线餐厅点菜系统,实际上基于ARM的开发的大多套路都是和我们此次开发的过程是类似的。区别仅仅在于具体的软件代码实现。

此次开发的工期不长,由于个人在专业方面的知识的限制,很多地方可能都有不完善的地方,有待大家的完善与指正。

猜你喜欢
嵌入式无线
基于ARM的无线WiFi插排的设计
搭建基于Qt的嵌入式开发平台
嵌入式软PLC在电镀生产流程控制系统中的应用
ADF7021-N在无线寻呼发射系统中的应用
Altera加入嵌入式视觉联盟
倍福 CX8091嵌入式控制器