• 沒有找到結果。

嵌入式Qt开发项目教程 - 万水书苑-出版资源网

N/A
N/A
Protected

Academic year: 2021

Share "嵌入式Qt开发项目教程 - 万水书苑-出版资源网"

Copied!
28
0
0

加載中.... (立即查看全文)

全文

(1)

第 1 章 嵌入式 Linux 开发应用

1.1

嵌入式 Linux 简介

嵌入式 Linux(Embedded Linux)是指对标准 Linux 经过小型化裁剪处理之后,能够固化 在容量只有几 KB 或者几 MB 字节的存储器芯片或者单片机中,是适合于特定嵌入式应用场合 的专用 Linux 操作系统。在目前已经开发成功的嵌入式系统产品当中,有近一半嵌入式使用的 是经过裁剪的嵌入式 Linux 操作系统。这与它自身的优良特性是分不开的。 1.1.1 嵌入式 Linux 特点 嵌入式 Linux 同 Linux 一样,具有低成本、多种硬件平台支持、优异的性能和良好的网络 支持等优点。另外,为了更好地适应嵌入式领域的开发,嵌入式 Linux 具有以下几方面特点: 1.模块化方面 Linux 的内核设计非常精巧,分成进程调度、内存管理、进程间通信、虚拟文件系统和网 络接口五大部分。其独特的模块机制可根据用户的需要,实时地将某些模块插入或从内核中移 出,使得 Linux 系统内核可以裁剪得非常小巧,很适合于嵌入式系统的需要。 2.实时性方面 由于现有的 Linux 是一个通用的操作系统,虽然它也采用了许多技术来提高内部系统的运 行和响应速度,但从本质上来说并不是一个嵌入式实时操作系统。因此,利用 Linux 作为底 层操作系统,在其上进行实时化改造,从而构建出一个具有实时处理能力的嵌入式系统, 3.硬件支持方面

Linux 能支持 X86、ARM、MIPS、ALPHA 和 PowerPC 等多种体系结构的微处理器。目 前已成功地移植到数十种硬件平台,几乎能运行在所有流行的处理器上。另外世界范围内有众 多开发者在为 Linux 的扩充贡献力量,所以 Linux 有着异常丰富的驱动程序资源,支持各种主 流硬件设备和最新的硬件技术,甚至可在没有存储管理单元 MMU 的处理器上运行,这些都 进一步促进了 Linux 在嵌入式系统中的应用。 4.安全性方面 Linux 内核的高效和稳定已在各个领域内得到了大量事实的验证。Linux 中大量网络管理、 网络服务等方面的功能,可使用户很方便地建立高效稳定的防火墙、路由器、工作站、服务器 等。为提高安全性,它还提供了大量的网络管理软件、网络分析软件和网络安全软件等。

(2)

5.网络支持方面 Linux 是首先实现 TCP/IP 协议栈的操作系统,它的内核结构在网络方面是非常完整的, 并提供了对包括十兆位、百兆位及千兆位的以太网,还有无线网络、Token ring(令牌环)和 光纤甚至卫星的支持,这对现在依赖于网络的嵌入式设备来说无疑是很好的选择。 1.1.2 嵌入式 Linux 应用领域 由于嵌入式 Linux 自身的优良特性,使得嵌入式应用涵盖的领域极为广泛,开发人员可以 使用嵌入式 Linux 这种模块化的实时操作系统在工业控制、医疗设备、消费类电子产品、网络 设备、智能家居、交通控制以及仪器仪表等领域方面开发各种高端嵌入式产品,如图 1-1 所示。 图 1-1 嵌入式 Linux 应用设备 (1)网络设备:在互联网日益昌盛的今天,人们对网络访问的要求也越来越高,随着 3G、 4G 网络的普及,越来越多的应用离不开网络,越来越多的设备加入网络的支持,世界因为网 络而改变已成为不争的事实。嵌入式 Linux 对于广域网、局域网、无线设备、有线设备的支持 都很强大,所以有如下被广泛应用于这个领域的各个设备:  Internet 连接设备  家庭/建筑物自动化网关  移动服务点  联网式媒体设备  机顶盒 (2)消费类电子:这类产品应用极其广泛,很多产品大家都能随处可见,甚至已经在使 用。嵌入式 Linux 创建用户界面更具有个性化,浏览体验更丰富多彩。设备制造商可以快速、 高效地将其设备推向市场。嵌入式 Linux 在这方面的典型应用如下:

