嵌入式开发人员必须选择一款处理器,以此决定合适的系统性能。Nios II处理器使用指令和数据存储器分离的存储器结构,具有灵活的结构可修改性,支持自定制指令。Nios II处理器支持片上调试,通过JTAG调试通道,可以实现指令单步、断点、连续运行等调试功能。使用系统开发工具将处理器、外设、存储器和I/O接口集成在单片FPGA中,定制自己设计的系统,并且对各种外围设备的实现提供了强大的支持平台;SOPC Builder系统开发工具可以自动生成组件以及连接组件的总线,quartus ii
软件开发工具可以完成功能模块设计、综合布线和仿真,Nios II ide软件开发工具提供嵌入式应用软件的开发环境和调试环境。所有软件开发任务编辑、构建、程序调试都能够在(IDE)下完成,从而简化了开发过程,降低了系统成本、复杂性以及功耗,缩短了产品上市周期。 组件的可定制性是嵌入式开发的一个特点,SOPC(System on Programmable Chip,片上可编程系统)是Altera公司提出的一种灵活、高效的SOC解决方案。它将处理器、存储器、I/O接口、DMA、定时器等系统设计需要的功能模块集成到一个PLD器件上,构建一个可编程的片上系统。 嵌入式应用软件都是运行在特定的硬件平台上的。我所使用的FPGA为EP1C6Q240C8,如果只是使用FPGA来实现一个串口通信,那么在Nios II IDE中使用Nios II device drivers来写一个串口通讯程序是容易实现的,但是我们的程序要保存一些数据到FLASH中,Nios II device drivers虽然提供了HAL和c库,但是没有提供可读写的文件系统,所以我们就选了提供文件系统支持的eCos嵌入式操作系统来实现所需要的功能。那么eCos怎么移植到nios II处理器上,又怎样在这样一个平台上开发串口通信程序呢!我把设计的过程分为三部分:硬件平台设计,eCos库的编译,串口通信程序开发和调试。
硬件平台设计 根据fpga型号和flash类型先要制作目标板。Quartus ii有一个命令mk_target_board是用来制作目标板的,参看该命令的使用帮助请参考Quartus ii安装路径document目录下的flash-program-guide.pdf。生成目标板工程后,启动quartus ii 5.0和sopc builder软件设计该目标板工程,sopc builder软件完成UART、FLASH、RAM组件的添加和编译。quartus ii 5.0软件进行综合布线,编译生成flash program file(一个sof文件)。 然后使用quartus ii 5.0和sopc Builder软件设计我们的应用工程,在sopc builder软件中选择我们自己设计的目标板。添加必需的组件和模块,串口通信需要的UART组件,保存数据的FLASH组件等。分配管脚、编译,生成FPGA硬件配置文件(也是sof文件)。Sopc Builder生成的ptf文件也是我们在后面配置ecos库的时候要用到的文件。
eCos库编译 eCos可以到Redhat的网站或者Nios Community论坛找到,Nios论坛的eCos是移植了的版本,而redhat网站上的还要自己移植到Nios II上。移植了的版本支持这些Altera的Avalon设备组件:Timer、UART、JTAG UART、Lan91C111、Ethernet Chip、LCD 16207 Panel、Compact Flash等,后面提到的eCos都是指移植了的版本。安装移植了的版本eCos需要一个条件,就是quartus II软件要满足版本需求,现在Nios论坛上的eCos已经开发到5.1版了 |