基于nios和μClinux的嵌入式系统设计

发布者:chunli最新更新时间:2012-04-19 来源: 21ic 关键字:nios  μClinux  嵌入式系统 手机看文章 扫描二维码
随时随地手机看文章
嵌入式系统一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户应用程序四部分组成,其发展主要体现在芯片技术的进步上,以及在芯片技术限制下的算法与软件的进步上。随着芯片制造技术的发展,嵌入式系统的结构也随之发生了重大变革,从基于微处理器的嵌入式系统到基于微控制器的嵌入式系统,继而将可编程逻辑 pld(programmable logic device)技术引入到嵌入式系统设计中,进而又发展到soc(system on chip),最终将pld与嵌入式处理器结合而成为sopc(system on programmable chip),使得sopc成为嵌入式系统设计的一个发展趋势。
   本文采用sopc内嵌32位的软核处理器nios,实现了一个uart串行口和以太网接口的转换器(以下简称转换器),并基于microtronix公司针对nios处理器移植的μclinux开发了应用程序.其系统结构如图l所示。

1 基于sopc的嵌入式硬件平台构建
    不同于基于处理器或控制器及soc的嵌入式系统,基于sopc的嵌入式系统具有可配置的特点,不会包括任何专用外设,而是可根据需要灵活地在一片fpga中构造外设接口。
    基于sopc的嵌入式系统主要由1片核心芯片sopc和片外器件,以及一些相关的接口设备组成。本文所要实现的转换器采用altera公司的 cyclone芯片及外围电路组成,其中外围电路包括2片512 kb的sram、l片8mb的flash、uart电子转换器和1片以太网控制器lan91c111。系统电路框图如图2所示。

    sopc芯片内嵌软核处理器nios。在sopc芯片中,除了cpu外,可配片上rom、内部定时器、uart串行口、sram、flash接口等系统部件。这些部件均以可编程逻辑部件的形式实现,芯片内部部件结构图如图3所示。cpu和所有部件通过avalon总线连接在一起。

   
    sopc芯片内系统模块和avalon总线模块均由sopcbuilder工具自动生成,利用qualtus ii集成开发环境可实现芯片内的逻辑设计及其引脚定义。经编译生成后缀为.sof的硬件映像文件,通过byteblasterii线缆下载到目标板的 cyclone芯片中,或将.sof文件转换成.flash文件,下载到目标板的flash中。这样就完成了转换器的硬件设计。


2 基于μclinux的sopc应用程序开发
    应用程序的开发可在硬件平台上直接进行,但需了解所有硬件部件的细节,并编写相应的驱动子程序,其软件设计难度及工作量大,且可移植性差。基于嵌入式操作系统的应用程序,其所有的硬件细节均对用户屏蔽。对硬件进行直接控制的底层驱动程序均封装在操作系统内,通过设备驱动程序接口来完成,用户只需在高层通过操作系统所提供的系统调用进行编程。μclinux是针对控制领域的嵌入式linux操作系统,适合如nios处理器等不具备内存管理单元(mmu)的微处理器/微控制器。基于操作系统进行开发,需将操作系统加载到硬件平台中,μclinux可以以部件的形式集成到sopc系统中。[page]
2.1 加载μclinux系统的步骤
    将μclinux加载到sopc目标板上时需提供一个交叉编译环境,硬件要求具有一个串口的pc工作站、基于nios处理器的sopc目标板和 byteblastermv线缆等。软件需求windowsntv4.0、windows2000或windowsxp、altera nios开发包ndk 3.0中所提供的nios gnupro工具、ahera nios开发包所提供的cygwin安装,以及quartus ii可编程逻辑开发工具v2.2等。
2.1.1 创建和装载内核映像  
    创建和装载μclinux映像文件在linux developerbash环境下进行,首先需按下列步骤配置和构建内核。
    [linux developer]…μclinux/:cd linux
    [linux developer]…linux/:make xconfig
    [linux developer]…linux/:make clean
    [linux developer]…1inux/:make dep
    [linux developer]…linux/:make
    [linux developer]…μclinux/:make linux.flash
    生成的linux.flash文件即为μclinux内核映像。当sopc目标板加电,片内rom中的germs监控程序运行后,在[linux developer]…μclinux/:下键入nios-runlinux.flash,即下载linux.flash文件到目标板上,完成内核映像的加载。
