首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于Nios II和eCos的串口通信程序开发

基于Nios II和eCos的串口通信程序开发

嵌入式开发人员必须选择一款处理器,以此决定合适的系统性能。Nios II处理器使用指令和数据存储器分离的存储器结构,具有灵活的结构可修改性,支持自定制指令。Nios II处理器支持片上调试,通过JTAG调试通道,可以实现指令单步、断点、连续运行等调试功能。使用系统开发工具将处理器、外设、存储器和I/O接口集成在单片FPGA中,定制自己设计的系统,并且对各种外围设备的实现提供了强大的支持平台;SOPC Builder系统开发工具可以自动生成组件以及连接组件的总线,quartus ii 软件开发工具可以完成功能模块设计、综合布线和仿真,Nios II ide软件开发工具提供嵌入式应用软件的开发环境和调试环境。所有软件开发任务编辑、构建、程序调试都能够在(IDE)下完成,从而简化了开发过程,降低了系统成本、复杂性以及功耗,缩短了产品上市周期。

组件的可定制性是嵌入式开发的一个特点,SOPCSystem on Programmable Chip,片上可编程系统)是Altera公司提出的一种灵活、高效的SOC解决方案。它将处理器、存储器、I/O接口、DMA、定时器等系统设计需要的功能模块集成到一个PLD器件上,构建一个可编程的片上系统。

嵌入式应用软件都是运行在特定的硬件平台上的。我所使用的FPGAEP1C6Q240C8,如果只是使用FPGA来实现一个串口通信,那么在Nios II IDE中使用Nios II device drivers来写一个串口通讯程序是容易实现的,但是我们的程序要保存一些数据到FLASH中,Nios II device drivers虽然提供了HALc库,但是没有提供可读写的文件系统,所以我们就选了提供文件系统支持的eCos嵌入式操作系统来实现所需要的功能。那么eCos怎么移植到nios II处理器上,又怎样在这样一个平台上开发串口通信程序呢!我把设计的过程分为三部分:硬件平台设计,eCos库的编译,串口通信程序开发和调试。

 

硬件平台设计

      根据fpga型号和flash类型先要制作目标板。Quartus ii有一个命令mk_target_board是用来制作目标板的,参看该命令的使用帮助请参考Quartus ii安装路径document目录下的flash-program-guide.pdf。生成目标板工程后,启动quartus ii 5.0sopc builder软件设计该目标板工程,sopc builder软件完成UARTFLASHRAM组件的添加和编译。quartus ii 5.0软件进行综合布线,编译生成flash program file(一个sof文件)  

然后使用quartus ii 5.0sopc Builder软件设计我们的应用工程,在sopc builder软件中选择我们自己设计的目标板。添加必需的组件和模块,串口通信需要的UART组件,保存数据的FLASH组件等。分配管脚、编译,生成FPGA硬件配置文件(也是sof文件)。Sopc Builder生成的ptf文件也是我们在后面配置ecos库的时候要用到的文件。

 

eCos库编译

eCos可以到Redhat的网站或者Nios Community论坛找到,Nios论坛的eCos是移植了的版本,而redhat网站上的还要自己移植到Nios II上。移植了的版本支持这些AlteraAvalon设备组件:TimerUARTJTAG UARTLan91C111Ethernet ChipLCD 16207 PanelCompact Flash等,后面提到的eCos都是指移植了的版本。安装移植了的版本eCos需要一个条件,就是quartus II软件要满足版本需求,现在Nios论坛上的eCos已经开发到5.1版了

这个版主不太冷 =========================== 我的中电网博客:http://blog.chinaecnet.com/u/20/index.htm

完成eCos的安装后,就可以配置eCos了,打开“开始—>程序—>altera—>niosii development kit—> niosii sdk shell”,在niosii sdk shell中启动配置工具nios2configtool,命令如下:

nios2configtool --ptf=/ecos-c/info_aquire/niosii_c.ptf  --cpu=cpu

参数niosii_c.ptf是我们在设计应用工程时生成的文件,cpu是使用Sopc Builder定制接口时添加Nios II处理器的名字。接着出现如下图形配置界面:

 根据具体的UART芯片型号,从package目录选择相应芯片的驱动加入,如果需要的UART芯片驱动不存在,则可以参考已有的UART芯片驱动进行修改。

打开菜单“build->package”添加“serial device drivers”包和“FLASH device drivers”包,把我们需要的包添加完后,就可以编译eCos库了,打开菜单“build->library”编译生成eCos库,它包含include文件目录、lib文件目录和program_flash文件。然后可以使用Nios II IDE集成开发工具开发基于eCos嵌入式操作系统的串口通信程序。


串口通信程序开发和调试

  1)配置开发环境

打开Nios II IDE软件,新建一个“advanced c/c++ project”工程,选择我们串口通信程序所在的文件夹的目录路径。然后在“build command”中输入我们的定制编译命令:

make  INSTALL_DIR=/ecos-c/info_aquire/vehicle_install

这个目录/ecos-c/info_aquire/vehicle_install是我们的编译生成的eCos库所在的目录,不要和串口通信程序所在的目录混淆。

  2) 串口通信程序设计

程序工作原理:从PC机发送一条十六进制格式的数据包到串口通讯程序,串口通讯程序的读数据线程首先对接收到的数据进行判断,如果接收到包头标志,则重新开始填充缓冲区,如果接收到包尾标志,则将缓冲区数据传递给处理数据线程对数据包进行处理。处理数据线程按照包的类型标志进行处理,如果在处理的过程中出现错误,则把错误的信息返回给PC,成功执行了则返回成功的对应标志让PC确认操作执行成功。

这个版主不太冷 =========================== 我的中电网博客:http://blog.chinaecnet.com/u/20/index.htm
返回列表