SOPC 系统建立及uClinux 移植实现
扫描二维码
随时随地手机看文章
摘要:本文通过具体实现一个可以运行uClinux操作系统的最小SOPC系统,较为完整地介绍了构建SOPC系统以及构建NiosII软核处理器的方法及步骤,并详细描述了uCLinux操作系统在该SOPC系统上的移植方法。此外,还进行了基于NiosII处理器uClinux操作系统下应用程序的开发,以从总体上完成实用性的验证。
引言随着大规模集成电路技术的进步和制造工艺水平的提高,嵌入式系统的开发变得日益复杂。传统的嵌入式系统设计方法已经不能适应当前嵌入式系统设计的需要。单个芯片容量的增大、功能的增加、体积的减小使得设计变得更加便利,同时也为嵌入式系统设计开发开辟了新的天地,即出现了可编程片上系统(SystemOnProgrammableChip,SOPC)技术。SOPC技术大大促进了软硬件协同设计及计算机系统设计自动化的发展,并具有可裁剪、可扩充、可升级的灵活设计方式及在系统可编程功能。
通常,嵌入式系统的软件部分主要基于实时操作系统(简称RTOS),在特定的RTOS之上开发应用软件。通过屏蔽掉许多底层硬件细节的方法,可以使得程序开发人员改进软件功能、提高设计效率、降低开发难度,同时使得程序调试方便、移植简单、容易维护,大大缩短了开发周期。uClinux是一种广泛应用于嵌入式设备中的实时操作系统,针对微控制器领域而设计。它的特点是较好的稳定性、出色的网络功能和高效的文件系统支持等。最大特征就是不使用内存管理单元模块(MMU:MemoryManagementUnit),很适合那些没有MMU的处理器。如把uClinux操作系统移植于SOPC系统,便可以使得此类系统大大缩短软硬件开发的时间,并可进一步增强整体功能。
1SOPC硬件系统的建立1。1硬件系统架构不同于许多基于微处理器的嵌入式系统,基于SOPC的嵌入式系统具有可配置的特点,可根据需要灵活地在一片FPGA中构造外设接口。本文构建的最小系统可运行uClinux,采用Altera公司的CycloneⅡ芯片EP2C35及相关外围电路组成。其中,外围电路包括1片16MB的DDRSDRAM、l片16MB的Flash、RS232、串行配置芯片EPCS64以及供电系统。系统体系架构如图1所示。
1。2SOPC硬件开发NiosⅡ系列嵌入式处理器是一款采用流水线技术、单指令流的RISCCPU,广泛应用于嵌入式系统。NiosⅡ包括3种内核:快速的F(最高性能的优化)内核、经济的E(最小逻辑占用的优化)内核以及标准的S(平衡于性能和尺寸)内核,每种内核根据不同的性能而优化。NiosⅡ嵌入式CPU支持32位指令集、32位数据线宽度、32个通用寄存器、32个外部中断源、2GB寻址空间,包含高达256个用户自定义的CPU定制指令。NI0SⅡCPU的所有数据、程序都是通过Avalon总线传输的,通过使用Altera的QuartusⅡ软件以及SOPCBuilder工具可以轻松地将NiosⅡ内核嵌入到系统里。
SOPC硬件开发主要使用QuartusⅡ和SOPCBuilder。由于本系统中使用到DDRSDRAM,所以在系统开发前必须安装与QuartusⅡ版本相兼容的Megacore程序以提供DDRSDRAMIP核。硬件设计主要工作有以下两步:(1)定制NiosⅡ处理器软核。用SOPCBuilder软件从NiosⅡ处理器内核和NiosⅡ开发套件提供的外设列表中选取合适的CPU、存储器以及各外围器件(如片内存储器、PIO、定时器、UART、片外存储器接口等),并定制和配置它们的功能、分配外设地址及中断号、设定复位地址、最后生成系统。用户也可以添加用户自身定制指令逻辑到NiosⅡ内核以加速CPU性能,或添加用户外设以减轻CPU的任务。定制好的NiosⅡ处理器软核如图2所示。
(2)建立完善顶层模块。使用SOPCBuilder生成NiosⅡ系统后,将其集成到整个QuartusⅡ工程中。根据需要在工程中加入NiosⅡ系统以外的逻辑,用户也可以集成自身定制的硬件模块到SOPC设计之中,或集成从Altera或第3方IP供应商得到的其它现成的知识产权设计模块。顶层模块主要包括DDRSDRAM模块、FLASH模块、UART模块以及PIO模块。
2裁剪和移植uClinux操作系统本系统使用的是Microtronix公司负责维护和发行的NiosⅡuClinux版本。该版本uClinux是2。6。11的内核,目前在NiosⅡ上运行最为稳定。在NiosⅡ上实现uClinux操作系统环境主要包括两个部分,一是针对NiosⅡ处理器移植的uClinux内核,二是建立一个包含基本系统工具和应用程序的根文件系统。
2。1建立uClinux内核该项工作主要需在NiosIIIDE环境中利用MicrotronixDevice栏中选择uClinux内核上传的位置(FLASH)以及内核运行的位置(SDRAM),完成生成内核的配置。回到NiosIIIDE主窗口界面后,在ProjectNavigator窗口中可以看到uClinux_kernel工程已经建立好。此时在uClinux_kernel上点击右键选择ConfigureKernel,进入uClinux内核配置界面,并根据硬件系统进行uClinux内核配置。需配置的主要选项及相关描述如下:(1)Processertypeandfeature--->Platform。项选择AlteraCycloneDevelopmentBoardSupport;(2)DeviceDrivers--->ATA/ATAPI/MFM/RLLsupport选项关掉,我们所建立的NiosII系统没有外部IDE接口外设;(3)DeviceDrivers--->Characterdevices--->NiosPIObuttonssupport选项关掉,因为系统中没有buttonsPIO,若选择则会编译出错;(4)DeviceDrivers->Characterdevices--->Serialdrivers--->AlteraJTAGUARTsupport选项选中,为控制台选择JTAG下载方式;(5)DeviceDrivers->Characterdevices--->Serialdrivers--->Niosserialsupport选项选中,通过RS232串口与系统进行通信交流;(6)其余配置不需要改变。
配置完成后予以保存并回到NiosIIIDE主窗口界面。在ProjectNavigator窗口中右键点击uClinux_kernel选择BuildProject编译内核。编译完成后,在ProjectNavigator窗口中展开uClinux_kernel工程。可以看到,在uClinux_kernel的目录中,已经生成了vmlinux。bin文件。在该文件上点击右键选择Upload即可启动烧写程序,将生成的内核二进制文件vmlinux。bin写入Flash芯片中。
2。2建立uClinux文件系统uClinux文件系统的建立与uClinux内核的建立方法类似,也是在NiosIIIDE环境中利用MicrotronixInstallMinimal按钮,只选择必须的工具和应用程序。这种情况下生成的基本文件系统仅为872K,很适合资源紧凑的开发平台。[!--empirenews.page--]
为了精简系统,选择InstallMinimal,点击Finish完成基本文件系统的配置。回到NiosIIIDE的主窗口界面,编译工程。编译完成之后,在uClinux_fs工程的目录列表中可以看到romfs。bin文件已经生成。与处理内核文件相同,再将romfs。bin文件写入Flash中。至此,uClinux的内核和文件系统都已经存在于目标硬件系统(开发板)中的Flash芯片上了。NiosII处理器复位之后就能从Flash中引导启动,进入uClinux操作系统。
2。3运行并登陆uClinux操作系统进入Quartus的编程窗口,将编译生成的。sof文件下载到硬件系统(开发板)上。通过超级终端或DNW程序可以看到,uClinux的启动信息已经从DNW窗口输出,并等待与用户通信。输入ls命令可以看到配置uClinux_fs时所选择的基本工具和应用程序。至此,已经成功定制并登陆到uClinux系统中。DNW软件输出的uClinux系统启动信息如图3所示。
3建立并执行用户应用程序3。1建立用户应用程序利用MicrotronixNiosⅡ完成uClinux应用程序工程的创建后,在ProjectNavigator窗口中可以看到一个空的工程。可新建。c文件及makefile文件向工程中添加用户程序代码,也可导入已建立好的。c文件及makefile文件。这里选用较为通用的新建方法为例进行介绍。
首先在工程中建立。c文件,输入程序代码:#includemain(){printf("MyfirstNios2uClinuxProgram!n");}当建立makefile文件、输入对应的编译、控制信息代码并编译完成后,即可在工程中看到所生成的NiosIILinux可执行文件。exe文件。
3。2下载并运行用户应用程序有多种方法将NiosIIuClinux可执行文件。exe文件传输到uClinux系统中并运行,一般首选ftp和NFS方法。鉴于本例没有包含网络系统,所以选用修改文件系统内容的方法完成下载和运行任务。
先将编译好的。exe文件拷贝到uClinux_fs工程的targetbin目录下(可以根据自己的习惯选择其它),重新编译uClinux_fs工程。完成后将编译新生成的romfs。bin文件写入Flash芯片中,启动登陆uClinux操作系统,进入/bin目录。可以看到,拷贝到文件系统中的。exe程序已经出现在/bin目录中。执行后则在DNW窗口得到程序执行的结果,例如打印输出:MyfirstNios2uClinuxProgram!其效果示于图4。
4结束语嵌入式系统设计是一门综合性很强的学科,其相关研究内容和技术具有高度融合的特点。基于新颖、高效、业已成熟的基本器件及开发环境,SOPC使得测量和控制领域中直接面向应用的研究更加现实、可行。依托于“强电磁场环境模拟与防护技术”国防科技重点实验室,本文构建了一个SOPC系统,定制了NiosII处理器软核,进而完成了uClinux操作系统的剪裁与移植和应用程序的基本开发、调试工作,并投入到了后续实验之中。此外,这种方式不仅有助于大大缩短嵌入式系统的软硬件开发时间,又为一般实验条件下的相关控制系统提供了可行的设计思路和实现方法,并可望具有一定的学术价值和广阔的应用领域。
5本文创新点
构建了可移植uClinux的最小SOPC系统,并成功完成了uClinux的移植工作,缩短了SOPC系统的开发周期、拓展了uClinux的应用领域。