(3)

 数字相框  电子阅读器设备  GPS 导航设备  便携式媒体播放器  移动手持终端 (3)工业控制仪器:嵌入式 Linux 以其高性能、高可靠性、强大的数据库和网络支持, 使其在工控、仪表仪器和医疗设备等方面也占有一席之地。  HMI 人机界面  遥测设备  智能装置  监控设备 (4)其他:嵌入式 Linux 还依靠其快速、高效开发的特点被广泛应用于其他领域:  条码和 RFID 扫描仪  媒体服务器

1.2 Linux

操作系统安装

用户要进行嵌入式 Linux 的应用开发,首先要搭建一个性能优良的主机开发环境,因为嵌 入式 Linux 下的大部分开发工作都是在 PC 机端开发完成的,一般嵌入式 Linux 开发环境有以 下几个方案:  基于 PC 机的 Windows 操作系统下的虚拟机。  在 Windows 下安装虚拟机后,再在虚拟机中安装 Linux 操作系统。  直接安装 Linux 操作系统。 如果用户的 PC 机硬件配置较好,那么建议在 Windows 环境下安装 VMWare 虚拟机软件, 然后再安装一个桌面版本的 Linux 系统,本书安装的是 Ubuntu10.04 版本。 1.2.1 Ubuntu操作系统简介

Ubuntu 是一个以桌面应用为主的 Linux 操作系统,基于 Debian 发行版和 GNOME 桌面环 境,它是一个由全球化的专业开发团队建造的操作系统,内部包含了所有诸如浏览器、Office 套件、多媒体程序、即时消息等应用程序。Ubuntu 是一个 Windows 和 Office 的开源替代品。 与 Debian 的不同在于它每 6 个月会发布一个新版本。Ubuntu 的目标在于为一般用户提供一个 最新的、同时又相当稳定的主要由自由软件构建而成的操作系统。Ubuntu 具有庞大的社区力 量,用户可以方便地从社区获得帮助。Ubuntu 系统有以下三方面特性:

1.安装速度

(4)

测,所以相对 Windows 系统速度上还是有绝对的优势。但相对于 Linux Mint 和 openSUSE, 其速度上的优势就不明显了,由于支持功能相对较多,所以安装过程相对复杂较慢,Ubuntu 运行界面如图 1-2 所示。 图 1-2 Ubuntu 运行界面 2.汉化方面 由于没有商业利益方面的驱动,在这方面 Linux 的各个版本可能跟 Windows 相比都要逊 色,但是相对于其他 Linux 版本,Ubuntu 在汉化方面则有很大优势,其图形界面方面汉化程 度要比其他版本有明显优势。 3.软件方面 Ubuntu 由社区开发,适用于笔记本电脑、桌面电脑和服务器。无论您是在家庭、学校还 是工作时使用,Ubuntu 几乎都包含了您所需的所有程序:无论是文字处理和电子邮件,还是 Web 服务和编程工具,这在很大程度上是基于其强大的软件库。 1.2.2 新建虚拟机

(1)运行 WMware Workstation,打开文件菜单,选择 New→Virtual Machine 命令,新建 一个虚拟机,如图 1-3 所示。

(5)

(2)选择自定义模式(Custom),单击 Next 按钮,如图 1-4 所示。

图 1-4 选择自定义模式

(3)由于本机上安装的 WMware Workstation 是 7.1 版本的,所以这里选择 WMware 版本 为 Workstation6.5-7.x,单击 Next 按钮,如图 1-5 所示。

(6)

(4)前面只是新建一个虚拟机,Ubuntu 操作系统将在后面进行安装,所以这里选择 I will install the operating system later.(稍后安装操作系统)选项,单击 Next 按钮,如图 1-6 所示。

图 1-6 选择“稍后安装操作系统”选项