2.1.2创建和装载根文件系统
    除了装载内核外,还需装载根文件系统。μclinux采用romfs文件系统,这种文件系统相对于一般的ext2文件系统要求更少空间。
    在主机上linux的target目录表示在μclinux下的根(root)目录。当前的脚本和工具可将target目录转换成映像文件(romdisk.flash),按如下步骤创建:
    [linux developer]…μclinux/:make clean_target
    [linux developer]…μclinux/:make romfs
然后键入以下命令:
    [linux developer]…μclinux/:nios-run romdisk.flash
    即将romdisk.flash文件下载到目标板上,完成μclinux的根文件系统的加载。
2.1.3 加载应用程序
    用户应用程序可通过target目录加载到根文件系统中,可根据需要重建romdisk映像。应用程序在userland目录下,编译生成运行文件后拷贝到target目录树中,并根据target目录的内容创建romdisk.flash文件。新建一个应用程序,首先打开一个 linuxdeveloperbash窗,在userland目录中创建一个目录app,应用程序源文件存放在此目录中,然后在 userland/app/中建立一个makefile文件。
    makefile内容如下所示,其中appfile为应用程序名。
    stackslze=8192
    include../../rules.mak
    all:appfile.relocbflt
    sources=appfile.c
    install:
    $(romfsinst)appfile.reloebfh
    $(romfsdir)/bin/appfile$(execsuffix)
    clean:
    rm-f *.[iods]core appfile appfile.*elf appfile.*bflt
    运行make对应用程序进行编译并修改userland/.eonfig和/userland/makefile文件。在userland/. config文件中,增加一行config_my_app=y,在userland/makefile文件中,增加dir_$ (config_my_app)+=app,进入userland子目录,运行make,即可将应用程序安装到userland/bin中,并根据 userland/.config文件中相应变量的指示将应用程序二进制拷贝到target目录中。
    最后,键入以下命令重新构建romdisk映像文件(romdisk.flash),并下载到目标板上。

    [linux developer]…uclinux/:make clean_target

    [linux developer]…uclinux/:make romfs

    [linux developer]…uclinux/:nios-run romdisk.flash
2.1.4 运行μclinux

    完成μclinux内核及文件系统的装载后,即可运行μclinux。键入g800000(800000为启动代码地址,在sopc builder中设置),μclinux自动完成初始化过程,用户输入登录用户名nios,密码μclinux,出现μclinux的提示符#,表示已进入μclinux运行环境。
2.2 转换器应用程序的实现
    转换器应用系统主要完成网络接口和串行接口间的数据传输,所传输的数据流如图4所示。μclinux操作系统中提供了网络驱动程序和串口驱动程序,并提供了多线程的支持。

    转换器应用系统中的串口收发数据和网络口收发数据是异步进行的,可分别作为一个任务来对待,任务间是并发的,因此可采用多线程程序设计技术来实现多任务间的并发执行,系统主程序流程图如图5所示。[page]

    在此应用系统中有4个任务,分别创建4个线程:网络接收线程、网络发送线程、串口接收线程和串口发送线程。这4个线程可并发执行.因网络速度与串口速度存在着差异,需设置相应的缓冲区来对收发数据进行缓冲。在此应用系统中设置两个环形缓冲区,如图4所示,其中nctrv_uartsd_buf用于接收网络数据,供存储从网络口接收的数据,然后串口从此缓冲区中取出数据发送。另一缓冲区uartrv_netsd_bur用于接收串口数据,然后网络口取出此缓冲区中数据发送出去。
    线程间需实现相互通信和同步,共用缓冲区既要互斥执行又要同步执行,其操作遵循生产者和消费者模型。线程间的互斥操作采用互斥锁(mu-tex)来实现。线程间的同步通过设置两个指针来实现,一个是读指针,另一个是写指针,写指针指向队头,初
