内 容 简 介
本书以完成一个智能家居项目为主线,讲述了实训各个阶段所需要的知识。全书分为三篇,第一篇讲述了项目的界面部分,用Qt程序设计,并以一个小项目媒体播放器的制作来加深理解。第二篇讲述了项目的驱动程序部分,即基于ARM学习板及扩展电路板的驱动程序的编写。第三篇讲述了系统的集成,即嵌入式Qt界面控制硬件,完成一个简易的智能家居项目。
本书适合作为大专院校嵌入式专业、物联网专业学生的实训教材。此外,有志从事嵌入式Linux开发的人员可以把本书作为入门级读物。
前 言
Linux操作系统作为源码开放的自由软件,经过20多年的发展与壮大,越来越受到IT界的认可,运行于ARM平台的嵌入式Linux在智能家居、智能汽车等智能化管理系统中的运用占据了很大的比重。嵌入式Linux的学习和开发相对于纯粹的程序设计或是电路设计而言,门槛更高一点,因为知识面要求更广一点,既要精通软件,硬件知识也要懂一点。横跨软硬件的嵌入式Linux驱动程序开发是学生最感困难的地方,但可视化的Qt程序设计,是相对容易一些的。本书通过一个通俗、简易的智能家居项目,先讲述如何以Qt创建界面,然后讲述驱动程序的编写,最后集成为可视化的界面控制硬件,从而减轻读者的学习压力,引发读者的学习兴趣。
本书的软件开发是基于Windows下编辑、Linux下编译的模式,注重讲解实验的过程,力求从看到的实验现象去分析背后的原理。
在第一篇的Qt程序设计中,第1章讲解Qt的起源及开发环境的搭建;第2章通过几个例题讲解,让读者从C++基础知识及Linux中的gcc makefile等基础知识过渡到Qt集成开发环境Qt Creator的使用,并重点分析使用Qt Creator编辑的程序在Linux中编译的过程;第3章详细讲解媒体播放器的制作,加深对Qt程序设计技能的掌握。
在第二篇的驱动程序开发中,第4章讲解软件开发环境的搭建,并详细介绍实验的硬件平台;第5章讲解Linux内核对驱动程序的支撑,并介绍一些常见设备的驱动程序;第6章介绍本书的智能家居项目所需的8个驱动程序。
在第三篇的系统集成中,主要完成的工作是在硬件平台上把图形界面与驱动程序连接起来,实现图形界面与硬件的交互。
本书由广东理工职业学院的龙华和深圳技师学院的谢剑明共同编写,书中的代码在Windows下的Qt Creator、SourceInsight以及Redhat Enterprise 5虚拟机中编写,并且在GEC2440 学习板和扩展板上通过测试。第一篇和第二篇是相对独立的,读者可以单独学习第一篇,也可以单独学习第二篇。
本书随书赠送的资源可从清华大学出版社的网站下载。
本书所讲解的简易智能家居项目曾经是作者所带的12级嵌入式专业的“嵌入式技术综合实训”的课程项目,在此感谢这些学生,他们给了作者很多灵感。学生的想法是特殊的、新颖的,特别是在图形界面方面的设计,比老师的更容易扩展。
本书难免有不完美之处和错误的地方,写作方法也因构思创新而有需要进一步改良的地方,恳请广大读者提出宝贵的意见。
龙 华
目 录第一篇 Qt程序设计第1章 Qt编程基础及开发环境的搭建 11.1 Qt的起源 11.2 Linux系统下的图形界面 31.2.1 Linux本身包括内核和Shell 31.2.2 关于X11 41.2.3 窗口管理器(综合桌面环境) 51.3 Qt的特点及主要构成 51.3.1 Qt的特点 51.3.2 Qt开发环境的主要构成 71.4 Qt开发环境的搭建 81.4.1 安装Qt Creator 81.4.2 安装虚拟机 111.4.3 在虚拟机中安装Linux操作系统 151.5 使用Qt开发环境创建第一个应用程序 281.5.1 关于可视化编程 281.5.2 Qt Creator常用菜单的功能介绍 281.5.3 举例 29第2章 Qt编程基础 362.1 C++基础 362.2 Qt程序编译过程分析 432.2.1 Qt Creator中应用程序的编译过程 432.2.2 Qt的元对象系统 482.2.3 Qt资源文件 492.3 Qt控件编程 522.3.1 Qt的帮助系统 532.3.2 Qt Creator界面中的控件 542.3.3 常用控件举例 572.4 Qt布局管理 602.5 信号与槽 612.6 媒体播放器的制作 622.6.1 制作界面 622.6.2 编写控件的事件代码 64第3章 智能家居项目Qt界面设计 753.1 界面跳转 753.2 智能家居多级子项目界面设计 813.2.1 智能家居项目需求分析 813.2.2 代码实现 82第二篇 驱动程序开发第4章 搭建开发环境 934.1 软件开发环境的搭建 934.1.1 安装VMware Workstation软件 934.1.2 建立虚拟电脑 944.1.3 Ubuntu 12.04的安装 1024.1.4 Ubuntu 12.04系统的配置 1064.1.5 安装使用Source Insight 1134.1.6 交叉环境的搭建 1274.2 硬件环境介绍 1294.2.1 S3C2440芯片介绍 1294.2.2 S3C2440开发板主要硬件的说明 133第5章 驱动程序开发的内核基础 1445.1 嵌入式Linux操作系统的移植过程概述 1445.1.1 Linux操作系统及其特点 1445.1.2 嵌入式Linux操作系统的特点 1445.1.3 嵌入式Linux系统的移植步骤 1455.2 基于GEC2440开发板的内核移植 1465.2.1 Linux-2.6.30内核移植 1465.2.2 驱动模块的动态编译与静态编译 1535.3 常见的嵌入式内核驱动编译与移植 1615.3.1 LCD驱动移植 1615.3.2 触摸屏驱动移植 1665.3.3 USB驱动移植 1705.3.4 网卡驱动移植 174第6章 智能家居项目驱动程序实验 1776.1 房间灯驱动程序 1776.1.1 实验目的 1776.1.2 实验原理 1786.1.3 实验步骤 1786.2 窗帘模块驱动程序 1866.2.1 光敏电阻驱动程序 1866.2.2 步进电机的驱动程序 1946.3 温湿度控制模块驱动程序 2036.3.1 温湿度传感器DHT11驱动程序 2036.3.2 直流电机驱动程序 2116.4 烟雾及红外检测模块驱动程序 2156.4.1 烟雾传感器MQ-2驱动程序 2156.4.2 红外模块驱动程序 2226.4.3 蜂鸣器驱动程序 228第三篇 系统集成第7章 Qt图形下载到学习板 2397.1 带QtE4的文件系统分析 2397.2 对QtE应用程序的编译 240第8章 智能家居项目集成 2418.1 把测试程序加入到Qt程序中 2418.1.1 灯光控制界面 2418.1.2 窗帘控制界面 2448.1.3 温湿度控制界面 2488.1.4 烟雾及红外检测界面 2538.2 驱动程序的统一加载 257附录 制作根文件系统 258参考文献 263