(5)选择将要安装在虚拟机上的操作系统类型为 Linux,版本为 Ubuntu,单击 Next 按钮, 如图 1-7 所示。

(7)

(6)新建的虚拟机命名为 MyUbuntu,安装路径这里选择为 E:\My Documents\My Virtual Machines\MyUbuntu 目录下,单击 Next 按钮,如图 1-8 所示。 图 1-8 选择安装路径 (7)处理器的个数选择 1 个,由于处理器分为单核和多核,这里 PC 的处理器内核选择 2 个,单击 Next 按钮,如图 1-9 所示。 图 1-9 处理器的参数选择

(8)

(8)为了使虚拟机运行起来更加流畅一些,这里虚拟机内存设置为 1024MB,即 1GB, 单击 Next 按钮,如图 1-10 所示。

图 1-10 设置虚拟机内存

(9)这里选中 Use network address translation(NAT)(使用网络地址翻译)单选项,这 样只有宿主机可以上网,虚拟机不用特殊设置就可以共享宿主机的网络,单击 Next 按钮,如 图 1-11 所示。

(9)

(10)输入输出控制器保持默认选择,单击 Next 按钮,如图 1-12 所示。

图 1-12 输入输出控制器选择

(11)选中 Create a new virtual disk(新建一个虚拟硬盘)单选项,单击 Next 按钮,如图 1-13 所示。

(10)

(12)选择新建一个虚拟硬盘的类型为 SCSI 类型,单击 Next 按钮,如图 1-14 所示。

图 1-14 选择硬盘的类型

(13)将新建的硬盘最大容量设置为 20GB,同时选择把虚拟硬盘当做一个单独的文件, 这里不勾选 Allocate all disk space now.复选框,为的是在新建虚拟硬盘时,不马上直接分配 20GB 空间,而是在之后的使用过程中,慢慢增大这个空间,直到增大到设定的 20GB 为止, 单击 Next 按钮,如图 1-15 所示。

(11)

(14)将前面设定的 20GB 硬盘文件命名为 MyUbuntu.vmdk,单击 Next 按钮,如图 1-16 所示。 图 1-16 硬盘文件命名 (15)将前面各项参数设置完成之后,在如图 1-17 所示的界面上回显新建的虚拟机各项 参数,以确保用户设置正确,单击 Finish 按钮。 图 1-17 显示新建的虚拟机各项参数

(12)

1.2.3 安装 Ubuntu10.04 操作系统

安装 Ubuntu10.04 操作系统具体步骤如下:

(1)选择 CD/DVD(IDE)项,这里将 Ubuntu10.04 的安装镜像装载进行,如图 1-18 所示。

图 1-18 装载 Ubuntu10.04 的安装镜像

(2)单击 WMware Workstation 运行界面上的 Power on this virtual machine 选项,启动 Ubuntu 安装界面,如图 1-19 所示。

(13)

(3)用户可以根据自己的喜好选择相应版本的 Ubuntu,这里安装语言选择 English 版本, 单击 Install Ubuntu 10.04.1 LTS 按钮,如图 1-20 所示。

图 1-20 选择安装版本类型和语言

(4)在如图 1-21 所示的界面上,选中 Erase and use the entire disk(擦除和使用整个盘)单 选项,单击 Forward 按钮。

图 1-21 选择擦除和使用整个盘选项

(5)在如图 1-22 所示的界面上,设置登录 Ubuntu 系统的用户名和密码,输入正确之后, 单击 Forward 按钮。

(14)

图 1-22 输入用户名和密码

(6)当按照后面的安装向导完成 Ubuntu 系统的安装之后,登录 Ubuntu 系统,在如图 1-23 所示的登录界面上,输入前面设置的 wh 用户密码进行系统登录。

图 1-23 登录 Ubuntu 系统 1.2.4 Root用户参数设置

Ubuntu 系统的默认 root 密码是随机的,即每次开机都有一个新的 root 密码。用户可以在 终端输入命令 sudo passwd,然后输入当前 wh 用户的密码,回车之后,终端会提示我们输入 新的密码并确认,此时的密码就是 root 新密码。修改成功后,输入命令 su root,再输入新的 密码就可以了,如图 1-24 所示。