始化为0,读指针指向队尾,初始化为bufsize-1。当写数据时,比较读写指针是否相等,相同则写线程阻塞;不相等,则写入数据,然后将写指针加1。当读数据时,读指针加1,然后比较读写指针是否相等,相等则读线程阻塞;不相等,则读出数据。

    网络发送线程(流程图如图6所示)和串口接收线程(流程图如图7所示)间共用环形缓冲区uartrv_netsd_buf。串口发送线程和网络接收线程共用环形缓冲区netrv_uartsd_buf。两线程间的关系和处理类似网络发送线程和串口接收线程。

   


3 系统测试
    完成转换器的软硬件设计后,按如图8所示,连接系统进行转换器数据的传输测试。在pc机a上运行串口收发程序,而在pc机b上运行以太网收发程序,经测试后数据传输无误。

关键字:nios  μClinux  嵌入式系统 引用地址:基于nios和μClinux的嵌入式系统设计

上一篇:基于嵌入式Linux的TFT LCD IP及驱动的设计
下一篇:基于SmartModule的雷达嵌人式计算机设计

推荐阅读最新更新时间:2024-03-16 12:58

基于ARM和Clinux的家庭网关系统
本文以ARM核的32位嵌入式微处理器作为硬件平台,结合无线通信技术,通过移植嵌入式操作系统mClinux,并在其上开发相应的驱动程序、应用程序和嵌入式Web服务器,实现了一个方便、实用的家庭网关。 系统的硬件设计 系统结构及工作原理 家庭网关的系统结构如图1所示,它以三星公司的32位RISC处理器S3C44B0X为核心,通过外扩存储器(Flash / SDRAM)、蓝牙模块、液晶显示屏、小键盘、以太网接口模块、电话语音控制模块和红外收发模块等来构建硬件平台,并可实现多种控制方式。 图1 家庭网关系统结构图 1) 在本地用键盘及显示器进行控制:系统设有16按键和一块128×32点阵的液晶显示器,便于用户在本地
[嵌入式]
以ARM和DSP嵌入式系统为核心的实时仿真平台的开发
简介:针对船舶推进系统研制的新颖ARM+DSP嵌入式仿真平台扬长了ARM与DSP两种嵌入式处理器的特点,集丰富的控制接口和高速运算处理能力于一体。 引言 一个大型的船舶轮机模拟器蕴含着30多个全物理过程的数学模型,涉及千余个实时参变量,通常采用功能分散的DCS网络来实现。即便如此,个别仿真工作站由于模型复杂、任务繁重,难以满足实时仿真的要求。例如,动力推进系统的仿真是一个半实物在环的仿真系统,其中既有虚拟的动力装置即仿真计算机上运行的数学模型,又有真实的控制盘台、物理显示设备,是一种集实时控制和高速运算功能于一体的典型系统。 早期开发成功的SMSC2000型轮机模拟器采用工控机作为仿真计算机,所有数据的处理和输入输出的控制
[单片机]
以ARM和DSP<font color='red'>嵌入式系统</font>为核心的实时仿真平台的开发
基于μClinux的SoPC应用系统设计
嵌入式系统一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户应用程序四部分组成,其发展主要体现在芯片技术的进步上,以及在芯片技术限制下的算法与软件的进步上。随着芯片制造技术的发展,嵌入式系统的结构也随之发生了重大变革,从基于微处理器的嵌入式系统到基于微控制器的嵌入式系统,继而将可编程逻辑PLD(Programmable Logic Device)技术引入到嵌入式系统设计中,进而又发展到SoC(System on Chip),最终将PLD与嵌入式处理器结合而成为SoPC(System on Programmable Chip),使得SoPC成为嵌入式系统设计的一个发展趋势。 本文采用SoPC内嵌32位的软核处理器Nios,
[嵌入式]
基于XScale处理器的天线控制系统的设计
   0 引言   随着信息社会的到来,人类的生产方式、生活方式以及工作方式也随着现代技术的不断发展而发生变化。无论在民用还是军用方面,都需要一种可以在移动中实时、大容量、不间断地传递语音、数据、动态图像等多媒体信息的卫星天线跟踪系统的出现。因此,机动性能强、抗干扰能力强、保密性强的卫星通信系统理所当然地成为了当前移动通信研究领域的热点与重点。   本文所介绍的基于XScale微处理器的“动中通”移动卫星天线控制系统,能够在各种条件下保证天线高精度地对准目标卫星,准确而快速实现平台天线和卫星之间的实时通信。由于采用了嵌入式控制系统进行开发,该卫星移动天线控制系统体积小,性价比优良,实时性好。    1 系统总体设计
