已阅读5页,还剩47页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
编号: 毕业设计(论文)说明书题 目: 基于ARM的嵌入式GUI点菜系统 院 (系): 电子工程系 专 业: 电子信息工程 题目类型:理论研究 实验研究 工程设计 工程技术研究 软件开发摘 要本课题设计是以ARM开发板搭载Linux嵌入式系统为核心,使用QT编程制作GUI点菜终端,用LCD屏显示菜单信息,并可以通过触摸屏按钮实现点菜,换台,查询已点菜和结账等常用服务功能。通过Linux Socket套接字通信机制创建服务器和客户端,实现通过点菜终端向服务器发送数据。文章详细介绍了嵌入式Linux移植到ARM开发板和软件的设计过程,设计的GUI系统具有小型、高效、支持网络功能等特点。关键词:Qt;点菜系统;软件设计;LCD屏This topic design based on ARM development board carrying Linux embedded system as the core, using QT programming production order terminal, with GUI LCD display menu information, and can be realized by touch screen button, change channels inquires order already order and check-out etc common service functions. Through the Linux Socket Socket communication mechanism create server and client, realize through the terminal send data to a server in order. This paper introduces in detail the embedded Linux transplanted to ARM development board and software design process, design the GUI system has small, efficient and support network function etc. Characteristics. Key words: Qt; Order system; Software design;48目 录摘 要II目 录1第1章 引言11.1背景知识介绍11.2 方案选择11.3 设计意义2第2章 嵌入式LINUX及其GUI系统22.1 系统硬件电路组成22.1.1Real6410开发板简介22.1.硬件资源22.2.软件资源42.2.1嵌入式Linux系统及其开发要点52.2.2 几种嵌入式Linux GUI系统6第3章 嵌入式Linux系统开发平台73.1 开发环境选择7311 xll桌面系统的选择73.2 建立ARM板开发环境83.2.1 ARM嵌入式编译环境设置:83.3 QT安装及Qt4使用教程103.3.1配置:113.3.2编译、安装:113.3.3设置运行时的环境变量113.4、编译安装tslib:13第4章嵌入式GUI的软件编程及调试1441 Qtopia图形界面系统的开发流程14411 Qtopia图形系统的开发方法15412建立交叉开发环境16413软件开发调试工具184.2 点菜终端程序编写194.2.1 QT4编程技巧194.2.2 程序图形界面设计20423主窗口类214.2.4 各对话框实现代码23425主程序31426程序编译3243程序测试334.3 socket套接字建立服务器/客户端344.3.1 Linux下的soket编程344.3.2 socket编写点菜系统服务端374.3.3 socket编写点菜系统客户端40第5章 程序调试和问题解决425.1 tftp配置过程425.2 QtEmbedded安装编译445.3 板上操作455.3.1启动程序出现段错误和非法指令。455.3.2. minicom启动错误46结 论47谢 辞48参考文献49第1章 引言1.1背景知识介绍 餐饮业已经发展成为我国的黄金产业,在国民生产生活中扮演重要角色。餐饮企业做大做强,追求现代化、产业化、品牌化的在进程中,从点菜服务等基础项目即实现信息化管理,提供更加快速、便捷、透明、卫生的餐饮条件,对其经营档次、服务质量和管理效率的提高具有重要意义,这就催生和发展了网络点菜终端业务。嵌入式GUI网络通讯点菜终端是将客人所点的菜和酒水等信息发送到服务器,对数据进行处理,不但方便厨房及时了解客人的需要,也可以及时方便结账,节省了服务员的算账埋单时间。1.2 方案选择本课题通过考察现有的电子点菜系统的解决方案,研究一种无线点菜系统的软件设计。利用已有的SAMSUNG ARM11(S3C6410)开发板作为硬件载体,综合应用嵌入式Linux和Qt/Embedded开发等技术,以程序软件的通用性和易用性为方向,构造能够方便应用到各种PDA系统的点菜终端程序和普通PC机的服务器软件,实现无线点菜系统。主要包括以下研究内容:以SAMSUNG ARM11(S3C6410)和嵌入式Linux 为平台的,基于arm-linux 的QT 触屏模块的硬件和软件方面的设计。ARM11 中linux内核移植、u-boot的烧写和Nand flash DM9000AE 网卡驱动LCD 驱动Touchscreen 驱动配置测试等等。1构建嵌入式Linux系统开发平台。使用Ubuntu系统建立基本开发环境,建立交叉编译工具,安装配置NFS;安装用于开发点菜终端程序的Qt,包括QtX 1 l、x86版QtEmbedded、ARM版QtEmbedded。2设计点菜终端程序。利用Qt设计器规划点菜终端程序的大致界面,然后根据QtlEmbedded编程一般规则编写代码,主要分为浏览器核心类和主窗口类的实现,再通过NFS测试。3建立服务器网站。利用普通PC机+Ubuntu Linux作为网站服务器,主要包括登录管理、点菜导航、餐台使用、菜单列表、选单提交等功能页面。4调试和发布程序。在开发板原配内核及文件系统的基础上,内核配置网卡支持,根文件系统中添加点菜终端程序、库文件、无线网卡驱动和无线管理工具,设置环境和启动脚本,烧写入开发板后连接到WLAN,发布运行程序。该系统实现了以下功能:使用LCD屏的客户端进行点菜;换桌服务;查询记录与修改;退菜并向服务端发送信息等等。1.3 设计意义随着国民生产生活水平的不断提升,人们对生活质量的要求也越来越高。作为生活消费必不可少的一部分,餐饮的质量成为衡量生活品质的重要标准。而餐饮服务质量包括了各个方面,快速上菜、快速结算、便捷订单、透明菜价、菜品档次、菜品成分、卫生环境和饮食健康成为其不可或缺的内容。显然,从点菜服务等基础项目即实现信息化管理,提供更加快速、便捷、透明、卫生的餐饮条件,对餐饮企业服务质量和管理效率的提高具有重要意义。基于ARM和Linux的嵌入式系统,具有成熟的嵌入式硬件结构和丰富的开放软件资源,优良的性能和广泛的市场定位,这无疑对开发工作和学习研究是一个重大帮助;在GUI(图形用户界面)的选用上,使用基于C+语言面向对象编程的应用程序开发软件库Ot,它汇集了丰富的C+类提供开发应用程序用户界面所需要的全部内容,具有优良的跨平台性能和丰富的API函数及开发文档。另外,当前量产的普通PDA和PC机硬件上已经基本满足点菜系统要求,使自行研发的专用硬件设备不再具有明显的成本优势。为此,本课题集合ARM、嵌入式Linux和Qt开发应用等技术,利用本人已有的S3C6410开发板硬件基础,以程序软件的通用性和易用性为方向,构造能够方便移植到到各种PDA系统的点菜终端程序和普通PC机的服务器软件,实现整个无线点菜系统。提升餐饮业服务质量和管理效率,并为自身研究学习嵌入式系统和GUI应用开发提供一个良好的平台。第2章 嵌入式LINUX及其GUI系统2.1 系统硬件电路组成2.1.1Real6410开发板简介2.1.硬件资源Real6410是华天正科技推出的用于高端手持设备、微型智能控制设备的开发套件。采用韩国三星公司的ARM11内核的处理器S3C6410/S3C6410。该款套件核心板的尺寸仅相当于一个48mm*67mm 的方块的大小。Real6410套件由核心板和底板(外设板或称基本板)组成,核心板上集成三星 S3C6410处理器,128MB 的 DDR 内存以及 1GB 的 NANDFLASH,同时预留了 256K NORFLASH。为您的应用研发提供了充足的空间。底板上则提供以下外设接口: 1.两个四线 RS-232串口(COM0,COM1) 2.一个 USB HOST 接口 3.一个 10M/100M 自适应以太网接口,一个 TFT LCD 接口,一个触摸屏接口 4.一个 wm8987 sound 接口 5.一个 4x4 按键接口 6.一路视频输入(模拟 saa7113 或数字 ov9650,可以选择) 7.一路视频输出 TVOUT 8.一个 RTC 和 watchdog 9.一个 SDIO 接口 WIFI 模块 10.一个 SD 卡接口 核心板和底板配合即构成一个最小的完整应用系统。系统具有体积小、耗电低、处理能力强等特点,能够装载和运行嵌入式 Linux 操作系统。用户可以在这个系统平台上进行自主软件开发。Real6410套件中提供底板硬件电路图和硬件设计文档,极大的方便了用户进行硬件扩展开发。同时华天正科技提供完备的嵌入式 Linux 开发环境及丰富的开发调试工具软件。S3C6410微处理器的特性: ARM11嵌入式处理器内核,主频可达 800MHz; 扩展总线最大频率 133MHz; 32位数据总线和 32 位外部地址总线; 完全静态设计(0-667M); 存储控制器(八个存储体): 包含 SROM、 SRAM 控制器,NAND 控制器; 复位时引导芯片选择(8 比特、16 比特存储或 NAND 可供选择); 五个三十二位定时器,(time0,time1 带有 PWM); 多达 64 个中断源的中断控制器; RTC; 四个 UART,Supports IrDA 1.0; 四个 DMA 控制器,每个 DMA 控制器有 8 个通道;(支持外设 DMA) 支持 STN 与 TFT LCD 控制器; 看门狗; IIS 音频接口; 两个 USB host 口,一个 USB device 口。 IIC -Bus 接口; 两个串行外围接口电路(SPI) 三个 SD 卡接口(sopport 1/4/8 bit mode,rate up to 50MHz); 自定义按键 camera_if接口 TV_out接口 MFC(多格式视频编解码)接口,支持 H263、H264、MPEG4 和 VC-1 硬件编解码。 Real6410 开发套件硬件主要结构: Samsung S3C6410 处理器 1Gbytes 8 位 NAND FLASH 64Mbytes 32位 DDRRAM,共256MB 两个四线 RS-3 接口 一个 10M/100M 自适应以太网接口 camera 摄像头接口(可选模拟TVP5150或ov9650) 两个USB(一个 host,一个 device)接口 一个SD卡接口 自定义按键 AC97音频(使用 wm9713 芯片) 一个LCD 接口(可选两种不同接口的屏) 一个触摸屏接口。 MFC 接口 直流电源(需要客户自己购买) 复位建 运行状态指示 LED 灯 2.2.软件资源对于linux部分提供以下的软件资源: 1.引导程序版本 s3c-u-boot-1.1.6 2.内核版本 s3c-Linux- 3.设备驱动 6M mDDR支持 LCD驱动程序 三通道MMC/SD驱动 看门狗watdog驱动 实时时钟RTC驱动 2通道i2c驱动 2通道spi驱动 键盘接口keybad驱动 GPIO键盘驱动 触摸屏驱动 网卡芯片DM9000AEP驱动 ENC、TVSCALER驱动 tator驱动 jpeg驱动 nand flash驱动(2K page) onenand flash驱动 USB device驱动、USB host驱动、USB OTG驱动 fimc驱动 2D、3D加速器驱动 电源管理驱动 mera驱动 IO WIFI驱动 针对nand的yaffs2、UBIFS文件系统支持 声卡WM9713驱动(ALSA) 4.文件系统 ubifs/yaffs2/cramfs/fat32文件系统 5.图形界面 qtopia-2.2.0 E-4.5.2 6.其他功能 提供支持SD卡启动的u-boot,无需通过JTAG方式烧录u-boot 通过SD方式升级系统,方便快捷 支持USB升级内核和文件系统 7.编译器 arm-none-linux-gnueabi-4.3.2 2.2.1嵌入式Linux系统及其开发要点在所有的嵌入式操作系统中,Linux是一个发展最快、应用最为广泛的操作系统。Linux本身的种种特性使其成为嵌入式开发中的首选。随着嵌入式Linux的成熟,它裁剪后的尺寸越来越小,得到更多类型的处理器的支持,并从早期的试用阶段迈进到嵌入式操作系统的主流,它紧紧抓住了电子消费类设备开发者们的想象力。嵌入式Linux版本还有多种变体。如:RTLinux通过改造内核实现了实时的Linux;RTAI、Kurt、和LinuxRK也供了实时能力;还有uCLinux去掉了Linux的MMU(内存管理单元),能够支持没有MMU的处理器等。所谓嵌入式Linux是指Linux在嵌入式系统中应用,而不是什么嵌入式功能,因此Linux在嵌入式系统中的应用随着Linux的发展而发展。嵌入式Linux相对于其它嵌入式操作系统具有无可替代的优越性。嵌入式Linux开发就是构建一个Linux系统,这需要熟悉Linux系统组成部分,熟悉Linux开发工具,还要熟悉Linux编程。嵌入式Linux系统包含Bootloader(引导程序)、内核和文件系统三部分。对于嵌入式Linux系统来说这三部分都是必不可少的。在启动一个嵌入式Linux项目之前,主要从下面几点予以考虑。(1)选择嵌入式Linux发行版。商业的Linttx发行版是作为产品开发维护的,经过严格的测试验证,并且可以得到厂家的技术支持。它为开发者提供了可靠的软件和完整的开发工具包。(2)熟悉开发环境和工具。交叉开发环境是嵌入式Linux开发的基本模型。Linux环境配置、GNU工具链、测试工具甚至集成开发环境都是嵌入式Linux开发的利器。(3)熟悉Linux内核。嵌入式开发一般都需要重新定制内核,熟悉Linux的内核配置、编译和移植也十分的重要。(4)熟悉目标板引导方式。开发板的Bootloader负责硬件平台的初始化,并具备引导Linux内核启动的功能。由于硬件平台是专门定制的,一般都需要再修改编译Bootloadcr。(5)熟悉Linux根文件系统。Linux离不开文件系统,程序和文件都存放在文件中。系统启动必需的程序和文件都必须放在根文件系统中。(6)理解Linux内存模型。Linux是保护模式的操作系统,内核和应用程序分别运行在完全分离的虚拟地址空间,物理地址必须映射到虚拟地址空间才能访问。(7)理解Linux调度机制和进程线程编程。Linux调度机制影响到任务的实时性,理解调度机制可以更好地运用任务优先级。进程和线程编程则是应用程序开发所必需的。2.2.2 几种嵌入式Linux GUI系统目前来看,在Linux之上进行嵌入式系统开发一般采用的是如下几种GUI系统:高度裁剪的X Windows系统、MicroWindow、MiniGUI、OpenGUI、QTEmbedded等。1. 在高度裁剪的X Window系统中,其x服务器可以降低到800KB,但因为X Window系统的运行还需要其它程序和库的支持,包括x窗口管理器、XLib、建立在XLib之上的GTK或Qt等函数库等。因此,其在运行期间所占用的系统资源较多,加上中文显示和中文输入等本地化代码之后,系统的尺寸和运行时的消耗将进一步加大。因此,它主要用在机顶盒等对系统资源要求不是很高的地方。2. Microwindows开发重点在底层的图形引擎上,窗口系统和图形接口方面的功能还比较欠缺;并且它是基于UNIX套字节的传统客户服务器体系,进程间的通信频繁,系统资源消耗也比较大,同时Microwindows的免费版本研发进展一直很慢,几乎处于停顿状态。3. MiniGUIt41开发的主要目标就是为基于Linux的实时嵌入式系统提供一个轻量级的图形用户界面支持系统。MiniGUI还有一些有些不成熟的地方,主要表现在:体系结构不够成熟,控件的可定制性不够好;缺少一个方便的集成开发环境;对输入法的支持不是很好。4. OpenGUl只用于基于x86平台的实时系统,它不支持ARM、MIPS等处理器,因此其跨平台的可移植性较差,目前发展较慢。5. Qt/Embedded是著名的Qt库开发商Trolltech公司开发的面向嵌入式系统的Qt版本。因为Qt是KDE等项目使用的GUl支持库,许多基于Qt的XWmdow程序可以非常方便地移植到QtEmbedded上。QtEmbedded同样是ServerClient结构。QtEmbedded延续了Qt在x上的强大功能,在底层摒弃了xlib,仅采用framebuffer作为底层图形接口。同时,将外部输入设备抽象为keyboard和mouse输入事件,底层接口支持键盘、GPM鼠标、触摸屏以及用户自定义的设备等。QtEmbedded类库完全采用C+封装。丰富的控件资源和较好的可移植性是QtEmbedded最为优秀的一方面。它的类库接口完全兼容于同版本的Qt-X11,使用x下的开发工具可以直接开发基于QtEmbedded的应用程序GUI界面。但是基于QtEmbedded的GUI系统一般较大,好在现在存储器的已经足够大,价格也比较低廉,这一缺点也不再是其被广泛使用的障碍。第3章 嵌入式Linux系统开发平台3.1 开发环境选择311 xll桌面系统的选择目前已有的多种基于GNULinux的操作系统,如Debian,SuSE,Gentoo,RedHat和Mandriva等,其中Debian是一个广受称道、技术先进且有着良好支持的发行版。Ubuntu基于Debian之上,创建了一个可以为桌面和服务器提供最新且一贯的Linux系统。Ubuntu囊括了大量从Debian发行版精挑细选的软件包,同时保留了Debian强大的软件包管理系统,以便于简易的安装或彻底的删除程序。与大多数发行版附带数量巨大的可用可不用的软件不同,Ubuntu的软件包清单只包含那些高质量的重要应用序,并且项目每6个月就会发布一个版本,以提供最新最强大的软件。Ubuntu支持各种CPU架构,包括x86(Intel 386486Pentium处理器和AMDAthlonDuronSempron处理器等)、AMD64(Athlon64Opteron等、以及PowerPC(iBook、Powerbook、G4、G5)等。Ubuntu沿袭Debian的apt,这是Ubuntu最重要和最依赖的特性。当需要安装软件时,只需要在命令终端里输入命令aptget install XXX XXX,或者进入新立得软件包管理器,搜索选择需要的软件,勾选、应用,Ubuntu便能够根据包的依赖性自动选择其他需要的软件包下载、安装、配置。Ubuntu项目完全遵从开源软件开发的原则,属于免费的自由软件,任何人可以任意方式下载、修改和使用。使用人数众多,网络资源丰富,便于迅捷和高效的开发应用。基于此,开发平台采用Ubuntu1010桌面系统。3.2 建立ARM板开发环境3.2.1 ARM嵌入式编译环境设置: arm-linux-gcc交叉编译工具 . 下载arm-linux-gcc4.3.2.tar.bz2 . 安装到/usr/local/arm/ . mkdir -p /usr/local/arm/ . cd /usr/local/arm/. tar -xvjf /./ arm-linux-gcc4.3.2.tar.bz. mv arm-linux-gcc4.3.2.tar.bz2 . vim /.bashrc在里面增加路径export PATH=/usr/local/arm/4.3.2/bin:$PATH . source /.bashrc 0. echo $PATH查看路径是否已经设置正确 1. arm-linux-gcc -v测试是否已经可用3.2.2 ARM板上系统的网络设置: 1. 修改板上系统/etc/eth0-setting将其中的IP段参照u-boot网络设置修改IP地址78GATEWAY地址 DNS服务器地址 2. 修改板上系统/etc/init.d/ifconfig-eth0将其中的IP段参照u-boot网络设置修改 3. reboot 4. inetd 5. ftpd 6. 板上ftp服务器被启动程序传送方式1: 1. 并不真实传送文件 2. 利用主机的nfs服务器配置 3. 把主机的nfs目录mount到arm板本地目录 4. mount -t nfs 4:/opt/nfsroot /mnt/nfs -o nolock 5. 将hello程序复制到/opt/nfsroot程序传送方式2: 1. 在研发机上把光盘linuxlinux-imageqtopia.tar.gz解压缩到nfs服务器路径 2. 修改u-boot启动参数setenv bootargs noinitrd root=/dev/nfs console=ttySAC0 init=/linuxrc nfsroot=78:/opt/nfsroot ip=0:78:::eth0:on fbcon=rotate:10: 板子IP地址4: 主机IP地址 : 网关IP地址 : 子网掩码3. 将hello程序复制到/opt/nfsroot,也就是arm系统根目录3.2.3文件系统制作: 准备工作:1. busybox-1.17.3.tar.bz22. 板子设置,在u-boot里面 setenv bootargs noinitrd root=/dev/mtdblock0 console=ttySAC0 init=/linuxrc saveenv3. 复制光盘toolsmkcramfs到/usr/sbin目录 chmod +x mkcramfs 制作过程:1. 在主机准备存放rootfs的路径: mkdir -p /opt/rootfs2. 准备一个编译busybox路径: mkdir -p /opt/busybox3. 解压缩busybox: cd /opt/busybox tar -xvjf busybox-1.17.3.tar.bz24. 进入目录修改Makefile cd busybox-1.17.3 vim Makefile5. ARCH=arm CROSS_COMPILE=arm-linux-6. make menuconfig将busybox设置为静态联编7. make8. make install9. 进入目录_install,复制其中所有内容到/opt/rootfs cd _install cp -avR * /opt/rootfs10.进入examples/bootfloppy目录,复制其中的etc目录到/opt/rootfs cd ./examples/bootfloppy cp -avR etc /opt/rootfs11. 进入/opt/rootfs,创建其它目录 mkdir dev lib proc sys tmp12. 在dev目录创建两个设备 mknod -m 660 console c 5 1 mknod -m 660 null c 1 313. 进入目录/opt,制作rootfs.cramfs mkcramfs rootfs rootfs.cramfs14. 将rootfs.cramfs写入到NAND 400000位置nand erase 400000 400000nand write c0008000 400000 40000015. 启动arm板,测试16. hello world处理: 16.1 arm-linux-gcc -static hello.c -o hellos 16.2 将hellos复制到rootfs/bin目录 16.3 重新制作rootfs.cramfs 16.4 重新写入rootfs.cramfs到NAND 400000位置 16.5 重启arm后在根目录执行hellos3.3 QT安装及Qt4使用教程这里使用的是Qte-4.5.2。Qt 的开发公司奇趣科技在被诺基亚收购后,Qt 代码中就融入了很多诺基亚的风格,相比之前的风格显得更为时尚和人性化,而且更加适合用于手机等移动设备,因此在进行GUI 的选择的时候不妨考虑一下,这里就是提供一个基于ARM11 的评估包。3.3.1配置:解压光盘中的linuxlinux-source qt-embedded-linux-opensource-src-4.5.2.tar.gz 到Ubuntu下,在终端中进入该目录,并输入以下命令进行qt4 的配置:./configure -prefix /usr/local/QtEmbedded-4.5.2 -embedded arm -no-webkit -qt-mouse-tslib这时候会要求选择版本和是否接受license,这里输入o 和yes 即可:3.3.2编译、安装:这里默认使用arm-linux-编译器,光盘中提供的eabi-4.3.2 中已经做了arm-linux-的软连接,把该编译器的路径添加到PATH 环境变量即可得到arm-linux 前缀的EABI-4.3.2 编译器。在设置好编译器后进行编译:makesudo make install漫长的编译结束后将在主机(Ubuntu)下的/usr/local/QtEmbedded-4.5.2 得到编译后的结果。不过这个编译后的目录内保护了很多不需要放到板子上的内容,可以这个目录下的部分目录内容进行删减。3.3.3设置运行时的环境变量上面步骤之后已经得到了可用的Qte,把整个QtEmbedded-4.5.2 目录复制到板子根目录下。接着在板子的/etc 中添加脚本文件profile,添加如下内容:export QTDIR=/usr/local/QtEmbedded-4.5.2export QPEDIR=/usr/local/QtEmbedded-4.5.2export PATH=$QTDIR/bin:$PATHexport LD_LIBRARY_PATH=$QTDIR/lib:/usr/local/lib:$LD_LIBRARY_PATHexport TSLIB_TSDEVICE=/dev/input/event1export TSLIB_CONFFILE=/usr/local/etc/ts.confexport TSLIB_PLUGINDIR=/usr/local/lib/tsexport TSLIB_CALIBFILE=/etc/pointercalexport QWS_MOUSE_PROTO=TSLIB:/dev/input/event1 USB:/dev/input/miceexport QWS_SIZE=480x272export QWS_KEYBOARD=TTY:/dev/tty1不过为了防止权限不足的问题,在主机上先给与这个文件可执行属性:sudo chmod 777 setenv-arm.sh注意红色部分字体的设置是非常重要的,主要是指定触摸屏的工作参数。最后一句是自动运行特定的程序,保存退出,并进入板子shell 界面执行这个脚本:cd /ect./profile接着便可以运行一下自带的那些测试程序了:/usr/local/QtEmbedded-4.5.2/examples/graphicsview/collidingmice/collidingmice -qws -fn wenquanyi注意:需要提醒用户注意的是,qtopia-2.2.0的运行和Qte-4.5.2 的运行需要设置不同的环境变量,因此最好保证两者没有同时运行。如果系统中已经运行了qtopia-2.2.0,请使用kill命令将qtopia相关的进程都杀死,kill 命令的使用请参考网上的相关资源。便能在LCD 上看到一个漂亮的动画了:3.4、编译安装tslib:Tslib 是一个开源的程序,能够为触摸屏驱动获得的采样提供诸如滤波、去抖、校准等功能,通常作为触摸屏驱动的适配层,为上层的应用提供了一个统一的接口。3.4.1 建立脚本 / 脚本名为: config.shCC=arm-linux-gccPREFIX=/root/lwz/install./configure -with-gun-ld -prefix=$PREFIX -host=arm-linux -enable-linear -enable-dejitter -disable-linear-h2200 -enable-variance-pthres -disable- ucblx00 -disable-corgi -disable-collic -disable-h3600 -disable-mk712 - disable-arctic2 -enable-input3.4.2 运行脚本 / ./config.sh3.4.3 make /先要在vim configure里把20718-20720这三行前面加#号(即注释掉)3.4.4 make install3.4.5 在PREFIX指定的目录下面生成 /查看ls /root/lwz/install /bin /etc /include /lib3.4.6 拷贝 6.1 将bin目录下面的内容-开发板 /bin下面(即/opt/nfsroot/bin里面) 6.2 将 etc 目录下面的内容-开发板 /etc下面(即/opt/nfsboot/etc) 6.3 将lib 目录下的libts-0.0.so.0-开发板/lib(即/opt/nfsroot/lib) 6.4 将lib/ts下面的内容全部-开发板 /etc/plugins下面 /要自己创建plugins文件夹3.4.7 设置环境变量 /把以下环境变量加入到 开发板 cd /etc vi profile里面: export TSLIB_TSDEVICE=/dev/input/event1 export TSLIB_CALIBFILE=/etc/pointercal export TSLIB_CONFILE=/etc/ts.conf export TSLIB_PLUGINDIR=/etc/plugins export TSLIB_CONSOLEDEVICE=none export TSLIB_FBDEVICE=/dev/fb0 export TSLIB_CONFFILE=$T_ROOT/etc/ts.conf /设置好后要重启一下板子这些环境变量才会生效 /设置好上面后用rootReal6410 /# export 便可查看到上面的内容出现在屏幕里3.4.8 修改 开发板/etc/ts.conf内容 / vi ts.conf 不能用vim ts.conf 将第二行 module_raw input /即把第二行的#去掉3.4.9 使用主机目录下面的 /dev/input 拷贝到 开发板 /dev下面3.4.10 在开发板 /dev下面建立: mknod -m 660 console c 5 1 mknod -m 660 null c 1 3 mknod -m 660 fb0 c 29 0 /在vi /etc/init.d/rcS把最后一行qtopia &前面加#(注释掉)3.4.11 将arm-linux-gcc安装目录下面的 ./arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib 下的内容拷贝到 开发板/lib find / -name libc /在rootlocalhost tslib-1.4# find / -name libc就可以看到/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc这个路径3.4.12 在u-boot里面设置以下: setenv bootargs noinitrd root=/dev/nfs console=ttySAC0 init=/linuxrc nfsroot=78:/opt/nfsroot ip=0:78:55::eth0:on fbcon=rotate:1 video=fb:WX4300F ppp=none3.4.13 进行测试 rootReal6410 /# ts_calibrate /用来效准 rootReal6410 /# ts_test /ts_test在/bin里面第4章嵌入式GUI的软件编程及调试41 Qtopia图形界面系统的开发流程嵌入式软件开发流程大致都一样,只是根据具体的目标板有所不同。一般的,嵌入式Linux软件开发基本上需要遵循下列开发流程:(1)准备主机系统环境:一般需完全安装Ubuntu 10.10;配置主机系统,例如网络设置、TFTP服务器、NFS SERVER设置、MINICOM安装等;下载安装设置交叉编译环境。(2)准备代码下载、烧写、硬件检测软件工具。(3)利用工具软件检测硬件核心部件RAM和Flash的好坏,并检测串口等接口的好坏。(4)移植启动代码uboot,用于初始化以太网并完成TFTP协议栈。(5)编译Linux内核,并下载到目标板上,使Linux基本内核能在开发板中运行起来。(6)利用目标板上运行的Linux完成其他外设驱动的调试。(7)烧写Linux内核、烧写根文件系统。(8)进行图形界面系统及应用程序的开发。411 Qtopia图形系统的开发方法嵌入式系统软件部分开发总体上可以分为操作系统移植、驱动开发、图形界面系统开发以及应用程序的开发四个部分,如图41所示。开发过程一般都采用“宿主机,目标板”开发模式,即利用主机系统(PC机)上丰富的软硬件资源及良好的开发环境和调试工具来开发目标板上的软件,然后通过交叉编译环境生成目标代码和可执行文件,通过串口USB以太网等方式下载到目标板上,利用交叉调试器在监控程序运行,实时分析,最后,将程序下载固化到目标机上,完成整个开发过程。412建立交叉开发环境完整的嵌入式软件开发环境应包括系统配置编译工具、编译环境、下载工具以及调试环境。嵌入式系统的开发是在交叉开发环境下进行的,交叉开发环境由主机系统、目标板以及它们之间的连接工具组成。如图42所示。本次开发使用的是Linux操作系统(Ubuntu 10.10)、目标板使用的是深圳华天正公司的S3C6410开发板。在开发主机上,可以安装开发工具,编辑、编译目标板的Linux引导程序、内核和文件系统,然后在目标板上运行。在交叉开发环境下,开发主机也是工作站,可以给开发者提供开发工具,同时也是一台服务器,可以配置启动各种网络服务。主机系统和目标板之间通过网络(NFS)、串口(UART),USB等方式建立连接,相互协作调试完成系统的开发。交叉开发方式,一方面可以在熟悉的主机环境下进行程序开发;另一方面又可以真实地在目标板系统上运行调试程序,可以避免受到目标板硬件的限制。1)主机系统(Host System)在PC机上,Linux已经成为优秀的计算机操作系统。它不仅能够支持各种处理器和外围设备接口,而且提供了图形化的用户交互界面和丰富的开发环境,并且十分稳定。在开发之前首先需要在主机系统上安装交叉开发工具链。Linux软件从一开始就使用GNU的工具链,这些GNU的工具和软件都是开放源码的,可以免费下载源码编译。嵌入式Linux开发使用的工具链软件是:BINUTILS、GCC、GLIBC和GDB。通过这些软件包,可以生成gcc、g+、盯、勰、ld等编译链接工具,还可以生成mibc库和gdb调试器。对于交叉开发的工具链来说,在文件名字上加了一个前缀,用来区别本地的工具链。如:arnl1inuxgcc。交叉开发工具链就是为了编译、链接、处理和调试跨平台体系结构的程序代码。BINUTILS是二进制程序处理工具,包括连接器、汇编器等目标程序处理工具;GCC(GNU Compiler Collection)是编译器,不但能够支持cC+语言的编译,而且能够支持FORTRAN、JAVA、ADA等编程语言;GLIBC是应用程序编程的函数库软件包,可以编译生成静态库和共享库,完整的GCC需要支持glibc;GDB是调试工具,可以读取可执行程序中的符号表,对程序进行源码调试。2)目标系统本次开发使用的是华天正科技有限公司的开发套件REAL6410开发板,该开发板是基于Samsun S3C6410处理器为核心的嵌入式开发平台,该开发平台具有完备的软硬件资源。如图43所示,该开发板支持LCD和触摸屏、支持QT以及支持多种网络应用,比如FTP、H1vrP、Telnet等网络应用。图43 S3C6410开发板3)主机与目标板之间的连接目标板和主机之间通常可以使用串口、以太网接口、USB接口以及lAG接口等连接方式。通过串口可以作为控制台,向目标板发送命令,显示信息;也可以通过串口传送文件;还可以通过串口调试内核及程序;同时串口的设备驱动实现也比较简单。但是,串口通信的缺点是通讯速率慢,不适合大量数据传输。以太网传输比较灵活,相对简单,易于实现,可以实现快速的数据通讯和文件传输。缺点是驱动程序实现比较麻烦。USB接口传输具有明显的优势,支持热插拔,通讯速率也很快。但是缺点是USB设备区分主从端,两端分别要有不同的驱动程序支持。4)网络文件系统网络文件系统(NFS,Network File System)允许一个系统在网络上共享目录和文件。通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件,极大的简化了信息共享。NFS网络文件系统是通过文件系统实现资源共享的一种主要方式,它扩充了传统文件系统允许多个用户共享本地主机中的文件,允许用户通过网络共享远程主机的文件。网络文件系统是基于客户服务器模型的,客户是要访问文件的系统,而服务器是提供文件分布共享的主机系统。NFS系统速度快、调试方便,调试程序时,无需重新制作根文件系统映像和下载根文件系统映像文件,而只需将交叉编译好的,需要调试的程序放入提供NFS服务的目录,即可进行调试。413软件开发调试工具GNUTool是Linux环境下最主要的开发工具
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年四川托普信息技术职业学院单招职业技能考试题库及答案解析(夺冠系列)
- 2026年武汉铁路桥梁职业学院单招职业技能考试必刷测试卷附答案解析
- 2026年浙江药科职业大学单招职业技能测试题库及答案解析(名师系列)
- 2026年浙江邮电职业技术学院单招综合素质考试必刷测试卷附答案解析
- 2026年四川汽车职业技术学院单招职业适应性考试题库附答案解析
- 2026年兰州石化职业技术大学单招职业技能考试必刷测试卷附答案解析
- 房屋抵押银行协议书
- 房屋拎包入住协议书
- 房屋服务协议书范本
- 房屋清洁托管协议书
- 商业银行信息科技风险现场检查指南 (一)
- 《电力安全事故应急》课件
- 2025年重庆轨道交通集团招聘笔试参考题库含答案解析
- 北京市西城区2023-2024学年四年级上学期数学期末试卷
- 《国家综合性消防救援队伍队列条令(试行)》题库
- DB36T 1593-2022 高速公路日常养护技术规范
- 学宪法讲宪法教学课件
- 学前幼教科学学前中班中班下-中班科学活动:土豆的生长过程
- 默写单(知识清单)-2024-2025学年人教PEP版英语六年级上册
- 【世邦魏理仕】2023中国仓储物流租户调研报告
- 网络营销推广提成方案
评论
0/150
提交评论