基于嵌入式linux的点餐系统计算机科学与技术毕业论文内容摘要:

个 I2S 总线控制器,以及 4 个PWM 定时器和 1 个内部定时器、通用 I/O 口、实时时钟、 8 通道 10 位 ADC 和触摸屏接口、 USB 主、 USB 从、 SD/MMC 卡接口等。 现在它广泛应用于 PDA、移动通信、路由器、工业控制等领域。 开发环境 绝大多数的 Linux 软件开发都是以 本机开发方式进行的。 由于嵌入式系统一般资源都比较紧张,不能在本机(即开发板)运行开发工具,因此,嵌入式系统的开发采用一种叫做交叉编译调试的方式。 为了 进行交叉编译与调试,需要在宿主机(运行编译与调试工具的机器)上构建一些工具与搭建合适的环境,比如安装交 叉编译工具链,建立 tftp 服务器,构建网络文件系统 nfs 等。 交叉编译工具链 交叉编译工具链的目的是为了在一个平台体系结构下能编译、链接、处理和调试另一个平台体系结构下的程序,使得编译生成的程序能够在另一个平台下运行。 Linux 使用的是 GNU 的工具链,包括: binutils, gcc, glibc 等。 与 JXARM924101 开发板 配套的光盘里 有交叉编译工具链,版本号为,解压在宿主机的 /usr/local/arm/ 目录下。 同时,移植 mSQL 时也会 7 用到版本号为 的交 叉编译工具链。 具体情况可见参考文献 [1]。 在编译过程中,经常接触的工具除了交叉编译工具链外,还有一个就是 GNU make 程序。 make 完成开发项目中自动编译的工作。 Make 主要是通过 Makefile来完成工作的。 建立 tftp 服务器 开发板上使用 uboot 作为 BootLoader,这个 BootLoader 使用 tftp 协议从宿主机上下载文件到开发板上。 为了使用 tftp 在宿主机和开发板之间传输文件,在宿主机上需要安装配置 tftp 服务器。 本文的宿主机安装的是 完整版,已经安装有 tftp 服务器程序,仅进行适当的配置即可。 在宿主机上执行: $setup,然后选择 System service,将其中的 tftp 一项选中,并去掉 ipchains 和 iptable 两项服务,还要选择 Firewall configuration,选中 No firewall。 左后,退出 setup,执行 service xid restart 命令以启动 tftp 服务。 配置 NFS 服务 网络文件系统 NFS 极大地简化了开发与调试过程。 在没有 NFS 的情况下,一般的开发调试过程都是:编译生成目标板平台的可执行文件 → 制作 ramdisk→下载 ramdisk到开发板上 → 启动开发板的系统 → 运行程序。 这个过程将一直重复,知道程序的运行结果正确为止。 有了 NFS,开发板上的系统可以把宿主机的某目录当作本机上的目录甚至是根目录。 这样,把宿主机上交叉编译好的可执行文件复制到 NFS 目录中,在开发板上就可以运行该科执行文件。 开发调试过程变为:编译生成目标平台的可执行文件 → 复制文件到 NFS 目录 → 目标板上 mount 操作→ 运行程序,省去了制作 ramdisk、下载 ramdisk 和重启开发板几个步骤,而这几个步骤又是占整个过程绝大部分时间的,因此也 节省了大量的宝贵时间。 完全安装版有 NFS 服务器程序,需要做一些配置才能使其可用。 编辑 /etc/exports 文件,命令是 $vi /etc/exports,在该空文件中添加 /( rw),其中―/tftpboot‖是共享的目录,也是目标系统的根文件系统目录: ―‖表示该服务提供给所有的主机和网络。 然后用命令 $/etc/服务,刚才的设置就生效了。 注意,在使用 NFS 服务之前应确认防火墙没有限制 NFS 服务,并且在系统服务中 portmap 服务是启动运行的。 8 设置 mini 在 Linux操作系统下,使用 mini作为超级终端,因此首先必须正确配置超级终端。 在宿主机端 Linux下执行: $mini –s 图 mini配置 1 第一次使用时需要对串口进行配置,在选择 ―Serial port setup‖,然后回车将出现如下配置菜单 ,如图。 参照 图 ,相应输入左边的 ―A‖、 ―B‖等字符将出现配置各自参数的界面,分别配置成上述设置。 设置完成后回车退出,并选择保存。 然后选择 Exit菜 单,将启动 mini程序,此时请将 JXARM92410的 UART0连接到 PC机串口并将 JXARM92410重新上电 既可。 开发板 BootLoader BootLoader 是 在操作系统内核或用户应用程序运行之前运行的一段小程序。 通过这段小程序可以初始化硬件设备,建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核或用户应用程序准备好正确的环境。 对于一个嵌入式系统来说,可能有的包括操作系统,有的小型系统也可以只包括应用程序,但是在这之前都需要 BootLoader 为它准备一个正 9 确的环境。 武汉 创维 特 JXARM924101 使用 uboot 作为开发板的 BootLoader。 uboot是由德国 DENX 小组开发的交叉平台 BootLoader ,其全称为 universal BootLoader。 图 mini配置 2 uboot 的开发目标是支持尽可能多的嵌入式处理器和嵌入式操作系统。 通过串口链接以后,用户可以交互式地输入命令和看到结果。 移植 uboot uboot 能够支持多种体系结构的处理器,支持的开发板也越来越多。 因为BootLoader 是完全依赖硬件平台的,所以在新电路板上需要移植 uboot。 移植uboot 工作就是添加开发板硬件相关的文件、配置选项,然后配置编译。 在 版本中已经有关于 S3C2410X 的移植代码,因此只要进行配置选择正确的移植版本即可,本系统使用的是 smdk2410config 配置。 到此, uboot 的移植过程就结束了,没做什么工作,只是引用了别人的成果而已。 嵌入式系统开发中这是一个很重要的思想:将硬件配置最接近的开发板相应工具的源码 做 修改并使之能在目标板上运行。 10 配置和编译 uboot 进入 uboot 所在的目录 $ cd /home/cvtech/jx2410/ 删除目录下编译的中间文件 $ make distclean 为目标板选择相应的配置文件 $ make smdk2410_config 编译 $ make 烧写 uboot 如果当前系统已经有 uboot 烧写到 flash,也可以通过 uboot 烧写。 JX2410 protect off all UnProtect Flash Bank 1 JX2410 erase 1:0 Erase Flash Sectors 00 in Bank 1 Erasing sector 0 ... done JX2410 tftp 30000000 RTL8019AS Founded! MAC : 0x80x00x3e0x260xa0x5b MAC: 0x0:0x0:0x0:0x0:0x0:0x0 TFTP from server。 our IP address is Filename 39。 39。 . Load address: 0x30000000 Loading: done Bytes transferred = 126976 (1f000 hex) JX2410 30000000 0 1f000 Copy to Flash...\done 成功后重新上电,执行的将是新的 uboot。 ( JX2410 表示 uboot 控制台, 11 紧接其后的以黑体和斜体字表示的为在 uboot 控制台上输入的命令行,并以回车键结束。 ) 这种方法是在系统中原有的 uboot 正常的情况下进行的,如果由于操作失败或者中途断电等原因导致烧写失败,将使得 uboot 无法正常启动,因此也就不能再使用上述方法烧写,而只能使用仿真器进行烧写。 12 3 定制板上系统 开发板 Linux 内核 Linux 是一个类似于 Unix 的操作系统,不仅能够运行在 PC 上, 在 嵌入式系统方面也有很成熟的应 用 , 已成为嵌入式操作系统的理想选择。 将 Linux 内核 移植到 ARM 的时候要打上 ARM 公司的补丁。 创维特开发板上的系统打的是 补丁。 该系统除了完成基本的内核移植外,还完善了大量外围设备的驱动。 移植 Linux 内核 对于嵌入式 Linux 系统来说,内核移植工作主要是修改跟硬件平台相关的代码,一般不涉及 Linux 内核通用的程序。 移植的难度也取决于两种硬件平台的差异。 Linux 对于特定的硬件平台的软件就 是 BSP( Board Support Package)。 由于 Linux 内核具 备可移植性的特点,并且已经支持了各种体系结构的很多种目标板,很容易从中找到 和 自己硬件类似的目标板。 参考内核已经支持的目标板来移植 BSP,就如同使用模板开发程序。 内核移植工作, 主要 就是添加开发板初始化和驱动程序的代码。 这部分代码大部分是跟体系结构相关的,在 arch 目录下按照不同的体系结构管理。 下面以 ARM S3C2410 平台为例,进行内核代码移植。 添加开发板平台支持选项 ,主要修改以下几个文件: arch/arm/machs3c2410 arch/arm/tools/machtypes arch/arm/ arch/arm/Makefile arch/arm/boot/pressed include/asmarm/archs3c2410 移植开发板驱动程序 S3C2410 属于片上系统,处理器芯片具备串口、显示等外围接口的控制器。 这样,参考板上的 设备驱动程序多数可以直接使用。 但不同的开发板可以使用不同的 SDRAM、 Flash、以太网接口芯片等。 这就需要根据硬件修改或者开发驱动程序。 13 Linux 内核 的配置和编译 配套光盘中 Linux源代码在 /home/cvtech/jx2410/linux目录中。 对于交叉开发,在编译之前要在顶层的 Makefile 中设置 ARCH 、 CROSS_COMPILE 和EXTRA_VERSION 变量,然后才能选择配置出特定的体系结构平台。 ARM 平台的例子如下: ARCH : = arm CROSS_COMPILE : = armlinux EXTRA_VERSION : = ( 1) Make menuconfig 对源代码有相应了解后,进行内核的配置,在宿主机上使用命令: $ cd /home/cvtech/jx2410/linux $make menuconfig 运行效果如图 所示: 图 内核编译 menuconfig 界面 本 设计中 只用到了调试模块、通信模块、人机交互模块等一些基本的模块,其他很多模块都没用到,如 A/D 及 D/A 模块,工业控制模块等。 嵌入式系统中 14 资源是非常珍贵的,所以最好能以最小系统进行开发。 从此 需 进行内核裁剪。 在编译裁剪内核的过程中,大部分选项可以使用其缺省值,只有小部分需要根据用户不同的需要选择。 选择的原则是将与内核其他部分关系较远且不经常使用的部分功能代码编译成可加载模块,有利于减小内核的长度,减小内核消耗的内 存 ,简化该功能相应的环境改变时对内核的影响;不需要的功能不选;与内核关系紧密而且经常使用的部分功能代码直接编译到内核中。 例如,本系统中没有用到 USB 接口,就可以在内核编译的时候将 USB 驱动模块不选, 如图 所示从而减小了内核大小。 需要指出的是,根据具体情况,本系统的根文件系统大于16MB,故需要修改内核所支持的 ramdisk 的大小,这里将其修改为 20MB。 如图 所示。 图 USB 配置选项 ( 2) Make dep 选择还内核配置选项之后,退出内核配置主菜单,并保存配置文件。 在 Linux命令终端 输入 make dep 命令建立内核源代码依赖关系。 ( 3) make zImage 编译:可以通过 make 或者 make zImage 进行编译,他们的差别在于 make 15 zImage 将 make 生成的核心进行压缩,并加入一段解压的启动代码。 生成的 Linux映像文件 zImage 保存在 /home/cvtech/jx2410/linux/arch/arm/boot/目录下。 烧写 Linux 映像 zImage 图 Block device 配置选项 成功编译 Linux 内核后,通过 JX2410 的 uboot 将 核心下载到 SDRAM,另外内核启动过程将加载 RAMDISK 文件系统,因此下载 zImage 之前,开发板需加载了根文件系统。 将 zImage 复制到宿主机 /tftpboot/目录下,运行命令 $ cp /home/cvtech/jx2410/linux/a。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。