• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    嵌入式數(shù)控系統(tǒng)人機界面開發(fā)

    2013-12-14 07:39:54陸亭華郭義芬唐厚君
    電氣自動化 2013年4期
    關(guān)鍵詞:數(shù)控系統(tǒng)內(nèi)核嵌入式

    陸亭華,郭義芬,唐厚君

    (上海交通大學 電子信息與電氣工程學院,上海 200240)

    0 引言

    數(shù)控系統(tǒng)中一個重要組成部分就是優(yōu)秀的人機界面模塊。數(shù)控系統(tǒng)中,應用程序是特定的,要求編譯工具必須定制;硬件資源有其有限性、專用性的特點,要合理分配和管理;人機交互的方式上,需要設(shè)計有針對性的交互軟件。

    本文就高性能處理器S3C6410,利用開源嵌入式Linux操作系統(tǒng),對數(shù)控系統(tǒng)中人機交互系統(tǒng)進行了一定研究及開發(fā),主要完成了嵌入式UI開發(fā)環(huán)境的搭建、輸入輸出設(shè)備的驅(qū)動移植、人機交互界面的設(shè)計,其中UI開發(fā)環(huán)境的搭建又包括兩方面內(nèi)容:PC開發(fā)環(huán)境搭建,即PC主機上交叉編譯環(huán)境及Qt開發(fā)環(huán)境的建立;嵌入式系統(tǒng)運行環(huán)境搭建,即開發(fā)板上內(nèi)核移植、文件系統(tǒng)、Qt應用庫文件及環(huán)境變量配置等內(nèi)容。

    其中作為軟件載體的UT-S3C6410目標板為基于ARM內(nèi)核技術(shù)的運算和信息處理平臺。嵌入式Linux操作系統(tǒng)則以其精簡、穩(wěn)定、開源等諸多優(yōu)點,在順利運行Qt程序的同時使得開發(fā)過程簡便許多。最終搭建的系統(tǒng)最突出的特點在于其可移植性強、開放性強。

    圖1 系統(tǒng)框架

    1 PC開發(fā)環(huán)境搭建

    設(shè)計的主要開發(fā)任務是在PC主機上完成的,而嵌入式平臺僅是目標測試平臺。PC主機上的開發(fā)環(huán)境主要包括交叉編譯工具和Qt開發(fā)環(huán)境。為了對嵌入式系統(tǒng)進行交叉編譯,并考慮到兼容性等問題,在PC主機上安裝 Linux操作系統(tǒng)(此為 Ubuntu 10.10),主要的搭建工作都在Linux環(huán)境下完成。

    交叉編譯即一種計算機環(huán)境中運行的編譯程序編譯出在另外一種環(huán)境下運行的代碼的編譯過程。要實現(xiàn)針對特定兩種計算機的交叉編譯,特制的交叉編譯工具必不可少。建立針對ARM的交叉編譯鏈,與其他的體系結(jié)構(gòu)相類似,過程大致有以下幾個步驟[1]:

    (1)下載源文件(包括 binutils、gcc、glibc、linux kernel)、補丁和建立編譯的目錄

    圖6給出了τ1=5,Cwf= 1,ηc=ηT=0.85,D1=D2=0.96時,總壓比πout與總熱導率λT的關(guān)系.由圖6可以發(fā)現(xiàn),πout隨著λT的增加而增大.

    (2)建立內(nèi)核頭文件

    (3)建立二進制工具(binutils)

    (4)建立初始編譯器(bootstrap gcc)(5)建立c庫(glibc)

    (6)建立全套編譯器(full gcc)

    通過交叉編譯工具制作得到合適的編譯工具之后,還需要在PC主機Linux系統(tǒng)下安裝該編譯工具并修改環(huán)境變量使之生效,可以使用export指令查看添加是否成功。

    完成交叉編譯工具的安裝之后,就可以開始安裝需要使用到的開發(fā)工具了,本設(shè)計主要的開發(fā)工具為開源的Qt界面開發(fā)套件。Qt工具的安裝包括了Qt Creator、Qt Designer和Qt/Embedded的安裝,其中Qt/Embedded的編譯比較復雜,但它提供了將應用程序使用于目標嵌入式平臺的編譯工具和必要支持庫,所以必須在主機上安裝。

    首先進入主機工作目錄,在Linux終端下修改使用的交叉編譯工具,然后對Qt/Embedded的源代碼進行交叉編譯:

    2 嵌入式運行環(huán)境搭建

    如圖2所示,一個完整的嵌入式 Linux系統(tǒng)組成包括:bootloader、boot parameters、kernel、root filesystem。嵌入式運行環(huán)境的搭建包括內(nèi)核配置、根文件系統(tǒng)制作、庫文件移植等內(nèi)容。嵌入式系統(tǒng)上電啟動直至進入內(nèi)核文件系統(tǒng)的過程中,我們從啟動裝載程序(bootloader)開始逐一搭建。

    嵌入式系統(tǒng)運行平臺千差萬別,必須要使用適合于自身平臺的內(nèi)核及工具軟件。本設(shè)計中建立開發(fā)環(huán)境使用到的部分工具如下[2]:

    (1)交叉編譯器:cross-4.2.2 -eabi

    (2)內(nèi)核版本:linux2.6.28

    (3)Bootloader版本:u-boot-1.1.6

    (4)根文件系統(tǒng):yaffs2

    Bootloader代碼是芯片復位后進入操作系統(tǒng)之前執(zhí)行的一段代碼,主要用于完成由硬件啟動到操作系統(tǒng)啟動的過渡,從而為操作系統(tǒng)提供基本的運行環(huán)境,如初始化CPU、堆棧、存儲器系統(tǒng)等,其功能類似于PC機的BIOS程序,本設(shè)計中選用比較流行的 u-boot版本。而 Linux從技術(shù)上來說是一個內(nèi)核(kernel),提供硬件抽象層、磁盤及文件系統(tǒng)控制、多任務等功能,向外部提供了對計算機設(shè)備的核心管理調(diào)用。Linux是開源的,其內(nèi)核源碼可以在 www.kernel.org網(wǎng)站上下載到。

    制作適用于目標平臺的bootloader和kernel同樣需要使用到之前安裝的交叉編譯工具。內(nèi)核制作時,可根據(jù)自身平臺的資源和應用要求修改內(nèi)核配置參數(shù)(本設(shè)計主要須添加LCD)。最后將編譯得到的二進制映像文件燒寫到目標平臺中。

    之后還須制作必要的根文件系統(tǒng)。文件系統(tǒng)是包括在一個磁盤(包括光盤、軟盤、閃盤及其它存儲設(shè)備)或分區(qū)的目錄結(jié)構(gòu)[3]。Linux引入了虛擬文件系統(tǒng) VFS(Virtual File System),為各類文件系統(tǒng)提供一個統(tǒng)一的操作界面和應用編程接口,它將低層數(shù)據(jù)結(jié)構(gòu)映射到高層數(shù)據(jù)結(jié)構(gòu),決定目錄項中存儲文件的哪些信息等。Linux啟動時,第一個必須掛載的是根文件系統(tǒng),之后可以自動或手動掛載其他的文件系統(tǒng)。

    通過借助Busybox工具可以完成文件系統(tǒng)的制作,大致步驟如下:

    (1)配置Busybox,配置制作的文件系統(tǒng)

    (2)編譯 BusyBox,生成 bin、sbin、linuxrc 文件夾

    (3)創(chuàng)建文件系統(tǒng)其它目錄(boot、dev、etc、home、lib、mnt、proc、root、sys、tmp、var、usr)

    (4)建立、復制文件系統(tǒng)所需的文件(包括console和null節(jié)點文件、fstab和inittab文件、rcS文件)

    (5)復制lib庫文件,完成文件系統(tǒng)制作

    制作完成文件系統(tǒng)之后還須將文件系統(tǒng)燒寫到目標平臺的存儲設(shè)備內(nèi),并設(shè)置啟動參數(shù)使之開機后能自動加載該文件系統(tǒng)。

    圖2 嵌入式系統(tǒng)上電啟動過程

    最后需要將程序在目標平臺運行必要的支持庫文件下載到目標平臺中。本設(shè)計中將編譯好的tslib庫和QtEmbedded-arm下/lib、/plugin文件夾下載到目標平臺文件系統(tǒng)相同路徑下,同時修改目標平臺的環(huán)境變量,包括庫鏈接路徑、觸摸屏設(shè)備、字體文件等。

    3 Qt交互界面設(shè)計

    Qt/Embedded是著名的Qt庫開發(fā)商TrollTech發(fā)布的面向嵌入式系統(tǒng)的 Qt版本。同樣基于客戶/服務器體系結(jié)構(gòu),Qt/Embedded延續(xù)了Qt在X上的強大功能,在底層摒棄了 X lib,針對高端嵌入式圖形領(lǐng)域的應用而設(shè)計,僅采用Framebuffer作為底層圖形接口,支持鍵盤、GPM鼠標、觸摸屏以及用戶自定義的設(shè)備等。FrameBuffer是出現(xiàn)在 Linux 2.2.xx內(nèi)核當中的一種驅(qū)動程序接口,而Qt/Embedded就是采用Framebuffer作為底層圖形接口的。

    Qt包含了許多支持嵌入式系統(tǒng)開發(fā)的工具,其中有兩個完全集成在一起實用工具:qmake和Qt designer(圖形設(shè)計器)[4]。qmake 是 一個為編譯Qt/Embedded庫和應用而提供的 Makefile生成器。它能夠根據(jù)一個工程文件(.pro)產(chǎn)生不同平臺下的 Makefile文件。qmake支持跨平臺開發(fā)和影子生成,易于在不同的配置之間切換。Qt圖形設(shè)計器可以使開發(fā)者可視化地設(shè)計對話框而不需編寫代碼,圖3所示為Qt開發(fā)流程圖。

    如圖4所示,信號和插槽機制是 Qt的核心機制[5]。信號和插槽是Qt自行定義的一種通信機制,它獨立于標準的C/C++語言,因此要正確地處理信號和插槽,必須借助一個稱為 moc(Meta Object Compiler)的Qt工具,該工具是一個C++預處理程序,它為高層次的事件處理自動生成所需要的附加代碼。所謂GUI就是要對用戶的動作做出響應,程序中必須把事件和相關(guān)代碼聯(lián)系起來,這樣才能對事件做出響應。信號與插槽機制則是一種強有力的對象間通信機制,完全可以取代原始的回調(diào)和消息映射機制。在Qt中信號和插槽取代了函數(shù)地址指針,使得通信程序更為簡潔明了,而且不會像回調(diào)函數(shù)那樣產(chǎn)生core dumps。

    一般情況下,數(shù)控系統(tǒng)人機界面需要實現(xiàn)對特定類型文件的讀取,將其以圖形形式顯示,并且能夠提供基本圖形來組建比較復雜的圖形來滿足用戶的加工需求。同時,通過交互界面,數(shù)控切割機的運行參數(shù)情況可以由用戶來設(shè)置保存以及實時顯示。針對這些基本需求,如圖5所示,本設(shè)計中在主界面下創(chuàng)建4個子界面入口,分別為:

    圖3 Qt開發(fā)流程

    文件導入:該子界面下可以選擇打開指定格式的文檔,將文檔中指定的圖形在繪圖區(qū)域繪制出來,并提供了運行管理界面的入口;

    圖形選擇:此界面提供直線、弧線、矩形等六種基本圖形作為構(gòu)圖元素,可以設(shè)置這些基本圖形的參數(shù)來繪制所需要的圖形,也提供了運行界面的入口;

    圖4 信號和插槽機制

    圖5 交互系統(tǒng)基本框架

    參數(shù)設(shè)置:數(shù)控系統(tǒng)中所需設(shè)置的參數(shù)眾多,此界面中羅列了三塊十余個可設(shè)置參數(shù),并可以將設(shè)置好的參數(shù)保存,下次啟動時將自動載入保存過的參數(shù)設(shè)置;

    運行管理:此界面主要設(shè)計用來啟停數(shù)控切割機的運行,目前為對模擬運行的操作,其中將部分參數(shù)顯示出來,并將所要切割的圖形顯示出來,返回顯示走線過程中當前坐標的位置,如圖6所示。

    圖6 圖形選擇界面

    4 結(jié)束語

    本文在ARM11高性能處理器的基礎(chǔ)上,使用嵌入式Linux操作系統(tǒng)平臺,詳細地闡述了嵌入式開發(fā)平臺的構(gòu)建過程,包括交叉編譯環(huán)境、PC主機平臺、嵌入式應用平臺和嵌入式應用程序支持庫等。最后依靠Qt/Embedded工具,初步完成了一款針對數(shù)控系統(tǒng)的人機界面的實現(xiàn)。

    [1]孫紀坤,張小全.嵌入式 Linux系統(tǒng)開發(fā)技術(shù)詳解——基于 ARM[M].北京:人民郵電出版社,2006.

    [2]UT-S3C6410開發(fā)板Linux使用手冊[Z].深圳市友堅恒天科技有限公司,2009.

    [3]鳥哥.鳥哥的 Linux私房菜基礎(chǔ)學習篇[M].北京:人民郵電出版社,2010.

    [4]Jasmin Blanchette,Mark Summerfield.C++GUI Programming with Qt 4[M].New Jersey:Prentice Hall,2008.

    [5]蔡志明.精通Qt4編程[M].北京:電子工業(yè)出版社,2008.

    猜你喜歡
    數(shù)控系統(tǒng)內(nèi)核嵌入式
    萬物皆可IP的時代,我們當夯實的IP內(nèi)核是什么?
    強化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
    基于嵌入式Linux內(nèi)核的自恢復設(shè)計
    Linux內(nèi)核mmap保護機制研究
    搭建基于Qt的嵌入式開發(fā)平臺
    基于FANUC 32i A數(shù)控系統(tǒng)的外部測量設(shè)計
    西門子840D sl數(shù)控系統(tǒng)在SC125大型車銑鏜床技術(shù)改造中的應用
    基于FANUC Oi mate TD數(shù)控系統(tǒng)的手動功能開發(fā)
    數(shù)控系統(tǒng)中GUI軟件平臺設(shè)計和實現(xiàn)
    嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應用
    甘南县| 巫溪县| 辽中县| 晋城| 襄汾县| 泰兴市| 句容市| 天峨县| 筠连县| 北宁市| 山阳县| 离岛区| 驻马店市| 贵阳市| 工布江达县| 连江县| 新余市| 临邑县| 隆林| 鄂托克前旗| 大化| 嘉兴市| 孝昌县| 高要市| 商丘市| 闻喜县| 乐业县| 盈江县| 南汇区| 开鲁县| 瑞安市| 祁门县| 同心县| 石嘴山市| 故城县| 广丰县| 句容市| 和田市| 望城县| 纳雍县| 印江|