(15)

图 1-24 设置 root 用户参数 1.2.5 安装 VMware Tools 前面安装完 Ubuntu 系统之后,用户必须使用 Ctrl+Alt 组合键才能在虚拟和现实系统间进 行切换,这样使用起来极不方便。而 VMware Tools 用于解决虚拟机的分辨率问题、改善鼠标 的性能以及将虚拟机的剪贴板内容直接粘贴到宿主机中,VMware Tools 是通过光盘镜像的方 式加载到操作系统中运行安装的,下面详细介绍 VMware Tools 安装过程。

(1)打开 VMware Workstation,选择菜单 VM→Install VMware Tools 命令,如图 1-25 所示。

图 1-25 Install VMware Tools 选项

(2)在/media/VMware Tools/目录下显示如图 1-26 所示的 VMwareTools-8.4.5-324285.tar.gz 压缩文件。

(3)解压 VMwareTools-8.4.5-324285.tar.gz 文件。

首先将 VMwareTools-8.4.5-324285.tar.gz 文件拷贝至/home/wh/目录下,然后执行解压命令, 如图 1-27 所示,具体操作命令如下:

root@wh-desktop:~# cd /media/VMware\ Tools/

root@wh-desktop:/media/VMware Tools# cp VMwareTools-8.4.5-324285.tar.gz /home/wh/ root@wh-desktop:/home/wh/# tar xzvf VMwareTools-8.4.5-324285.tar.gz

(16)

图 1-26 生成 VMwareTools-8.4.5-324285.tar.gz 文件

图 1-27 解压 VMwareTools-8.4.5-324285.tar.gz 文件

(4)执行 VMwareTools-8.4.5-324285.tar.gz 文件的解压命令之后,生成 vmware-tools-distrib 文件夹,如图 1-28 所示。

(17)

(5)执行 vmware-tools-distrib 文件夹下的 vmware-install.pl 文件,如图 1-29 所示,具体 操作命令如下: root@wh-desktop:/home/wh/vmware-tools-distrib# ./vmware-install.pl 图 1-29 执行 vmware-install.pl 文件 (6)按照提示输入信息,推荐输入回车执行,最后成功完成 VMwareTools 的安装,如图 1-30 所示。 图 1-30 VMwareTools 的安装成功 1.2.6 vim编辑器安装

Ubuntu 默认安装的 vim 编辑器在编辑文本过程中存在很多问题,因此需要重新下载 vim。 用 root 账户登录 Ubuntu,命令行中输入 vim,如果未安装会得到如图 1-31 所示的提示, 这里按照提示输入 apt-get install vim 进行 vim 编辑器安装。

(18)

安装完成后,输入 vim 会进入 vim 的标准模式,这时按键盘上的 i 键进入插入模式,按 Esc 键退出插入模式,进入标准模式,在这个模式下有几个基本命令:  :wq-保存退出。  i-进入插入模式。  x-删除当前光标的字符。  dd-删除当前行,并且保存当前行到剪切板。  p-粘贴。  help <command>-查看命令的帮助。  ↑、↓、←、→键:上、下、左、右移动光标。  :w filename-保存文件到当前目录。  :q-退出 vim 页面。  :wq!-强行退出 vim 页面。 1.2.7 设置 Linux 系统共享文件夹

(1)打开 VMware Workstation,选择 Options 选项卡,在 Folder sharing 区域中,选中 Always enabled 单选项,单击 Add 按钮,如图 1-32 所示。

图 1-32 选择 Options 选项

(2)在如图 1-33 所示的“新增共享文件夹”对话框中,路径选择 E:\Sharewhtc,名称设 置为 Sharewhtc,单击 Next 按钮,如图 1-33 所示。

(19)

图 1-33 设置共享文件夹属性

(3)当属性设置完成之后,会显示如图 1-34 所示的共享文件夹 Sharewhtc 的名称及路 径信息。

(20)

1.3 Linux

交叉编辑器安装