[嵌入式]
Matlab/RTW实时仿真与嵌入式系统开发
  引 言   在日益激烈的竞争中,系统的开发周期显得尤为重要,但开发时间与系统安全性、可靠性又有一定冲突,如果仍然使用传统的编写代码的模式,显然有些不妥。本文介绍一种基于Matlab/RTW实现实时仿真与嵌入式系统开发的方法。方法所涉及的开发环境如下: ◆Microsoft Windows XP SP3: ◆Matlab Version 7.5.0.342(R2007b); ◆Keil uVersion2V 2.30; ◆Proteus 7.1SP2。   先借助Matlab/RTW建立模型并生成RTW(Real-Time Workshop)代码(C语言),再使用Keil编译、调试Matlab生成的C语言代码,并且生
[嵌入式]
利用商业化平台进行嵌入式系统的快速开发
      嵌入式系统的应用已经相当的广泛,曾有专家预言——嵌入式系统的明天就相当于PC的今天,如今从某种程度上讲预言已经实现,嵌入式系统被广泛应用于工业设备、汽车航空、医疗电子、消费电子等领域,与此同时市场竞争也愈加激烈,如何快速地将符合需求的产品投入市场成为在竞争中保持一席之地的关键。然而,随着系统构架的日益复杂化,例如,多核多任务的环境,MPU、DSP和FPGA混合编程,以及处理器和开发工具的多样化等,都给嵌入式系统开发人员带来了很大的挑战。第三方独立市场预测机构Embedded Market Forecasters(EMF)在对900多名嵌入式系统开发人员进行调研后指出,超过50%的嵌入式设计比预期时间晚上市,而平均延迟时
[嵌入式]
威盛推出Starter开发工具,扩张嵌入式势力范围
威盛(VIA)公司日前正大力推广面向汽车、工控、网络、医疗、消费、军事、人工智能、游戏机等领域的嵌入式系统应用。威盛制定了Mini-ITX,Nano-ITX等标准,在CPU的研发方向上以高效、省电、安静为重点,提出“无风扇工作”的概念。目前,公司提出了嵌入式平台市场战略规划,将加强车载PC、POS、IP-STB/广告机、瘦客户机等专有产品平台,利用紧凑的主板、省电的系统、无风扇的设计、可灵活变通的软件服务等优势开拓嵌入式领域。 公司的产品既包括嵌入式主板,又包括元器件产品系列。主板以通用型EPIA为主,包括Mini-ITX,Nano-ITX以及各种附件,还包括用户定制主板以及特殊宽温应用主板,据介绍,公司大约20%的销售额来自主
[嵌入式]
ARM嵌入式系统中触摸屏的中断控制方法
  随着嵌入式微处理器性能的提高,集成的外围接口设备越来越多,而外围设备与处理器之间多采用中断方式进行通信,即使在没有操作系统的情况下,也常需要对多个外围设备的中断处理例程进行动态加载,从而实现对多个外围设备的集中动态管理。同时,中断功能可以解决CPU内部运行速度远远快于外部总线速度而产生的等待延时问题。因此,嵌入式微处理器的应用设计中,中断处理通常是系统的核心任务之一。    1 触摸屏   (1)触摸屏简介   随着多媒体信息查询的与日俱增,人们越来越关注触摸屏。触摸屏具有坚固耐用、反应速度快、节省空间、易于交流等许多优点,作为一种最新的电脑输入设备,它是目前最简单、方便、自然的人机交互方式。它赋予多媒体崭新的面貌,是极
[测试测量]
ARM<font color='red'>嵌入式系统</font>中触摸屏的中断控制方法
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved