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

发布者:JoyfulExplorer最新更新时间:2007-09-14 来源: 中国IT实验室关键字:接口  移植  平台  片外 手机看文章 扫描二维码
随时随地手机看文章
嵌入式系统一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户应用程序四部分组成,其发展主要体现在芯片技术的进步上,以及在芯片技术限制下的算法与软件的进步上。随着芯片制造技术的发展,嵌入式系统的结构也随之发生了重大变革,从基于微处理器的嵌入式系统到基于微控制器的嵌入式系统,继而将可编程逻辑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的根文件系统的加载。

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应用系统设计详解

上一篇:U-Boot在基于ADSP BF533的嵌入式Linux系统上的移植
下一篇:嵌入式Linux操作系统的驱动程序开发要点

推荐阅读最新更新时间:2024-05-02 20:38

平台模式设计的虚拟I²C总线软件包VIIC
摘要 VIIC是主方式下的虚拟I2C总线软件包,用于80C51系列单片机的单主系统中。只需两根普通I/O口线就可随时扩展I2C总线外围器件。将VIIC1.0装入程序存储器中,对其中的符号单元赋值后,使用三条通用操作命令就可实现任何I2C总线外围器件的应用程序设计。本文以VIIC为例,介绍应用软件形式的广义平台设计方法,给出VIIC1.0程序文本。按照这一思路,也可移植到其他系列的嵌入式系统中。 关键词 平台模式虚拟I2C总线VIIC应用程序设计 一、 I2C总线及其虚拟应用 1. I2C总线应用呼唤平台模式   目前,单片机应用系统的外围扩展已从并行方式为主过渡到以串行方式为主的时代。许多新型外围器件都带有串行扩展接口。通
[嵌入式]
按<font color='red'>平台</font>模式设计的虚拟I²C总线软件包VIIC
视觉防卫智能网络平台撑起安全保护伞
    什么是视觉防卫智能网络     视觉防卫智能网络综合管理平台是中德宏泰基于视频分析、物联网、云计算技术以及网络“4i”原则(inteligent智能化、industryOriented行业化、internet网络化、intergration统一集成)完全自主研发的智能统一安全信息管理综合平台。     四重保护带来全方位保障     第一重保护 第一重     用户智能手机接收报警信息远程监看实时视频,用户即时了解现场状况,防患于未然,将所有的不安全因素扼杀在萌芽前。     第二重保护   第二重     区域保安服务接处警值班中心实时处理前端警情,设有离岗报警系统,确保值班人员不
[安防电子]
GSA将合作平台扩展至日本半导体产业界
全球半导体联盟(Global Semiconductor Alliance,GSA)日前宣布,著眼于日本于全球半导体产业的重要性,已将合作平台扩展至该地区;此次扩展行动包括:日本产业高阶主管加入GSA董事会成员、新兴IC设计公司执行长加入亚太领袖议会(AP Leadership Council),以及首次于日本举行半导体领袖论坛。 GSA表示,日本于全球半导体产业扮演举足轻重之角色,不但占全世界半导体市场的20%,全球一百大电子供应商中亦有高达25%来自日本;不论从终端市场、供应商或合作夥伴的角度视之,日本对于所有GSA成员皆为一个重点区域。GSA也深知日本企业逐渐采轻晶圆厂(fab-lite)经营模式,且具备推动各方协
[半导体设计/制造]
针对高速串行接口设计的高效时钟解决方案
  数字系统的设计师们面临着许多新的挑战,例如使用采用了串行器/解串器(SERDES)技术的高速串行接口来取代传统的并行总线架构。基于SERDES的设计增加了带宽,减少了信号数量,同时带来了诸如减少布线冲突、降低开关噪声、更低的功耗和封装成本等许多好处。而SERDES技术的主要缺点是需要非常精确、超低抖动的元件来提供用于控制高数据速率串行信号所需的参考时钟。即使严格控制元件布局,使用长度短的信号并遵循信号走线限制,这些接口的抖动余地仍然是非常小的。   固定频率振荡器可用于很多通用的SERDES标准;但是,这些解决方案价格昂贵。此外,这种做法缺乏灵活性,并且使调试、测试和生产变得困难。   另一种解决方案是使用可编程时钟器
[嵌入式]
新汉助力中小企业统一监控系统和交易平台
新汉推出高扩展的监控平台NViS 5240,基于Intel® Atom™ D2700双核处理器,多达16路通道,支持双显示,超过8TB存储容量,无线连接。该平台特别适用于中小规模零售行业内的监控系统实施。 收益大于成本 NViS 5240的一大特点是基于Intel® Atom™ D2700双核处理器,2.13GHz 运行,支持监控录像和视频播放。入门级的监控平台可以使用GbE, 可以在一个屏幕内同时监控多达16台高像素IP摄像机,内置4个独立的硬盘可存储超过8TB的视频内容。并可通过一个eSATA接口扩大内存。 NViS 5240还可用于系统集成。基于Windows嵌入式操作系统,该平台允许VMS,ERP,POS,CRM,
[网络通信]
新汉助力中小企业统一监控系统和交易<font color='red'>平台</font>
RS232与RS485接口功能、区别
        RS232接口是1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。它的全名是“数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准”该标准规定采用一个25个脚的DB25连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。DB25的串口一般只用到的管脚只有2(RXD)、3(TXD)、7(GND)这三个,随着设备的不断改进,现在DB25针很少看到了,代替他的是DB9的接口,DB9所用到的管脚比DB25有所变化,是2(RXD)、3(TXD)、5(GND)这三个。因此现在都把RS232接口叫做DB9。    
[嵌入式]
基于USB从机技术的绝缘电阻表自动检定系统通信接口设计
随着我国电力工业的快速发展,电气设备预防性实验成为保障电力系统安全运行和维护工作的一个重要环节 。绝缘诊断是检测电气设备绝缘缺陷或故障的重要手段。绝缘电阻表作为测试绝缘电阻的专用仪表,要保证其测量精度在国家规定范围之内,须定期进行检定。目前的绝缘电阻表检定系统均为孤立检测装置,其报表生成和对历史数据的查询均由人工完成,已无法满足仪表检定行业对该检定装置的智能化要求 。 USB作为一种基于令牌式且对外设有统一接口的新型高速串行标准总线,具有使用便捷、易扩展、低成本、低干扰、速度快等特点 ,将USB从机技术应用于绝缘电阻表自动检定系统,使现有孤立的检定装置 与主机有机地融合成智能化检定装置,实现检测数据快速上传,配合主机软件系统和数据
[工业控制]
基于USB从机技术的绝缘电阻表自动检定系统通信<font color='red'>接口</font>设计
让智能设备更智能,Semtech发布智能传感器平台PerSe™
消费类电子产品如今已成为人们日常生活中不可或缺的重要部分。随着国民消费水平升级,对电子产品的功能性及智能性抱有更多期待。为了满足多样化的市场需求,消费电子领域创新产品不断涌现,特别是受益于 “智慧生活”理念逐渐普及,智能便携式电子设备领域快速发展,设备间的顺畅连接、智能体感、数据共享等特性已成为消费者偏好的功能特点。灵敏的智能传感技术也随机成为当下消费电子市场领域关注的热点之一。 近日,美国模拟和混合信号半导体产品及先进算法供应商 Semtech Corporation 宣布推出针对消费类智能设备市场的 PerSe™系列传感器。PerSe产品组合由PerSe Connect、PerSe Connect Pro以及Per
[传感器]
让智能设备更智能,Semtech发布智能传感器<font color='red'>平台</font>PerSe™
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

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

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