1.3.1 交叉开发环境特点 嵌入式系统通常是一个资源受限的系统,因此直接在嵌入式系统的硬件平台上编写软件 比较困难,有时候甚至是不可能的。目前一般采用的解决办法是首先在通用计算机上编写程序, 然后通过交叉编译生成目标平台上可以运行的二进制代码格式,最后再下载到目标平台的特定 位置上运行。 嵌入式应用软件开发时的一个显著特点就是需要交叉开发环境(Cross Development Environment)的支持,交叉开发环境是指编译、链接和调试嵌入式应用软件的环境,它与运 行嵌入式应用软件的环境有所不同,通常采用宿主机/目标机模式,如图 1-35 所示。 图 1-35 交叉开发环境 1.3.2 交叉开发环境组成要素 1.宿主机(Host) 宿主机(Host)是一台通用计算机(如 PC 机或者工作站),它通过串口或者以太网接口 与目标机通信。宿主机的软硬件资源比较丰富,不但包括功能强大的操作系统(如 Windows 和 Linux),而且还有各种各样优秀的开发工具(如 Qt Creator 和 Microsoft 的 Embedded Visual C++等),能够大大提高嵌入式应用软件的开发速度和效率。 2.目标机(Target) 目标机(Target)一般在嵌入式应用软件开发期间使用,用来区别与嵌入式系统通信的宿 主机,它可以是嵌入式应用软件的实际运行环境,也可以是能够替代实际运行环境的仿真系统, 但软硬件资源通常都比较有限。嵌入式系统的交叉开发环境一般包括交叉编译器、交叉调试器 和系统仿真器,其中交叉编译器用于在宿主机上生成能在目标机上运行的代码,而交叉调试器 和系统仿真器则用于在宿主机与目标机间完成嵌入式软件的调试。 在采用宿主机/目标机模式开发嵌入式应用软件时,首先利用宿主机上丰富的资源和良好 的开发环境开发和仿真调试目标机上的软件,然后通过串口或者用网络将交叉编译生成的目标 宿主机 目标机 RS232/Ethernet

(21)

代码传输并装载到目标机上,并在监控程序或者操作系统的支持下利用交叉调试器进行分析和 调试,最后目标机在特定环境下脱离宿主机单独运行。 1.3.3 安装交叉编译器 (1)将 arm-linux-gcc-4.5.1-v6-vfp-20101103.tgz 交叉编译器拷贝到前面构建的共享文件夹 Sharewhtc 目录下,如图 1-36 所示。 图 1-36 交叉编译器拷贝到共享文件夹 (2)执行如下命令进行解压 arm-linux-gcc-4.5.1-v6-vfp-20101103.tgz 交叉编译器,如图 1-37 所示。

root@wh-desktop:/mnt/hgfs/Sharewhtc# tar xzvf arm-linux-gcc-4.5.1-v6-vfp-20101103.tgz -C /

图 1-37 执行解压命令

(3)交叉编译器解压完成之后,在/opt/FriendlyARM/toolschain/4.5.1/bin/目录下生成各种 交叉编译器文件,如图 1-38 所示。

(4)设置交叉编译器环境变量。

为了一开机就自动设置 PATH,可修改/etc/profile 文件。执行命令:root@wh-desktop:/# vim /etc/profile,打开文件之后,添加如下内容,如图 1-39 所示。

(22)

export PATH=/opt/FriendlyARM/toolschain/4.5.1/bin:$PATH

图 1-38 生成交叉编译器文件

图 1-39 设置交叉编译器环境变量 (5)输入以下命令,使设置的环境变量生效。

root@wh-desktop:/# source /etc/profile

(6)检查交叉工具链版本,输入以下命令,如图 1-40 所示。

(23)

图 1-40 测试 arm-linux-gcc -v 版本

1.4 Linux

平台的 C 程序开发

1.4.1 Linux的 C 程序代码编写

用 vim 编辑文件 test.c,执行 root@wh-desktop:/home/wh# vim test.c 命令,C 程序代码内容 如下: #include <stdio.h> int sum(int m); int main() { int i , n=0; sum(50);

