基于ARM的智能门禁系统设计(5)

2019-04-14 09:51

攀枝花学院本科毕业设计(论文) 系统详细设计与实施

第四章 系统详细设计与实施

4.1 嵌入式Linux开发环境的搭建

Linux操作系统是一种性能优良、源码公开且被广泛应用的免费操作系统,由于体积小、可裁剪、运行速度高、有很好的网络性能等优点,可以作为嵌入式操作系统。因此,本文设计的门禁系统采用Linux内核,因此作为嵌入式系统,对内核的裁剪是相当有必要的,所以,综合考虑系统所需要的功能,对内核进行裁剪,保留需要的那些部分,也是嵌入式Linux系统开发中非常关键的步骤之一,如果对内核的制定有不妥当的,在后续开发过程中很有可能导致系统不支持的现象,到时候只能对内核重新定制和编译。

嵌入式Linux开发环境主要分为两个部分:主机开发环境和开发板系统平台,开发板系统平台又包括bootloader、Linux内核、文件系统。在搭建开发板系统平台的过程中,需要按照顺序分别将Uboot、剪裁后的Linux内核、YAFFS2文件系统烧录到本次设计中所用到的开发板中去。

4.2 主机开发环境的搭建和系统的移植

4.2.1 搭建主机的开发环境

嵌入式开发环境主要是在宿主机上Linux开发环境下建立交叉编译环境,那就是在X86体系的PC机上建立一个ARM上能运行的程序环境。本次设计所使用的是VMware公司的虚拟软件workstation,建立虚拟机,并在虚拟机上安装ubuntu-12.04-desktop-i386。

解压交叉编译工具包cross-4.2.2-eabi.tar,具体的在虚拟机中运行如下命令:

tar jxvf cross-4.2.2-eabi.tar.bz2

这样,内核或其他应用程序可用该路径/usr/local/arm/4.2.2-eabi /usr/bin/arm-linux- 来指定使用该交叉编译器。

4.2.2 U-boot的编译

1)解压源码:tar zxf uboot1.1.6-2012-09-25.tar.gz

2)在board目录下创建forlinx_nand_ram256_config目录添加ok6410.c、

flash.c、memsetup.c、u-boot.lds和config.mk等。

3)在cpu目录下创建arm920t目录,主要包含start.s、interrupts.c、cpu.c、

18

攀枝花学院本科毕业设计(论文) 系统详细设计与实施

serial.c等文件。

4)在include/config根目录下添加forlinux_nand_ram256.h,它定义了全局的宏定义等。

5)修改U-boot根目录下的Makefile文件,如下: forlinx_nand_ram256_config:$(@:_config=)

arm arm920t forlinx_nand_ram256_config

6)配置uboot的编译:make forlinx_nand_ram256_config,如果没有错误就可以开

始进行与硬件相关的代码移植工作。 7)删除以前编译的文件:make clean 8)编译u-boot:make

4.2.3 内核的定制

内核的定制的根本目的是使内核能够根据嵌入式系统的软硬件需求为应用程序提供一个专用的平台。从实现的角度看,内核的定制就是有针对性地定制内核的各项功能。为了提高定制的效率,Linux内核一方面严格按照模块化设计,优化代码结构,尽量减少或避免定制过程中对源代码的修改,另一方面,通过定制Makefile文件的方式来控制源文件的编译过程,以此来避免直接对内核的源文件进行添加和删除。下面即为利用内核配置工具定制满足要求的内核详细步骤。 1)解压内核 tar zxvf linux-3.0.1-2012-09-23.tar.gz 2)指定内核编译路径,将Mikefile中的

export KBUILD_BUILDHOST := $(SUBARCH) ARCH ?= arm

CROSS_COMPILE ?= $(shell if [ -f .cross_compile ]; then \\ cat .cross_compile; \\ fi ) 修改为:

export KBUILD_BUILDHOST := $(SUBARCH) ARCH ?= arm

