网站首页  词典首页

请输入您要查询的论文:

 

标题 构建嵌入式Linux软件设计虚拟实验室
范文

    冯刚 谭琦 董宇

    

    

    

    摘? 要: 为了降低嵌入式软件学习和开发中硬件资源的投入成本,提出以Proteus作为嵌入式target平台,Ubutun Linux作为host平台,构建嵌入式Linux软件设计虚拟实验室的步骤。以7段数码的显示为例演示了嵌入式Linux虚拟环境下进行嵌入式软件开发的过程,获得了较直观的实验结果。虚拟实验室的建设有效地降低了嵌入式系统的开发成本,弥补了传统实验室的不足。

    关键词: Proteus; 嵌入式Linux软件设计; 虚拟实验室; 嵌入式系统

    中图分类号:TP391.9? ? ? ? ? 文献标识码: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 引言

    随着计算机技术的日益发展,嵌入式系统几乎渗入到人类社会生活的各个方面。全国各大高等院校的电子、计算机、信息等专业均开设了嵌入式相关课程,并建立了相应的嵌入式实验室。这些实验室基本上采用成套的硬件设备来构建,不同的实验室只能进行某一类课程的实验,而且由于嵌入式硬件的多样性以及资金的限制,无法建立一个适应各种需求的嵌入式实验室。一些学校已购买了一定的嵌入式设备,但因为学生人数众多、设备的损坏/老化等原因,使得嵌入式实践过程成为一种验证性的实验过程[1-3]。

    虚拟实验室其基本思想是用软件方法虚拟各种实际的元器件、虚拟必要的电子检测设备如示波器等,即所有的实验只需要一台PC机和相应的软件就可以设计完成[5-7]。因此,虚拟实验室的出现较好地解决了目前嵌入式实践课程中出现的问题,为嵌入式软硬件教学提供了一个很好的平台,丰富了实践教学的手段,弥补了传统实验室的不足[4]。

    本文针对嵌入式Linux软件设计虚拟实验室的建设进行了研究,提出了利用Proteus构建嵌入式Linux软件设计的虚拟仿真平台。通过该虚拟实验室,可以充分利用Proteus提供的各种硬件设备,搭建一个仿真现实的实验系统,进而在这个系统上完成整个基于Linux的嵌入式软件开发过程。

    1 虚拟实验室的特点

    由于嵌入式Linux软件设计涉及到嵌入式系统软硬件的多个方面,从嵌入式的引导程序Bootloader到Linux内核、根文件系统及应用程序的开发都需要有全面的认识,与传统的嵌入式实验室相比虚拟实验室存在下述特点:

    ⑴ 成本低。虚拟实验室其根本就是采用虚拟的设备来进行相关的嵌入式实验,整个实验过程均在软件上仿真运行,当实验设备和实验环境发生变化时,只需要对虚拟环境中的相关设备和环境进行改变即可,可以从根本上解决实验室建设经费短缺、实验设备不断损坏老化等问题。以嵌入式Linux软件设计课程为例,由于Bootloader、Linux内核及根文件的移植是一个十分复杂又容易出错的过程,往往要多次对实验箱开发板的flash进行底层的烧写,由于学生在实验中的不当操作极易导致开发板的损坏,改用虚拟实验环境就从根本上避免了这种问题,学生只需简单将移植后的软件装入到虚拟的flash中就可以检查移植的结果。

    ⑵ 实验时间灵活。采用虚拟实验室后,不再需要进行大班的嵌入式实践教学,可以让学生充分地利用課外时间,分散、灵活地完成实践教学。过去的嵌入式实验由于设备紧缺,常常是多个学生共用一套实验设备,有些基础差的同学根本没有机会理解实验内容,也无法完整地完成实验过程,基本上是属于走过场。通过虚拟嵌入式Linux环境,可以做到每个人独立完成实验要求,独立考核,并促使学生在平时也可以动手进行实践,充分调动了学生自主学习的积极性。

    ⑶ 方便灵活。实验环境不再固定单一,可以根据实验要求进行各种软硬件设计,有利于创新创造人才的培养。传统的嵌入式实验都是在固定的开发箱上进行, 几乎不能进行硬件电路上的创新改进,只能在已有的硬件平台上进行实验,而Proteus平台提供的ARM仿真开发环境提供了极大的改进与扩展的空间,我们可以对除CPU以外的硬件电路进行设计修改,并根据修改后的硬件电路进行bootloader、Linux内核的相应修改,最后完成应用程序的设计,充分体现了嵌入式软硬件协同设计的本质,对提高学生的学习水平,培养新工科提倡的人才提供了很好的实践环境。

    2 虚拟实验室的构建

    2.1 软件环境

    ⑴ Proteus

    Proteus软件是英国Lab Center Electronics公司出版的EDA工具软件,它不仅具有其他EDA工具软件的仿真功能,还能仿真嵌入式CPU及外围器件.其最具特色的地方在于:①互动的电路仿真;②仿真处理器及其外围电路;③直接在基于原理图的虚拟原型上编程,再配合显示及输出,能看到运行后输入输出的效果。选用Proteus作为嵌入式Linux交叉开发环境的target端,在Proteus环境设计嵌入式系统的硬件原理图,并将host端生成的嵌入式软件加载运行,观察系统仿真运行结果。

    ⑵ Ubuntu

    选用桌面Linux版本Ubuntu作为host端,在Ubuntu上安装交叉编译工具,如arm-linux-gcc/arm-elf-gcc、uboot源码、ucLinux源码等,为嵌入式系统开发建立好交叉开发环境。

    2.2 实验内容和实验过程

    ⑴ 在Ubuntu Linux系统中安装嵌入式开发环境:arm-linux-gcc/arm-elf-gcc、uclinux源码、uboot源码等。

    ⑵ 在Proteus上进行硬件电路的设计。

    ⑶ 在Ubuntu Linux进行嵌入式软件开发,编写嵌入式驱动程序与应用程序源码。

    ⑷ 在Ubuntu Linux交叉编译产生驱动程序的内核模块及应用程序。

    ⑸ 在Proteus的仿真环境中加载并运行驱动程序模块及应用软件,观察系统仿真运行的结果。

    2.3 实例分析

    下面以Linux下进行7段数码管的显示控制过程为例介绍驱动程序和应用程序开发的过程。

    ⑴ 安装交叉编译环境(过程略)。

    ⑵ 完成硬件电路设计,设计中包括对Proteus中的ARM for VSM进行输入输出接口P0-P31的设计以及7段数码管的线路连接。最top层电路如图1所示。

    ⑶ 编写驱动程序c及应用程序,其关键c语言代码如下:

    //驱动程序中提供给应用程序的接口函数

    static struct file_operations seg7_fops = {

    owner:THIS_MODULE,

    open:seg7_module_open,

    ioctl:seg7_module_ioctl,

    release:seg7_module_release,

    };

    //7段数码管的驱动程序,接收应用程序的输入,控制7段数码的显示

    static int seg7_module_ioctl(struct inode *inode, struct

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

    {

    switch (cmd) {

    //根据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) { //注册设备

    int register_result=register_chrdev(seg7_major,

    "seg7", &seg7_fops);

    if (seg7_major==0) seg7_major=register_result;

    printk(KERN_INFO "seg7: init OK!\n");

    P0=0x00;

    return 0; }

    static void seg7_module_cleanup(void) { //注销设备

    if (unregister_chrdev(seg7_major, "seg7"))

    printk (KERN_ALERT "seg7 module unregister!\n");

    else

    printk (KERN_ALERT "seg7 module unregister error!\n");}

    module_init(seg7_module_init); //內核模块初始化函数

    module_exit(seg7_module_cleanup); //内核模块卸载函数

    //头文件seg7.h

    #ifndef _SEG7_H_

    #define _SEG7_H_

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

    //对应的硬件接口地址

    #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}; //数码管的共阴极编码值

    #endif /* _SEG7_H_ */

    应用程序测试代码如下:

    //test-seg7.c

    #include

    #include "seg7.h"

    int main(void)

    { int fd;

    int length,i,j;

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

    //调用驱动程序提供open函数

    while(j<10) { //循环显示10次

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

    ioctl(fd, i); //循环显示0~F

    sleep(1); }

    j++ }

    close(fd);

    printf("Success!\n");

    return 0; }

    ⑷ 编译连接生成内核模块seg7-module及应用程序test-seg7(过程略)。

    ⑸ bootloader启动并加载uclinux内核如图2所示。

    ⑹ 在Proteus加载运行,运行结果如图3所示。

    3 结论

    由此可见,基于Proteus进行嵌入式Linux虚拟仿真实验室的构建是完全可行的。采用虚拟实验室的方式,可以很好地解决传统嵌入式实验室设备老化折损等问题,降低了嵌入式系统开发的成本,同时也方便学生充分利用课余时间进行嵌入式系统的软硬件设计,不受实验室场地以及实验箱硬件设计的限制,能够充分调动学生自我学习积极性。在我院实际的教学与实践应用中,取得了很好的教學效果,学生对嵌入式Linux软件设计课程的满意度评分达到了98.8%。不仅如此,使用虚拟仿真的方式,还可以在项目开发中进行快速原形设计,在虚拟开发成功之后进行实际制作,这样可以大大节省开发成本、提高开发效率,具有极好的实用价值。

    参考文献(References):

    [1] 曹颖.虚拟实验室在仪器分析教学中的应用探讨[J].实验科学与技术,2015.13(2):36-37

    [2] 沈珊瑚等.以学生为中心的嵌入式系统原理与设计实践课程教学探索[J].计算机教育,2019.7:159-162

    [3] 赵继忠等.基于Proteus的工频参数测量仪的设计[J].自动化与仪器仪表,2019.2:84-87

    [4] 江维等.基于PROTEUS和MDK的嵌入式虚拟实验室构建[J].武汉纺织大学学报,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

随便看

 

科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。

 

Copyright © 2004-2023 puapp.net All Rights Reserved
更新时间:2025/3/17 7:24:00