for(i=1; i<=50; i++) { n +=1; } printf("The sum of 1-50 is %d \n", n ); } int sum(int m) { int i ,n =0; for (i=1; i<m; i++)

n +=1;

printf("The sum of 1-m is %d\n", n); }

(24)

vim 编辑器中的 C 程序代码如图 1-41 所示。

图 1-41 C 程序代码 1.4.2 编译 PC 版的 C 程序

用 PC 版的 Linux 的 C 语言编译器 gcc 执行命令:root@wh-desktop:/home/wh# gcc -o pc-test test.c,编译完成之后生成 pc-test 可执行程序,然后执行./pc-test 文件,显示如图 1-42 所示的 运行结果。

图 1-42 编译运行 PC 版的 C 程序 1.4.3 编译 ARM 版的 C 程序

用交叉编译器 arm-linux-gcc 编译 test.c 文件。注意:直接从 Windows 下的 Word 文档中拷 贝程序到 vim 编缉器中,编译时可能会出现错误(可能是字库或换行符的不同)。

执行 root@wh-desktop:/home/wh# arm-linux-gcc -o Arm-test test.c 命令,生成文件 Arm-test。 输入 root@wh-desktop:/home/wh# file Arm-test 命令,查看生成的 test 文件的类型,Arm-test 的文件类型为 ARM 格式,说明 ARM 的交叉编译环境已经安装成功,如图 1-43 所示。

(25)

图 1-43 交叉编译 ARM 版本的 C 程序

1.5 Linux

平台的 minicom 串口安装配置

为了能够顺利进行后面的项目开发测试,这里需要安装 Linux 下的串口调试工具 minicom。 Linux 下 Minicom 的功能与 Windows 下的超级终端功能相似,可以通过串口控制外部的硬件 设备,适于在 Linux 对嵌入式设备管理。

1.5.1 设置虚拟机串口参数

(1)打开 VMware Workstation,选择 Hardware 选项,单击 Add 按钮,弹出如图 1-44 所 示的“新增串口设备”对话框,选择 Serial Port 项,单击 Next 按钮。

(26)

(2)在如图 1-45 所示的“新增串口设备”对话框中,选择宿主机上的实际物理串口设备。 图 1-45 选择宿主机串口设备 (3)在如图 1-46 所示的“新增串口设备”对话框中,选择 Auto detect 选项,表示自动检 测物理串口设备。 图 1-46 选择自动检测物理串口设备 1.5.2 安装与配置 minicom 1.安装 minicom

(27)

2.配置 minicom

(1)执行 root@wh-desktop:/# minicom -s 命令配置 minicom 串口,如图 1-47 所示。

图 1-47 配置 minicom 串口 (2)选择 Serial port setup 项进入如图 1-48 所示的界面。

图 1-48 串口参数设置

(3)将“A - Serial Device:”由原来的/dev/ttyS0 设置为为/dev/ttyS1,具体参数请根据宿 主机系统设置,回车退出,然后选择 Save setup as dfl 项,回车保存更改设置,再选择 Exit 项 退出 minicom,接着 minicom 开始初始化,链接上串口设备,如图 1-49 所示。

(28)

參考文獻

相關文件

因此若將效率應用在教育機構方面,陳云愷【 45】認為教育

(Embedded System)為主,主要也都以 Linux 軟體平台來運作。對 EPON ONU Client 端,可以透過 GUI 介面選單來設定其所要運作的功能,配合 Linux 軟體與

Model-View-Control 架構,資料庫、程式邏輯與呈現完全清楚的分離。在檔 案名稱與目錄結構方面,也都定義的很清楚。資料庫這部份(Active Record) 是

「Web Service 是一種介面,能夠使應用軟體相互溝通的一個平台,它以和程式語言無 關的方式描述一組可經由標準 XML 訊息存取的網路操作;Web Service

[r]

关系密切。2011年3月,广东省政府与 澳门特别行政区政府签署了《粤澳合

十、信息的传递

下图是单脚支撑形式的示意图,支撑脚和地面的接触点 A 与前、后轮和地面之间 的接触点 B 、 C 共同构成三点支撑,在地面形 成△