CROSS_COMPILE ?= /usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-

3)在主目录下输入 make menuconfig 选择System Type选择指定的CPU,本设计

使用的是S3c6410因此选择Samsung S3c64XX如图所示:

19

攀枝花学院本科毕业设计(论文) 系统详细设计与实施

图4.1 内核芯片配置选项截图

4)将需要添加的驱动程序到在需要编译的内核文件里面,需要添加的主要驱动包括USB转串口驱动即PL2303驱动。

设备的驱动程序可以看成是内核与外设之间的接口。而设备驱动程序则是一种可以使计算机和设备通信的特殊程序,可以说相当于硬件的接口的软件实现。在Linux下,设备驱动可以使用和操作文件中的、标准的系统调用函数从而来完成对硬件设备的基本操作例如打开(如open)、读写、关闭和I/O控制。要在Makeflie文件中指定需要开发的处理器体系结构就行了,在编译时使用的编译器、库文件和部分头文件等都与具体处理器结构有很大的关系。下图即为Linux文件系统与设备驱动之间的关系。

图4.2 根文件系统与设备驱动之间的关系图

随着Linux操作系统内核版本的不同基于PL2303的设备驱动也会略微有区别,

20

攀枝花学院本科毕业设计(论文) 系统详细设计与实施

相应的设备驱动程序的安装就是是根据不同的操作系统的需求。以下是对本课题PL2303设备驱动移植的具体步骤。

1)在drivers目录下新建一个驱动目录即 mkdir usb_serial 2)将驱动程序拷贝到新建的目录下

cp /workspace/linux-3.0.1/driver/usb/serial/pl2303.c ./

3)在该目录新建一个Makefile

vim Makefile

添加程序 obj -$(CONFIG_USB_SERIAL) += pl2303.o 5) 在driver那一层的Makefile中添加

obj -y += usb_serial/

6) 在usb_serial文件中新建Kconfig

vim Kconfig

Menu “usb to serial” config USB_SERIAL

booll “Support USB To Serial” endmenu

7) 在driver那层目录中的Kconfig添加

source“drivers/usb_serial/Kconfig”

8) 在主目录下 make menuconfig,在图形界面中选择Device Server,Support USB To Serial如下图所示:

图4.3 选择设备驱动选项

2 1

选择

攀枝花学院本科毕业设计(论文) 系统详细设计与实施

9) 在FORLINX6410_CFG中查看是否CONFIG_USB_SERIAL_PL2303=y 如下图

图4.4 查看内核配置是否选择编译了所选驱动

10) 在主目录下 make zImage,这样需要的驱动设备就被编译进了内核。

4.2.4 文件系统的制作

根文件系统是Linux内核启动后第一个挂载的文件系统。在根文件系统中存放着内存镜像、各种系统配置文件以及一些其他的重要文件(例如设备文件、命令程序等)。为了保证通用性,根文件系统的目录结构遵守FIS标准(Filesystem Hierarachy Standard).FIS标准定义了根文件系统中每个目录名称及其作用的规则规范。

制作根文件系统的基本方法就是创建各个目录以及目录中的文件。创建,目录是非常简单的,既可以通过命令mkdir来创建,也可以在图形界面直接创建。但命令方式比图形方式的效率要高。下面就是对Yaffs2文件系统的具体操作。 1)创建一个新的文件下,在该文件夹下创建如下文件夹:etc bin dev home lib

mnt proc root sbin sys tmp usr opt 一共十四个根文件系统必要的文件; 录中的Makefile,指定编译路径,

2) 解压Busybox tar xvjf Busybox-1.15.1.tar.bz2,编译Busybox,修改源目 3)修改inittab文件、fatab文件、init.d/rcS文件、profile文件, 4)制作yaffs2根文件系统镜像,

5)再将文件系统镜像下载到nand flash并启动。

22


基于ARM的智能门禁系统设计(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:最新电大商法历届试题案例分析题汇总

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: