基于μClinux的SoPC应用系统设计详解

发布者:cxd88988最新更新时间:2012-04-26 来源: 21ic 关键字:μClinux  SoPC  应用系统 手机看文章 扫描二维码
随时随地手机看文章
嵌入式系统一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户应用程序四部分组成,其发展主要体现在芯片技术的进步上,以及在芯片技术限制下的算法与软件的进步上。随着芯片制造技术的发展,嵌入式系统的结构也随之发生了重大变革,从基于微处理器的嵌入式系统到基于微控制器的嵌入式系统,继而将可编程逻辑PLD(Programmable Logic Device)技术引入到嵌入式系统设计中,进而又发展到SoC(System on Chip),最终将PLD与嵌入式处理器结合而成为SoPC(System on Programmable Chip),使得SoPC成为嵌入式系统设计的一个发展趋势。
  
本文采用SoPC内嵌32位的软核处理器Nios,实现了一个UART串行口和以太网接口的转换器(以下简称转换器),并基于Microtronix公司针对Nios处理器移植的μClinux开发了应用程序。
  
1 基于SoPC的嵌入式硬件平台构建
  
不同于基于处理器或控制器及SoC的嵌入式系统,基于SoPC的嵌入式系统具有可配置的特点,不会包括任何专用外设,而是可根据需要灵活地在一片FPGA中构造外设接 口。
  
基于SoPC的嵌入式系统主要由1片核心芯片SoPC和片外器件,以及一些相关的接口设备组成。本文所要实现的转换器采用Altera公司的 Cyclone芯片及外围电路组成,其中外围电路包括2片512 KB的SRAM、l片8MB的Flash、UART电子转换器和1片以太网控制器 LAN91C111。
  
SoPC芯片内嵌软核处理器Nios。在SoPC芯片中,除了CPU外,可配片上ROM、内部定时器、 UART串行口、SRAM、Flash接口等系统部件。这些部件均以可编程逻辑部件的形式实现,芯片内部部件结构图如图3所示。CPU和所有部件通过 Avalon总线连接在一起。
  
SoPC芯片内系统模块和Avalon总线模块均由SoPC Builder工具自动生成,利用Qualtus II集成开发环境可实现芯片内的逻辑设计及其引脚定义。经编译生成后缀为.sof的硬件映像文件,通过ByteBlasterII线缆下载到目标板的 Cyclone芯片中,或将.sof文件转换成.flash文件,下载到目标板的Flash中。这样就完成了转换器的硬件设计。
  
2 基于μClinux的SoPC应用程序开发
  
应用程序的开发可在硬件平台上直接进行,但需了解所有硬件部件的细节,并编写相应的驱动子程序,其软件设计难度及工作量大,且可移植性差。基于嵌入式操作系统的应用程序,其所有的硬件细节均对用户屏蔽。对硬件进行直接控制的底层驱动程序均封装在操作系统内,通过设备驱动程序接口来完成,用户只需在高层通过操作系统所提供的系统调用进行编程。μClinux是针对控制领域的嵌入式Linux操作系统,适合如Nios处理器等不具备内存管理单元(MMU) 的微处理器/微控制器。基于操作系统进行开发,需将操作系统加载到硬件平台中,μClinux可以以部件的形式集成到SoPC系统中。
  
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的根文件系统的加载。 [page]

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 转换器应用程序的实现

转换器应用系统主要完成网络接口和串行接口间的数据传输。μClinux操作系统中提供了网络驱动程序和串口驱动程序,并提供了多线程的支持。

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

在此应用系统中有4个任务,分别创建4个线程:网络接收线程、网络发送线程、串口接收线程和串口发送线程。这4个线程可并发执行.因网络速度与串口速度存在着差异,需设置相应的缓冲区来对收发数据进行缓冲。在此应用系统中设置两个环形缓冲区,如图4所示,其中nctrv_uartsd_buf用于接收网络数据,供存储从网络口接收的数据,然后串口从此缓冲区中取出数据发送。另一缓冲区uartrv_netsd_bur用于接收串口数据,然后网络口取出此缓冲区中数据发送出去。

线程间需实现相互通信和同步,共用缓冲区既要互斥执行又要同步执行,其操作遵循生产者和消费者模型。线程间的互斥操作采用互斥锁(mu-tex)来实现。线程间的同步通过设置两个指针来实现,一个是读指针,另一个是写指针,写指针指向队头,初始化为0,读指针指向队尾,初始化为BUFSIZE-1。当写数据时,比较读写指针是否相等,相同则写线程阻塞;不相等,则写入数据,然后将写指针加1。当读数据时,读指针加1,然后比较读写指针是否相等,相等则读线程阻塞;不相等,则读出数据。

网络发送线程和串口接收线程间共用环形缓冲区uartrv_netsd_buf。串口发送线程和网络接收线程共用环形缓冲区netrv_uartsd_buf。两线程间的关系和处理类似网络发送线程和串口接收线程。

3 系统测试
  
完成转换器的软硬件设计后,连接系统进行转换器数据的传输测试。在PC机A上运行串口收发程序,而在PC机B上运行以太网收发程序,经测试后数据传输无误。

关键字:μClinux  SoPC  应用系统 引用地址:基于μClinux的SoPC应用系统设计详解

上一篇:嵌入式系统中串口通信帧的同步方法
下一篇:在基于ADSP BF533的嵌入式Linux系统上的移植

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

基于I2C总线的MSP430单片机应用系统设计
串行护展总线技术是新一代单片机技术发展的一个显著特点。其中PHILIPS公司推出的I2C总线最为著名,它包括一个两端接口,通过一个带有缓冲区的接口,数据可以被I2C发送或接收,控制和状态信息则通过一套内存映射寄存器来传送。与并行扩展总线相比,串行扩展总线有突出的优点:电路结构简单,程序编写方便,易于实现用户系统软硬件的模块化、标准化等。本文是把I2C总线应用到MSP430单片机温度控制系统中的一个典型实例。 I2C总线是用2根双向I/O信号线(串行时钟线SCL和串行数据线SDA)把多种器件连接起来,并实现器件之间的串行通讯。 MSP430是TI公司一种具有超低功耗的功能强大的16位单片机,MSP430F169是该系列中的一
[单片机]
基于I2C总线的MSP430单片机<font color='red'>应用系统</font>设计
基于Spartan-3 FPGA的视频采集系统设计
   0 引言   视频采集的主流实现方案有两种:一是基于ASIC,该方案一般采用意法、AMD等公司的专用视频处理芯片;二是基于DSP,主要采用TI、ADI等公司的DSP信号处理器。它们作为辅处理器,可在主CPU控制下进行视频信号的采集压缩。随着FPGA的发展,通过SOPC技术实现视频采集已成为一种易于开发、设计灵活的方案。而这主要得益于IP复用技术的发展。在FPGA上构建复杂嵌入式系统可利用既有的功能模块及其驱动程序。该方案具有更大的集成度和灵活性,因而必将成为电子设计发展的一大趋势。   本文介绍了采用Xilinx公司的Spartan-3 FPGA实现通用视频采集系统的设计方案。该系统外接模拟PAL/NTAL制式的摄像头
[嵌入式]
基于Spartan-3 FPGA的视频采集系统设计
基于SOPC的车辆息线控制器设计方案
引 言   基于分布式控制的MVB(多功能车辆总线)是IEC61375-l(1999)TCN(列车通信网络国际标准)的推荐方案,它与WTB(绞线式列车总线)构成的列车通信总线具有实时性强、可靠性高的特点。MVB作为快速的过程控制优化的总线,能提供最佳的响应速度.是主要用于有互操作性和互换性要求的互联设备之间的串行数据通信总线,适合用作车辆总线,对于固定编组的列车,MVB也可以用作列车总线,如图1所示。   随着系统集成技术的不断成熟,出现了一种新兴的产业,即IP(Intellcctual Property,知识产权)产品及模块化设计。在集成电路设计中,IP特指可以通过知识产权贸易,在各设计公司间流通的实现特定功能的
[嵌入式]
基于<font color='red'>SOPC</font>的车辆息线控制器设计方案
SOPC中NiosII的LCD显示驱动IP设计
引言 NioslI嵌入式处理器是A1tera公司提出的SOPC解决方案,是一种用户可随意配置和构建的32位嵌入式处理器,结合丰富的外设可快速、灵活地构建功能强大的SOPC系统。Altera公司提供了一些通用的IP核,使得用户可轻松集成属于自己的专用功能;但对于一些特定的外设,没有现成可用的IP核,如液晶模块CBGl28064等。 用户可通过自定义逻辑的方法在SOPC设计中添加自定义IP核。在实际应用中,LCD液晶显示器凭借功耗低、体积小、轻薄及控制驱动简单等特点,在智能仪器、仪表和低功耗电子产品中得到了广泛应用。本文以深圳秋田视佳实业有限公司的液晶显示模块CBGl28064为例,在基于NioslI的SOPC系统中设计了LC
[嵌入式]
基于SOPC的触控屏控制器IP核设计与实现
可编程片上系统(SOPC)是一种特殊的嵌入式系统,它设计方式灵活,具备软硬件在系统可编程功能。SOPC在设计上以集成电路IP核为基础,而自行开发的SOPC IP核,根据实际硬件资源和功能任务需求来定制显示控制功能,可以增强系统可靠性和设计灵活性,降低了成本。目前针对LCD显示屏设计的控制器IP核文章较多,但对于TFT-LCD触控屏设计的控制器IP核文章较少,而且这类文章中很少见对控制器各个模块进行仿真验证内容。 文中提出一种针对TFT-LCD触控屏控制器IP核的设计方法。该控制器具有Avalon总线接口,与其他标准IP核一起构成以NiosⅡ为核心的片上系统。针对本设计中触控屏帧缓存读操作的特点,选择以Avalon主端口接口的
[单片机]
基于<font color='red'>SOPC</font>的触控屏控制器IP核设计与实现
智能命令行设计及其在SOPC系统中的应用
命令行是计算机系统中最重要的组件之一。它可以帮助开发人员更方便的控制系统。在调试过程中,可以让开发人员随时变更测试方法。 FPGA的成本越来越低,FPGA上的嵌入式系统(SOPC)也应用得越来越广泛。但是相对其他成熟的计算机体系,SOPC系统现在还没有命令行。为了更好的推广SOPC应用,笔者开发了一个智能的命令行模块,可以调用系统中的任意函数,降低了开发人员的使用难度。在最小配置时,它只有大约1000行代码,占用14KB存储容量,可以放在完全由FPGA片内资源构成的计算机系统中。它的结构也具有很好的扩展性,开发人员可以结合自己的需求,轻松添加命令,丰富它的特性。 命令行框架设计 1 总体设计 好的命令行要具有扩展性,开发人
[嵌入式]
无线传感器网络应用系统介绍
   无线传感器网络是由部署在监测区域内部或附近的大量廉价的、具有通信、感测及计算能力的微型传感器节点通过自组织构成的“智能”测控网络 。无线传感器网络在军事、农业、环境监测、医疗卫生、工业、智能交通、建筑物监测、空间探索等领域有着广阔的应用前景和巨大的应用价值,被认为是未来改变世界的十大技术之一、全球未来四大高技术产业之一。   目前,国内外众多研究机构都已开展了无线传感器网络技术及其应用的相关研究。本文主要针对无线传感器网络技术在不同领域的应用情况及未来发展趋势和制约因素进行介绍。    无线传感器网络概述   传感器节点可以完成环境监测、目标发现、位置识别或控制其他设备的功能;此外还具有路由、转发、融合、
[电源管理]
无线传感器网络<font color='red'>应用系统</font>介绍
嵌入式软PLC虚拟机在电气测试中应用
  在一些电子部件产品测试时,早先很多生产厂家都使用继电接触控制系统。该系统由分立元件组成,由于线路简单,元件控制精度不高,加上抗干扰能力级差,所以运行不够稳定,误动作频繁,使产品的测试和分析不准确。   随着现代工艺的高精度要求,为了适应市场需求,采用可编程控制器对原继电电气控制系统进行改造,但由于各PLC厂家硬件模块和软件结构绝大多数都是专用的、互不兼容的,系统各模块间的交互方式、通信机制也各不相同,这使得控制系统相对独立、彼此封闭。随着技术的进步和市场竞争的加剧,这种专用体系结构的控制系统越来越暴露了其固有的缺陷。由于基于PC平台的软件PLC无需专门的编程器,可充分利用PC机的软硬件资源,直接采用梯形图或语言编程,具有良好
[测试测量]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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