基于QT的嵌入式实验教学探讨
2020-09-02戴军
[摘 要] 现代生产生活中人们越来越多地使用嵌入式产品及系统,对教学来说,如何使用嵌入式环境来更好地面向课程实验教学和学习也显现出重要的意义。着眼于嵌入式相关概念、实验环境、资料查阅、实验以及多种形式教学适度平衡等,多角度、多方面就如何开展嵌入式实验教学进行了探讨。
[关 键 词] QT;嵌入式;实验教学
[中图分类号] G712 [文献标志码] A [文章编号] 2096-0603(2020)02-0122-02
Embedded System即嵌入式系统在我们的日常生活中都有涉及,它的出现已经有30多年的历史。自从集成电路飞速发展以来,人们对智能控制在工业领域中的应用就有了更好的期望。因此具有更高的存储容量、更快的运算处理速度和更智能化的自我管理操作系统的嵌入式产品便应运而生了。如果说我们平时所用的电脑是复杂的计算机系统,那么嵌入式产品就是面向实际应用需求的简化版的计算机系统以及外围硬件资源。在教学中所使用的嵌入式产品也是具有上述相同特征的。和常见的计算机一样嵌入式控制处理器的类型也有很多种,其中最常见的就是ARM公司授权使用的ARM处理器,而结合教学的实际需求特点一般所用的是ARM处理器中的CORTEX-A8型号处理器。
一、嵌入式实验教学环境
在实验教学中使用的如基于ARM CORTEX-A8内核的开发平台或实验箱就是目标机。如何使用包括目标机在内的嵌入式环境来更好地面向课程实验教学和学习可能是不太轻松的一个话题。下面我们以嵌入式系统目标机GUI的基于QT的显示实验来加以探讨。首先我们需要准备以下实验环境:(1)PC主机;(2)嵌入式系统目标机;(3)相关配套软件及连接配件。如图1所示:
相关配套软件包括:宿主机中的Vmware(虚拟机工具要装好)、Linux(图形化界面要有)、目标机(arm-linux-gcc、Vim编辑器、QT环境等要有)。注:如果宿主机是Windows系统需装Vmware虚拟机,如果是Linux系统便无需安装。
二、基于QT的嵌入式实验教学探讨
启动QtCreator
选中New Project建立一个project,设置项目介绍和位置中的名称以及创建路径。在构建套件(Kit)中选择Desktop Qt5.2.0 GCC 32bit以及相关的Debug和Release选择项。默认设置类名(C):MainWindow;基类(B):QMainWindow;头文件(H):mainwin dow.h;源文件(S):mainwindow.cpp;界面文件(F):mainw indow.ui。完成项目管理设置。
选中“编辑”,在项目一栏中选中已建立好的项目,在右键菜单中选择“添加现有文件”,将包含两个图形文件的images文件夹添加到project中,Images文件夹就出现在“其他文件”中。选中源文件中的main.cpp,并修改其程序内容为:
#include “mainwindow.h”
#include
#include
int main(int argc,char *argv[])
{
QApplication a(argc,argv);
MainWindow w;
w.show();
QFrame *frame = new QFrame;
QFrame *frame 1= new QFrame;
frame->setObjectName(“myframe”);
frame->resize(800,600);
frame->setStyleSheet(“QFrame#myframe{border-image:url(images/1.png) }”);
frame->show();
frame1->setObjectName(“myframe”);
frame1->resize(800,600);
frame1->setStyleSheet(“QFrame#myframe{border-image:url(images/2.jpg) }”);
frame1->show();
return a.exec();
}
運行(菜单运行或运行快捷键Ctrl+R)
出现问题如下:
In function ‘int main(int,char**): main.cpp
‘QFrame was not declared in this scope main.cpp 9
‘frame was not declared in this scope main.cpp 9
expected type-specifier before ‘QFrame main.cpp 9
expected ; before ‘QFrame main.cpp 9
‘frame1 was not declared in this scope main.cpp 10
expected type-specifier before ‘QFrame main.cpp 10
expected ; before ‘QFrame main.cpp 10
此时可提醒学生查阅相关资料,得到解决方案。因为我们说使用的版本是基于QT5.2.0,和原来低版本在声明定义上有所差别,因此我们在程序开头增加声明:
#include
重新运行,结果如图2所示无图片输出。
出現问题如下:
In function ‘int main(int,char**): main.cpp
‘QFrame was not declared in this scope main.cpp 10
‘frame was not declared in this scope main.cpp 10
expected type-specifier before ‘QFrame main.cpp 10
expected ; before ‘QFrame main.cpp 10
‘frame1 was not declared in this scope main.cpp 11
expected type-specifier before ‘QFrame main.cpp 11
expected ; before ‘QFrame main.cpp 11
让学生阅读程序找出与图片输出有关语句为:frame->setStyleSheet("QFrame#myframe{border-image:url(images/1.png)}") frame1->setStyleSheet("QFrame#myframe{border-image:url(images/2.jpg)}");
仔细分析该图片路径为相对路径及工程项目文件所在路径,与图片实际路径不符合。解决方案:将相对路径改为绝对路径,或将图片文件移动至工程项目文件所在路径。这里采用第一种方案。
修改后程序为:
#include “mainwindow.h”
#include
#include
#include
int main(int argc,char *argv[])
{
QApplication a(argc,argv);
MainWindow w;
w.show();
QFrame *frame = new QFrame;
QFrame *frame 1= new QFrame;
frame->setObjectName(“myframe”);
frame->resize(800,600);
frame->setStyleSheet(“QFrame#myframe{border-image:url(/images/1.png) }”);
frame->show();
frame1->setObjectName(“myframe”);
frame1->resize(800,600);
frame1->setStyleSheet(“QFrame#myframe{border-image:url(/images/2.jpg) }”);
frame1->show();
return a.exec();
}
重新运行,结果如图3所示:
在实验之前先要讲清楚相关概念:(1)主机和目标机的特征和相互关系;(2)如何在主机上创建工程项目文件并通过编译汇编生产可执行程序文件;(3)在程序调试过程中遇到的问题如何通过有效途径解决;(4)如何控制可执行程序文件和数据从主机传到目标机;(5)如何在目标机中来运行可执行程序,从而帮助学生更好地完成实验。在讲解过程中可以使用如类比、操作演示、情境问答以及网络资源自助辅导等方法,帮助学生更好地理解。类比法是将需要解释说明的对象用平时在生活中人们易于接受和常见的事物来恰当地加以阐述。操作演示是将实验完整步骤通过PPT、视频短片和现场演示从感性认识角度来加以解释。情境问答是教师提出在实验中比较容易遇到的问题由学生作答并一起展开讨论。网络资源自助辅导则由学生通过网络资源查阅来自助解疑和辅助学习。
在实验操作过程中可根据教学对象学习和掌握能力的不同特点来适度平衡学习重点和内容。如注意力不集中、进入状态较慢的学生应适度给予完整演示、讲解和指导。当然也可由能力掌握较全面的学生来帮助有困难的学生,教师只对重点、难点给予必要的指导。当然对能力较一般的学生提出小组互助讨论学习也应给予鼓励,但应注意适度的效果落实。另外,在实际操作过程中,应以互相尊重、互为促进的本意来看待教学双方提出的建议和要求。同时也应教育好学生不能一味地依赖他人来得出实验数据,而还应通过自身合理充分地发挥主观积极性来科学实验。
三、结语
把握好明确概念、熟悉实验环境、大量查阅资料、勇于尝试以及多种形式教学适度平衡的原则是顺利开展嵌入式实验教学的关键。当然实现原则的前提是需要具备一定的时间和条件做好相当程度的准备和实施。
参考文献:
[1]黎燕霞.嵌入式Linux系统设计与开发[M].北京:电子工业出版社,2016.
[2]朱华生,吕莉,熊志文,等.嵌入式系统原理与应用:基于ARM微处理器和Linux操作系统(修订版)[M].北京:清华大学出版社,2018.
编辑 郑晓燕
作者简介:戴军,讲师,就职于江苏开放大学江苏城市职业学院信息工程学院,主要从事电子信息、物联网等专业相关课程的教学工作。