


[摘? ? ? ? ? ?要]? 現(xiàn)代生產(chǎn)生活中人們越來越多地使用嵌入式產(chǎn)品及系統(tǒng),對教學(xué)來說,如何使用嵌入式環(huán)境來更好地面向課程實(shí)驗(yàn)教學(xué)和學(xué)習(xí)也顯現(xiàn)出重要的意義。著眼于嵌入式相關(guān)概念、實(shí)驗(yàn)環(huán)境、資料查閱、實(shí)驗(yàn)以及多種形式教學(xué)適度平衡等,多角度、多方面就如何開展嵌入式實(shí)驗(yàn)教學(xué)進(jìn)行了探討。
[關(guān)? ? 鍵? ?詞]? QT;嵌入式;實(shí)驗(yàn)教學(xué)
[中圖分類號]? G712 ? ? ? ? ? ? ? ? ? ?[文獻(xiàn)標(biāo)志碼]? A? ? ? ? ? ? ? ? ? ? ? [文章編號]? 2096-0603(2020)02-0122-02
Embedded System即嵌入式系統(tǒng)在我們的日常生活中都有涉及,它的出現(xiàn)已經(jīng)有30多年的歷史。自從集成電路飛速發(fā)展以來,人們對智能控制在工業(yè)領(lǐng)域中的應(yīng)用就有了更好的期望。因此具有更高的存儲容量、更快的運(yùn)算處理速度和更智能化的自我管理操作系統(tǒng)的嵌入式產(chǎn)品便應(yīng)運(yùn)而生了。如果說我們平時所用的電腦是復(fù)雜的計(jì)算機(jī)系統(tǒng),那么嵌入式產(chǎn)品就是面向?qū)嶋H應(yīng)用需求的簡化版的計(jì)算機(jī)系統(tǒng)以及外圍硬件資源。在教學(xué)中所使用的嵌入式產(chǎn)品也是具有上述相同特征的。和常見的計(jì)算機(jī)一樣嵌入式控制處理器的類型也有很多種,其中最常見的就是ARM公司授權(quán)使用的ARM處理器,而結(jié)合教學(xué)的實(shí)際需求特點(diǎn)一般所用的是ARM處理器中的CORTEX-A8型號處理器。
一、嵌入式實(shí)驗(yàn)教學(xué)環(huán)境
在實(shí)驗(yàn)教學(xué)中使用的如基于ARM CORTEX-A8內(nèi)核的開發(fā)平臺或?qū)嶒?yàn)箱就是目標(biāo)機(jī)。如何使用包括目標(biāo)機(jī)在內(nèi)的嵌入式環(huán)境來更好地面向課程實(shí)驗(yàn)教學(xué)和學(xué)習(xí)可能是不太輕松的一個話題。下面我們以嵌入式系統(tǒng)目標(biāo)機(jī)GUI的基于QT的顯示實(shí)驗(yàn)來加以探討。首先我們需要準(zhǔn)備以下實(shí)驗(yàn)環(huán)境:(1)PC主機(jī);(2)嵌入式系統(tǒng)目標(biāo)機(jī);(3)相關(guān)配套軟件及連接配件。如圖1所示:
相關(guān)配套軟件包括:宿主機(jī)中的Vmware(虛擬機(jī)工具要裝好)、Linux(圖形化界面要有)、目標(biāo)機(jī)(arm-linux-gcc、Vim編輯器、QT環(huán)境等要有)。注:如果宿主機(jī)是Windows系統(tǒng)需裝Vmware虛擬機(jī),如果是Linux系統(tǒng)便無需安裝。
二、基于QT的嵌入式實(shí)驗(yàn)教學(xué)探討
啟動QtCreator
選中New Project建立一個project,設(shè)置項(xiàng)目介紹和位置中的名稱以及創(chuàng)建路徑。在構(gòu)建套件(Kit)中選擇Desktop Qt5.2.0 GCC 32bit以及相關(guān)的Debug和Release選擇項(xiàng)。默認(rèn)設(shè)置類名(C):MainWindow;基類(B):QMainWindow;頭文件(H):mainwin dow.h;源文件(S):mainwindow.cpp;界面文件(F):mainw indow.ui。完成項(xiàng)目管理設(shè)置。
選中“編輯”,在項(xiàng)目一欄中選中已建立好的項(xiàng)目,在右鍵菜單中選擇“添加現(xiàn)有文件”,將包含兩個圖形文件的images文件夾添加到project中,Images文件夾就出現(xiàn)在“其他文件”中。選中源文件中的main.cpp,并修改其程序內(nèi)容為:
#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();
}
運(yùn)行(菜單運(yùn)行或運(yùn)行快捷鍵Ctrl+R)
出現(xiàn)問題如下:
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
此時可提醒學(xué)生查閱相關(guān)資料,得到解決方案。因?yàn)槲覀冋f使用的版本是基于QT5.2.0,和原來低版本在聲明定義上有所差別,因此我們在程序開頭增加聲明:
#include
重新運(yùn)行,結(jié)果如圖2所示無圖片輸出。
出現(xiàn)問題如下:
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
讓學(xué)生閱讀程序找出與圖片輸出有關(guān)語句為:frame->setStyleSheet("QFrame#myframe{border-image:url(images/1.png)}") frame1->setStyleSheet("QFrame#myframe{border-image:url(images/2.jpg)}");
仔細(xì)分析該圖片路徑為相對路徑及工程項(xiàng)目文件所在路徑,與圖片實(shí)際路徑不符合。解決方案:將相對路徑改為絕對路徑,或?qū)D片文件移動至工程項(xiàng)目文件所在路徑。這里采用第一種方案。
修改后程序?yàn)椋?/p>
#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();
}
重新運(yùn)行,結(jié)果如圖3所示:
在實(shí)驗(yàn)之前先要講清楚相關(guān)概念:(1)主機(jī)和目標(biāo)機(jī)的特征和相互關(guān)系;(2)如何在主機(jī)上創(chuàng)建工程項(xiàng)目文件并通過編譯匯編生產(chǎn)可執(zhí)行程序文件;(3)在程序調(diào)試過程中遇到的問題如何通過有效途徑解決;(4)如何控制可執(zhí)行程序文件和數(shù)據(jù)從主機(jī)傳到目標(biāo)機(jī);(5)如何在目標(biāo)機(jī)中來運(yùn)行可執(zhí)行程序,從而幫助學(xué)生更好地完成實(shí)驗(yàn)。在講解過程中可以使用如類比、操作演示、情境問答以及網(wǎng)絡(luò)資源自助輔導(dǎo)等方法,幫助學(xué)生更好地理解。類比法是將需要解釋說明的對象用平時在生活中人們易于接受和常見的事物來恰當(dāng)?shù)丶右躁U述。操作演示是將實(shí)驗(yàn)完整步驟通過PPT、視頻短片和現(xiàn)場演示從感性認(rèn)識角度來加以解釋。情境問答是教師提出在實(shí)驗(yàn)中比較容易遇到的問題由學(xué)生作答并一起展開討論。網(wǎng)絡(luò)資源自助輔導(dǎo)則由學(xué)生通過網(wǎng)絡(luò)資源查閱來自助解疑和輔助學(xué)習(xí)。
在實(shí)驗(yàn)操作過程中可根據(jù)教學(xué)對象學(xué)習(xí)和掌握能力的不同特點(diǎn)來適度平衡學(xué)習(xí)重點(diǎn)和內(nèi)容。如注意力不集中、進(jìn)入狀態(tài)較慢的學(xué)生應(yīng)適度給予完整演示、講解和指導(dǎo)。當(dāng)然也可由能力掌握較全面的學(xué)生來幫助有困難的學(xué)生,教師只對重點(diǎn)、難點(diǎn)給予必要的指導(dǎo)。當(dāng)然對能力較一般的學(xué)生提出小組互助討論學(xué)習(xí)也應(yīng)給予鼓勵,但應(yīng)注意適度的效果落實(shí)。另外,在實(shí)際操作過程中,應(yīng)以互相尊重、互為促進(jìn)的本意來看待教學(xué)雙方提出的建議和要求。同時也應(yīng)教育好學(xué)生不能一味地依賴他人來得出實(shí)驗(yàn)數(shù)據(jù),而還應(yīng)通過自身合理充分地發(fā)揮主觀積極性來科學(xué)實(shí)驗(yàn)。
三、結(jié)語
把握好明確概念、熟悉實(shí)驗(yàn)環(huán)境、大量查閱資料、勇于嘗試以及多種形式教學(xué)適度平衡的原則是順利開展嵌入式實(shí)驗(yàn)教學(xué)的關(guān)鍵。當(dāng)然實(shí)現(xiàn)原則的前提是需要具備一定的時間和條件做好相當(dāng)程度的準(zhǔn)備和實(shí)施。
參考文獻(xiàn):
[1]黎燕霞.嵌入式Linux系統(tǒng)設(shè)計(jì)與開發(fā)[M].北京:電子工業(yè)出版社,2016.
[2]朱華生,呂莉,熊志文,等.嵌入式系統(tǒng)原理與應(yīng)用:基于ARM微處理器和Linux操作系統(tǒng)(修訂版)[M].北京:清華大學(xué)出版社,2018.
編輯 鄭曉燕
作者簡介:戴軍,講師,就職于江蘇開放大學(xué)江蘇城市職業(yè)學(xué)院信息工程學(xué)院,主要從事電子信息、物聯(lián)網(wǎng)等專業(yè)相關(guān)課程的教學(xué)工作。