|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区
您需要 登录 才可以下载或查看,没有账号?立即注册
×
<strong>引言</strong>
随着大规模集成电路技术的进步和制造工艺水平的提高,嵌入式系统的开发变得日益复杂。传统的嵌入式系统设计方法已经不能适应当前嵌入式系统设计的需要。单个芯片容量的增大、功能的增加、体积的减小使得设计变得更加便利,同时也为嵌入式系统设计开发开辟了新的天地,即出现了可编程片上系统(System On Programmable Chip,SOPC)技术。SOPC技术大大促进了软硬件协同设计及计算机系统设计自动化的发展,并具有可裁剪、可扩充、可升级的灵活设计方式及在系统可编程功能。
通常,嵌入式系统的软件部分主要基于实时操作系统(简称RTOS),在特定的RTOS 之上开发应用软件。通过屏蔽掉许多底层硬件细节的方法,可以使得程序开发人员改进软件功能、提高设计效率、降低开发难度,同时使得程序调试方便、移植简单、容易维护,大大缩短了开发周期。uClinux 是一种广泛应用于嵌入式设备中的实时操作系统,针对微控制器领域而设计。它的特点是较好的稳定性、出色的网络功能和高效的文件系统支持等。最大特征就是不使用内存管理单元模块(MMU:Memory Management Unit),很适合那些没有MMU 的处理器。如把uClinux 操作系统移植于SOPC 系统,便可以使得此类系统大大缩短软硬件开发的时间,并可进一步增强整体功能。
<strong>1 SOPC 硬件系统的建立</strong>
1.1 硬件系统架构
不同于许多基于微处理器的嵌入式系统,基于SOPC 的嵌入式系统具有可配置的特点,可根据需要灵活地在一片FPGA 中构造外设接口。本文构建的最小系统可运行uClinux,采用Altera 公司的Cyclone Ⅱ芯片EP2C35 及相关外围电路组成。其中,外围电路包括1 片16MB 的DDR SDRAM、l 片16MB 的Flash、RS232、串行配置芯片EPCS64 以及供电系统。系统体系架构如图1 所示。
<ignore_js_op>
2010-3-22 15:39:22 上传
<strong>下载附件</strong> (4.22 KB)
</ignore_js_op>
1.2 SOPC 硬件开发
Nios Ⅱ系列嵌入式处理器是一款采用流水线技术、单指令流的RISC CPU,广泛应用于嵌入式系统。Nios Ⅱ包括3 种内核:快速的F(最高性能的优化)内核、经济的E(最小逻辑占用的优化)内核以及标准的S(平衡于性能和尺寸)内核,每种内核根据不同的性能而优化。Nios Ⅱ嵌入式CPU 支持32 位指令集、32 位数据线宽度、32 个通用寄存器、32 个外部中断源、2 GB 寻址空间,包含高达256 个用户自定义的CPU 定制指令。NI0S Ⅱ CPU 的所有数据、程序都是通过Avalon 总线传输的,通过使用Altera 的Quartus Ⅱ软件以及SOPCBuilder 工具可以轻松地将Nios Ⅱ内核嵌入到系统里。
SOPC 硬件开发主要使用Quartus Ⅱ和SOPC Builder。由于本系统中使用到DDR SDRAM,所以在系统开发前必须安装与Quartus Ⅱ版本相兼容的Megacore 程序以提供DDR SDRAM IP核。硬件设计主要工作有以下两步:
(1)定制Nios Ⅱ处理器软核。用SOPC Builder 软件从Nios Ⅱ处理器内核和Nios Ⅱ开发套件提供的外设列表中选取合适的CPU、存储器以及各外围器件(如片内存储器、PIO、定时器、UART、片外存储器接口等),并定制和配置它们的功能、分配外设地址及中断号、设定复位地址、最后生成系统。用户也可以添加用户自身定制指令逻辑到Nios Ⅱ内核以加速CPU 性能,或添加用户外设以减轻CPU 的任务。定制好的Nios Ⅱ处理器软核如图2 所示。
<ignore_js_op>
2010-3-22 15:39:22 上传
<strong>下载附件</strong> (12.55 KB)
</ignore_js_op>
(2)建立完善顶层模块。使用SOPC Builder 生成Nios Ⅱ系统后,将其集成到整个Quartus Ⅱ工程中。根据需要在工程中加入Nios Ⅱ系统以外的逻辑,用户也可以集成自身定制的硬件模块到SOPC 设计之中,或集成从Altera 或第3 方IP 供应商得到的其它现成的知识产权设计模块。顶层模块主要包括DDR SDRAM 模块、FLASH 模块、UART 模块以及PIO模块。
<strong>2 裁剪和移植uClinux 操作系统</strong>
本系统使用的是Microtronix 公司负责维护和发行的Nios Ⅱ uClinux 版本。该版本uClinux 是2.6.11 的内核,目前在Nios Ⅱ上运行最为稳定。在Nios Ⅱ上实现uClinux 操作系统环境主要包括两个部分,一是针对Nios Ⅱ处理器移植的uClinux 内核,二是建立一个包含基本系统工具和应用程序的根文件系统。
2.1 建立uClinux 内核
该项工作主要需在Nios II IDE 环境中利用Microtronix Nios Ⅱ包构建Linux KernelProject,并根据用户硬件系统在SOPC Builder System 栏中选择目标硬件。在Memory Device栏中选择uClinux 内核上传的位置(FLASH)以及内核运行的位置(SDRAM),完成生成内核的配置。回到Nios II IDE 主窗口界面后,在Project Navigator 窗口中可以看到uClinux_kernel 工程已经建立好。此时在uClinux_kernel 上点击右键选择ConfigureKernel,进入uClinux 内核配置界面,并根据硬件系统进行uClinux 内核配置。需配置的主要选项及相关描述如下:
(1)Processer type and feature--->latform. 项选择Altera Cyclone DevelopmentBoard Support;
(2)Device Drivers--->ATA/ATAPI/MFM/RLL support 选项关掉,我们所建立的NiosII 系统没有外部IDE 接口外设;
(3)Device Drivers--->Character devices--->Nios PIO buttons support 选项关掉,因为系统中没有buttons PIO,若选择则会编译出错;
(4)Device Drivers->Character devices--->Serial drivers--->Altera JTAG UARTsupport 选项选中,为控制台选择JTAG 下载方式;
(5) Device Drivers->Character devices--->Serial drivers--->Nios serialsupport 选项选中,通过RS232 串口与系统进行通信交流;
(6)其余配置不需要改变。
配置完成后予以保存并回到Nios II IDE 主窗口界面。在Project Navigator 窗口中右键点击uClinux_kernel 选择Build Project 编译内核。编译完成后,在ProjectNavigator 窗口中展开uClinux_kernel 工程。可以看到,在uClinux_kernel 的目录中,已经生成了vmlinux.bin 文件。在该文件上点击右键选择Upload 即可启动烧写程序,将生成的内核二进制文件vmlinux.bin 写入Flash 芯片中。
2.2 建立uClinux 文件系统
uClinux 文件系统的建立与uClinux 内核的建立方法类似,也是在Nios II IDE 环境中利用Microtronix Nios Ⅱ程序包构建Linux Filesystem Project。在SOPC Builder System栏中选择目标硬件(与建立uClinux_kernel 工程时选择的硬件系统相同),在Memory Device栏中确定uClinux 文件系统上传的位置(FLASH)。在文件系统基本工具和应用程序选择窗口中,根据硬件系统情况以及应用方向选择在文件系统中要生成的基本工具和应用程序。用户也可以点击右边的Install Minimal 按钮,只选择必须的工具和应用程序。这种情况下生成的基本文件系统仅为872K,很适合资源紧凑的开发平台。
为了精简系统,选择Install Minimal,点击Finish 完成基本文件系统的配置。回到Nios II IDE 的主窗口界面,编译工程。编译完成之后,在uClinux_fs 工程的目录列表中可以看到romfs.bin 文件已经生成。与处理内核文件相同,再将romfs.bin 文件写入Flash中。至此,uClinux 的内核和文件系统都已经存在于目标硬件系统(开发板)中的Flash 芯片上了。Nios II 处理器复位之后就能从Flash 中引导启动,进入uClinux 操作系统。
2.3 运行并登陆uClinux 操作系统
进入Quartus 的编程窗口,将编译生成的.sof 文件下载到硬件系统(开发板)上。通过超级终端或DNW 程序可以看到,uClinux 的启动信息已经从DNW 窗口输出,并等待与用户通信。输入ls 命令可以看到配置uClinux_fs 时所选择的基本工具和应用程序。至此,已经成功定制并登陆到uClinux 系统中。DNW 软件输出的uClinux 系统启动信息如图3 所示。
<ignore_js_op>
2010-3-22 15:39:22 上传
<strong>下载附件</strong> (15.07 KB)
</ignore_js_op>
<strong>3 建立并执行用户应用程序</strong>
3.1 建立用户应用程序
利用Microtronix Nios Ⅱ完成uClinux 应用程序工程的创建后,在Project Navigator窗口中可以看到一个空的工程。可新建.c 文件及makefile 文件向工程中添加用户程序代码,也可导入已建立好的.c 文件及makefile 文件。这里选用较为通用的新建方法为例进行介绍。
首先在工程中建立.c 文件,输入程序代码:
#include <stdio.h>
main()
{
printf("My first Nios2 uClinux Program !\n");
}
当建立makefile 文件、输入对应的编译、控制信息代码并编译完成后,即可在工程中看到所生成的Nios II Linux 可执行文件.exe 文件。
3.2 下载并运行用户应用程序
有多种方法将Nios II uClinux 可执行文件.exe 文件传输到uClinux 系统中并运行,一般首选ftp 和NFS 方法。鉴于本例没有包含网络系统,所以选用修改文件系统内容的方法完成下载和运行任务。
先将编译好的.exe 文件拷贝到uClinux_fs 工程的target\bin 目录下(可以根据自己的习惯选择其它),重新编译uClinux_fs 工程。完成后将编译新生成的romfs.bin 文件写入Flash 芯片中,启动登陆uClinux 操作系统,进入/bin 目录。可以看到,拷贝到文件系统中的.exe 程序已经出现在/bin 目录中。执行后则在DNW 窗口得到程序执行的结果,例如打印输出:My first Nios2 uClinux Program !其效果示于图4。
<ignore_js_op>
2010-3-22 15:39:22 上传
<strong>下载附件</strong> (10.35 KB)
</ignore_js_op>
<strong>4 结束语</strong>
嵌入式系统设计是一门综合性很强的学科,其相关研究内容和技术具有高度融合的特点。基于新颖、高效、业已成熟的基本器件及开发环境,SOPC 使得测量和控制领域中直接面向应用的研究更加现实、可行。依托于“强电磁场环境模拟与防护技术”国防科技重点实验室,本文构建了一个SOPC 系统,定制了Nios II 处理器软核,进而完成了uClinux 操作系统的剪裁与移植和应用程序的基本开发、调试工作,并投入到了后续实验之中。此外,这种方式不仅有助于大大缩短嵌入式系统的软硬件开发时间,又为一般实验条件下的相关控制系统提供了可行的设计思路和实现方法,并可望具有一定的学术价值和广阔的应用领域。
本文创新点:构建了可移植uClinux 的最小SOPC 系统,并成功完成了uClinux 的移植工作, 缩短了SOPC 系统的开发周期、拓展了uClinux 的应用领域。
作者:巨政权 来源:《微计算机信息》2009年第4-2期 |
|