亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        構(gòu)建嵌入式Linux軟件設(shè)計虛擬實驗室

        2020-11-09 07:29:18馮剛譚琦董宇
        計算機(jī)時代 2020年10期
        關(guān)鍵詞:驅(qū)動程序應(yīng)用程序嵌入式

        馮剛 譚琦 董宇

        摘? 要: 為了降低嵌入式軟件學(xué)習(xí)和開發(fā)中硬件資源的投入成本,提出以Proteus作為嵌入式target平臺,Ubutun Linux作為host平臺,構(gòu)建嵌入式Linux軟件設(shè)計虛擬實驗室的步驟。以7段數(shù)碼的顯示為例演示了嵌入式Linux虛擬環(huán)境下進(jìn)行嵌入式軟件開發(fā)的過程,獲得了較直觀的實驗結(jié)果。虛擬實驗室的建設(shè)有效地降低了嵌入式系統(tǒng)的開發(fā)成本,彌補(bǔ)了傳統(tǒng)實驗室的不足。

        關(guān)鍵詞: Proteus; 嵌入式Linux軟件設(shè)計; 虛擬實驗室; 嵌入式系統(tǒng)

        中圖分類號:TP391.9? ? ? ? ? 文獻(xiàn)標(biāo)識碼:A? ? ?文章編號:1006-8228(2020)10-56-04

        Abstract: In order to reduce the cost of hardware resources in embedded software learning and development, the steps of constructing a virtual laboratory for embedded Linux software design with Proteus as the embedded target platform and Ubuntu Linux as the host platform are proposed. A 7-segment digital display is used as an example to demonstrate the process of co-designing software and hardware in an embedded Linux virtual environment, which obtains a more intuitive experiment result. The construction of virtual lab effectively reduces the development cost of embedded systems and makes up for the shortcomings of traditional laboratories.

        Key words: Proteus; embedded Linux software design; virtual laboratory; embedded system

        0 引言

        隨著計算機(jī)技術(shù)的日益發(fā)展,嵌入式系統(tǒng)幾乎滲入到人類社會生活的各個方面。全國各大高等院校的電子、計算機(jī)、信息等專業(yè)均開設(shè)了嵌入式相關(guān)課程,并建立了相應(yīng)的嵌入式實驗室。這些實驗室基本上采用成套的硬件設(shè)備來構(gòu)建,不同的實驗室只能進(jìn)行某一類課程的實驗,而且由于嵌入式硬件的多樣性以及資金的限制,無法建立一個適應(yīng)各種需求的嵌入式實驗室。一些學(xué)校已購買了一定的嵌入式設(shè)備,但因為學(xué)生人數(shù)眾多、設(shè)備的損壞/老化等原因,使得嵌入式實踐過程成為一種驗證性的實驗過程[1-3]。

        虛擬實驗室其基本思想是用軟件方法虛擬各種實際的元器件、虛擬必要的電子檢測設(shè)備如示波器等,即所有的實驗只需要一臺PC機(jī)和相應(yīng)的軟件就可以設(shè)計完成[5-7]。因此,虛擬實驗室的出現(xiàn)較好地解決了目前嵌入式實踐課程中出現(xiàn)的問題,為嵌入式軟硬件教學(xué)提供了一個很好的平臺,豐富了實踐教學(xué)的手段,彌補(bǔ)了傳統(tǒng)實驗室的不足[4]。

        本文針對嵌入式Linux軟件設(shè)計虛擬實驗室的建設(shè)進(jìn)行了研究,提出了利用Proteus構(gòu)建嵌入式Linux軟件設(shè)計的虛擬仿真平臺。通過該虛擬實驗室,可以充分利用Proteus提供的各種硬件設(shè)備,搭建一個仿真現(xiàn)實的實驗系統(tǒng),進(jìn)而在這個系統(tǒng)上完成整個基于Linux的嵌入式軟件開發(fā)過程。

        1 虛擬實驗室的特點

        由于嵌入式Linux軟件設(shè)計涉及到嵌入式系統(tǒng)軟硬件的多個方面,從嵌入式的引導(dǎo)程序Bootloader到Linux內(nèi)核、根文件系統(tǒng)及應(yīng)用程序的開發(fā)都需要有全面的認(rèn)識,與傳統(tǒng)的嵌入式實驗室相比虛擬實驗室存在下述特點:

        ⑴ 成本低。虛擬實驗室其根本就是采用虛擬的設(shè)備來進(jìn)行相關(guān)的嵌入式實驗,整個實驗過程均在軟件上仿真運(yùn)行,當(dāng)實驗設(shè)備和實驗環(huán)境發(fā)生變化時,只需要對虛擬環(huán)境中的相關(guān)設(shè)備和環(huán)境進(jìn)行改變即可,可以從根本上解決實驗室建設(shè)經(jīng)費(fèi)短缺、實驗設(shè)備不斷損壞老化等問題。以嵌入式Linux軟件設(shè)計課程為例,由于Bootloader、Linux內(nèi)核及根文件的移植是一個十分復(fù)雜又容易出錯的過程,往往要多次對實驗箱開發(fā)板的flash進(jìn)行底層的燒寫,由于學(xué)生在實驗中的不當(dāng)操作極易導(dǎo)致開發(fā)板的損壞,改用虛擬實驗環(huán)境就從根本上避免了這種問題,學(xué)生只需簡單將移植后的軟件裝入到虛擬的flash中就可以檢查移植的結(jié)果。

        ⑵ 實驗時間靈活。采用虛擬實驗室后,不再需要進(jìn)行大班的嵌入式實踐教學(xué),可以讓學(xué)生充分地利用課外時間,分散、靈活地完成實踐教學(xué)。過去的嵌入式實驗由于設(shè)備緊缺,常常是多個學(xué)生共用一套實驗設(shè)備,有些基礎(chǔ)差的同學(xué)根本沒有機(jī)會理解實驗內(nèi)容,也無法完整地完成實驗過程,基本上是屬于走過場。通過虛擬嵌入式Linux環(huán)境,可以做到每個人獨立完成實驗要求,獨立考核,并促使學(xué)生在平時也可以動手進(jìn)行實踐,充分調(diào)動了學(xué)生自主學(xué)習(xí)的積極性。

        ⑶ 方便靈活。實驗環(huán)境不再固定單一,可以根據(jù)實驗要求進(jìn)行各種軟硬件設(shè)計,有利于創(chuàng)新創(chuàng)造人才的培養(yǎng)。傳統(tǒng)的嵌入式實驗都是在固定的開發(fā)箱上進(jìn)行, 幾乎不能進(jìn)行硬件電路上的創(chuàng)新改進(jìn),只能在已有的硬件平臺上進(jìn)行實驗,而Proteus平臺提供的ARM仿真開發(fā)環(huán)境提供了極大的改進(jìn)與擴(kuò)展的空間,我們可以對除CPU以外的硬件電路進(jìn)行設(shè)計修改,并根據(jù)修改后的硬件電路進(jìn)行bootloader、Linux內(nèi)核的相應(yīng)修改,最后完成應(yīng)用程序的設(shè)計,充分體現(xiàn)了嵌入式軟硬件協(xié)同設(shè)計的本質(zhì),對提高學(xué)生的學(xué)習(xí)水平,培養(yǎng)新工科提倡的人才提供了很好的實踐環(huán)境。

        2 虛擬實驗室的構(gòu)建

        2.1 軟件環(huán)境

        ⑴ Proteus

        Proteus軟件是英國Lab Center Electronics公司出版的EDA工具軟件,它不僅具有其他EDA工具軟件的仿真功能,還能仿真嵌入式CPU及外圍器件.其最具特色的地方在于:①互動的電路仿真;②仿真處理器及其外圍電路;③直接在基于原理圖的虛擬原型上編程,再配合顯示及輸出,能看到運(yùn)行后輸入輸出的效果。選用Proteus作為嵌入式Linux交叉開發(fā)環(huán)境的target端,在Proteus環(huán)境設(shè)計嵌入式系統(tǒng)的硬件原理圖,并將host端生成的嵌入式軟件加載運(yùn)行,觀察系統(tǒng)仿真運(yùn)行結(jié)果。

        ⑵ Ubuntu

        選用桌面Linux版本Ubuntu作為host端,在Ubuntu上安裝交叉編譯工具,如arm-linux-gcc/arm-elf-gcc、uboot源碼、ucLinux源碼等,為嵌入式系統(tǒng)開發(fā)建立好交叉開發(fā)環(huán)境。

        2.2 實驗內(nèi)容和實驗過程

        ⑴ 在Ubuntu Linux系統(tǒng)中安裝嵌入式開發(fā)環(huán)境:arm-linux-gcc/arm-elf-gcc、uclinux源碼、uboot源碼等。

        ⑵ 在Proteus上進(jìn)行硬件電路的設(shè)計。

        ⑶ 在Ubuntu Linux進(jìn)行嵌入式軟件開發(fā),編寫嵌入式驅(qū)動程序與應(yīng)用程序源碼。

        ⑷ 在Ubuntu Linux交叉編譯產(chǎn)生驅(qū)動程序的內(nèi)核模塊及應(yīng)用程序。

        ⑸ 在Proteus的仿真環(huán)境中加載并運(yùn)行驅(qū)動程序模塊及應(yīng)用軟件,觀察系統(tǒng)仿真運(yùn)行的結(jié)果。

        2.3 實例分析

        下面以Linux下進(jìn)行7段數(shù)碼管的顯示控制過程為例介紹驅(qū)動程序和應(yīng)用程序開發(fā)的過程。

        ⑴ 安裝交叉編譯環(huán)境(過程略)。

        ⑵ 完成硬件電路設(shè)計,設(shè)計中包括對Proteus中的ARM for VSM進(jìn)行輸入輸出接口P0-P31的設(shè)計以及7段數(shù)碼管的線路連接。最top層電路如圖1所示。

        ⑶ 編寫驅(qū)動程序c及應(yīng)用程序,其關(guān)鍵c語言代碼如下:

        //驅(qū)動程序中提供給應(yīng)用程序的接口函數(shù)

        static struct file_operations seg7_fops = {

        owner:THIS_MODULE,

        open:seg7_module_open,

        ioctl:seg7_module_ioctl,

        release:seg7_module_release,

        };

        //7段數(shù)碼管的驅(qū)動程序,接收應(yīng)用程序的輸入,控制7段數(shù)碼的顯示

        static int seg7_module_ioctl(struct inode *inode, struct

        file *file, unsigned int cmd, unsigned long arg)

        {

        switch (cmd) {

        //根據(jù)cmd顯示0~F的一個值

        case 0:printk (KERN_INFO "Display 0\n");

        P0=seg7_list[0];

        break;

        ......

        case 15:printk (KERN_INFO "Display F\n");

        P0=seg7_list[15];

        break;

        default: return -EINVAL; }

        return 0; }

        static int seg7_module_init(void) { //注冊設(shè)備

        int register_result=register_chrdev(seg7_major,

        "seg7", &seg7_fops);

        if (seg7_major==0) seg7_major=register_result;

        printk(KERN_INFO "seg7: init OK?。躰");

        P0=0x00;

        return 0; }

        static void seg7_module_cleanup(void) { //注銷設(shè)備

        if (unregister_chrdev(seg7_major, "seg7"))

        printk (KERN_ALERT "seg7 module unregister?。躰");

        else

        printk (KERN_ALERT "seg7 module unregister error?。躰");}

        module_init(seg7_module_init); //內(nèi)核模塊初始化函數(shù)

        module_exit(seg7_module_cleanup); //內(nèi)核模塊卸載函數(shù)

        //頭文件seg7.h

        #ifndef _SEG7_H_

        #define _SEG7_H_

        #define P0 *((volatile unsigned char *)0x80000080)

        //對應(yīng)的硬件接口地址

        #define P1 *((volatile unsigned char *)0x80000084)

        #define P2 *((volatile unsigned char *)0x80000088)

        #define P3 *((volatile unsigned char *)0x80000090)

        unsigned char seg7_list[16]={0x3f,0x06,0x5b,0x4f,0x66,

        0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //數(shù)碼管的共陰極編碼值

        #endif /* _SEG7_H_ */

        應(yīng)用程序測試代碼如下:

        //test-seg7.c

        #include

        #include "seg7.h"

        int main(void)

        { int fd;

        int length,i,j;

        fd=open("/dev/seg7", O_RDWR)

        //調(diào)用驅(qū)動程序提供open函數(shù)

        while(j<10) { //循環(huán)顯示10次

        for(i=0,i<16,i++) {

        ioctl(fd, i); //循環(huán)顯示0~F

        sleep(1); }

        j++ }

        close(fd);

        printf("Success?。躰");

        return 0; }

        ⑷ 編譯連接生成內(nèi)核模塊seg7-module及應(yīng)用程序test-seg7(過程略)。

        ⑸ bootloader啟動并加載uclinux內(nèi)核如圖2所示。

        ⑹ 在Proteus加載運(yùn)行,運(yùn)行結(jié)果如圖3所示。

        3 結(jié)論

        由此可見,基于Proteus進(jìn)行嵌入式Linux虛擬仿真實驗室的構(gòu)建是完全可行的。采用虛擬實驗室的方式,可以很好地解決傳統(tǒng)嵌入式實驗室設(shè)備老化折損等問題,降低了嵌入式系統(tǒng)開發(fā)的成本,同時也方便學(xué)生充分利用課余時間進(jìn)行嵌入式系統(tǒng)的軟硬件設(shè)計,不受實驗室場地以及實驗箱硬件設(shè)計的限制,能夠充分調(diào)動學(xué)生自我學(xué)習(xí)積極性。在我院實際的教學(xué)與實踐應(yīng)用中,取得了很好的教學(xué)效果,學(xué)生對嵌入式Linux軟件設(shè)計課程的滿意度評分達(dá)到了98.8%。不僅如此,使用虛擬仿真的方式,還可以在項目開發(fā)中進(jìn)行快速原形設(shè)計,在虛擬開發(fā)成功之后進(jìn)行實際制作,這樣可以大大節(jié)省開發(fā)成本、提高開發(fā)效率,具有極好的實用價值。

        參考文獻(xiàn)(References):

        [1] 曹穎.虛擬實驗室在儀器分析教學(xué)中的應(yīng)用探討[J].實驗科學(xué)與技術(shù),2015.13(2):36-37

        [2] 沈珊瑚等.以學(xué)生為中心的嵌入式系統(tǒng)原理與設(shè)計實踐課程教學(xué)探索[J].計算機(jī)教育,2019.7:159-162

        [3] 趙繼忠等.基于Proteus的工頻參數(shù)測量儀的設(shè)計[J].自動化與儀器儀表,2019.2:84-87

        [4] 江維等.基于PROTEUS和MDK的嵌入式虛擬實驗室構(gòu)建[J].武漢紡織大學(xué)學(xué)報,2018.31(5):22-25

        [5] Elena V.Morozova etc. The Laboratory Stand Simulation for Programming Microprocessor Devices[C].IEEE Conference of Russian Young Researchers in Electrical and Electronic Engineering,2019:125-128

        [6] Sohaib Aslam etc.Development of a Software Based PIC24F Series Microcontroller Educational Trainer[C]. International Conference on Engineering and Emerging Technologies (ICEET),2019.

        [7] Sandeep Sasidharan etc. Design and Simulation of Microcontroller based Power factor correction converter[C].Electronic Converter for Nuclear Research Application 2018 International CET Conference on Control, Communication, and Computing (IC4),2018:95-100

        猜你喜歡
        驅(qū)動程序應(yīng)用程序嵌入式
        刪除Win10中自帶的應(yīng)用程序
        電腦報(2019年12期)2019-09-10 05:08:20
        搭建基于Qt的嵌入式開發(fā)平臺
        嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
        Altera加入嵌入式視覺聯(lián)盟
        倍福 CX8091嵌入式控制器
        自動化博覽(2014年4期)2014-02-28 22:31:15
        關(guān)閉應(yīng)用程序更新提醒
        電腦迷(2012年15期)2012-04-29 17:09:47
        三星電子將開設(shè)應(yīng)用程序下載商店
        微軟軟件商店開始接受應(yīng)用程序
        驅(qū)動程序更新與推薦
        驅(qū)動程序更新與推薦
        日韩精品成人一区二区三区| 老少交欧美另类| 精品国产18禁久久久久久久| 中文字幕国内一区二区| 精品一区二区在线观看免费视频 | 六月丁香综合在线视频| 窝窝影院午夜看片| 99在线无码精品秘 人口| 熟女人妻一区二区三区| 又黄又爽又无遮挡免费的网站| 免费人成无码大片在线观看| 91青草久久久久久清纯| 国产诱惑人的视频在线观看| 中文字幕无线码一区二区| 水蜜桃亚洲一二三四在线| 神马不卡一区二区三级| 美女一区二区三区在线视频| 一本大道熟女人妻中文字幕在线| 影音先锋每日av色资源站| 日本不卡一区二区高清中文| 女同在线网站免费观看| 亚洲av无码乱码在线观看牲色| 无码h黄动漫在线播放网站| 91久国产在线观看| 日本一区二区三区视频免费在线| 成 人 免费 在线电影| 久久99欧美| 精品国产三级国产av| 色综合天天综合网国产成人网| 国产精品久久久久久无码| 久久久久久久久久免免费精品| 亚洲一区二区在线观看av| 国产精品成人3p一区二区三区| 国产尤物AV尤物在线看| 国产精品丝袜一区二区三区在线| 国产精品人成在线观看免费| 无码av免费一区二区三区试看| 男性一插就想射是因为啥| 综合激情五月三开心五月| 国产农村熟妇videos| 久久青草免费视频|