图5:socket 系统调用过程 三、 系统实现
如前面介绍,本设计采用SOPC Builder 系统开发工具产生片上系统,SOPC Builder 由Quartus II 设计软件启动。软件的设计由Nios II IDE 完成,它为所有的Nios II 处理器系统提供连贯一致的开发平台,采用一台PC 、一个Altera 器件以及一条JTAG 下载电缆,便具备了开发和调试Nios II 处理器系统所需的一切。下面将分硬件和软件设计分别介绍。
(一) 硬件设计实现
客户端 服务器端
图6:硬件结构图
其中,Cyclone FPGA,包括Nios软核CPU、操作系统使用的定时器、网络协议栈使用的定时器、CPU同外围设备的接口等;EPCS4,用来在上电时对FPGA进行配置;Flash,主要用来存放软件代码以及一些需要保存的参数;SRAM,用来在系统运行时的代码和数据存储;网络接口芯片;LED(2个),用来指示系统运行状态。
对于网络接口芯片,本系统中采用Smsc公司的LAN91C111芯片作为网络接口。该器件是一个以太网控制器,实现了网络七层协议栈中的传输层和MAC层的功能。另外,它具有10/100M自适应、双工/半工自适应等功能,有很好的网络兼容性。
(二) 软件设计实现
本系统采用uC/OS 操作系统,在IDE 集
成开发环境中编写。利用IDE 提供的
template 中的Simple Socket Server 模块为基
础,该模块较简单,对初学者较易上手。由
于该模块是基于iniche 协议栈的,所以TFTP 文件传输也要建立在这协议栈上层工作。模块中实现TCP 连接后利用socket 机制建立led.c 多个上层任务,任务之间采用信号量、消息队列、邮箱进行通信。这里为简化设计,将led.c 上层任务去掉,添加TFTP 文件传输程序,在完成此基本功能的前提下再添加上层任务,工程结构如图7。
完成TFTP 协议的是工程中remote_config.c 及相关文件。编写完程序后通过IDE 的Flash Programer 烧写进硬件Flash ,在设置好起始地址后,系统重启。首先硬件被配置到FPGA 中,软核CPU 从Flash 中启动程序,执行代码,操作系统开始运行。代码中内容如下:
1、 创建各优先级的任务,包括底层硬件初始化任务、网络连接任务、
文件传输任务等,并给其设置堆栈及其他一些参数。
2、 编写错误处理函数,针对各种错误,用alt_uCOSIIErrorHandler 函数
处理。
3、 设置调试标志,便于调试,例如在某些地方以printf("xxxx")作为代
码执行的标志。另外还可以标示程序是否更新,后面的网络更新程序就是这么作的。
4、 编写具体文件传输程序,用于网络接受更新文件,包括判断Flash 类
图7:工程结构图
需要更新软件内容时,只要硬件板(用户板)连接在网络上,就可以通过Command Shell配合TFTP软件将更新的文件转换为.flash 文件,键入“tftp 192.168.1.2 put my_test0.flash”远程配置到目标板(通过IP地址识别)里。远程配置完成后的Command Shell界面见图8。
图8 :Command Shell界面
本设计的目标就是更新文件成功通过网络下载到目标板上,为检验设计效果,特意在程序中编写了串口回显程序printf("xxxx"),更改的程序回显内容不同,原程序是printf("step5"),更新程序是printf("step6")。无论是通过JTAG 口下载程序还是通过网络下载,断电重启后都从Flash中运行,回显信息可以通过串口精灵看到,两次的结果如图9,说明已经传输正确,设计目标实现。
图9:回显结果
四、 结束语
可以看出, 基于Nios 进行嵌入式Internet 系统设计者两个突出优点。首先,降低了硬件设计的难度,缩短了硬件开发周期,保证了设计的可靠性。由于SOPC Builder 开发环境的完备功能,可以把注意力集中在系统整体构架和功能上来,而无需过多的考虑细节性的电路设计,同时还可以得到比较好的系统稳定性和可靠性。其次,软件开发容易。使用IDE 集成开发环境为设计者提供了较好的支持,提供了现成的网络协议栈,用户只需关注于上层程序的编写。
通过反复验证,此设计是完全成功的,能够达到预期的效果。这样的系统对Nios 处理器重新编程可以在不改变系统硬件框架的基础上,方便地增加系统的功能和处理效率,对系统的升级和再开发有很大的便利。
参考文献参考文献::
[1] 吴礼发 谢希仁。网络程序设计教程[W]。北京希望电子出版社 2002.1
[2] 周明天 汪文勇。TCP/IP 网络原理与技术[T]。清华大学出版社 1997.5
[3] 孙恺 程世恒。 Nios Ⅱ系统开发设计与应用实例[N]。北京航空航天大学出版社 2007.1
[4] 潘松 黄继业。SOPC 技术实用教程[S]。清华大学出版社 2005.1下载本文