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

基于FPGA的LCD显示远程更新(3)

基于FPGA的LCD显示远程更新(3)

在Xilinx的Spartan 6 FPGA上实现的LWIP TCP/IP采用的是LWIP的版本V1.1.1,提出和采用以下几种移植和运行方式:

        (1 )TCP/IP协议的每一层是一个单独进程,链路层是一个进程,IP层是一个进程,TCP层是一个进程。这样的优势是网络协议的每一层都非常清晰,代码的调试和理解都非常容易;最大的缺点是数据跨层传递时会引起上下文切换。接收一个TCP信息段要引起3次上下文切换(从网卡驱动程序到链路层进程,从链路层进程到IP层进程,从IP层进程~]TCP进程)。对于操作系统来说,任务切换是要浪费时间的。过频的上下文切换使得系统运行比较沉重,这是不可取的。

        (2) TCP/IP协议栈在操作系统内核当中,应用程序通过操作系统的系统调用和协议栈来进行通讯,这样TCP/IP的协议栈就限定于特定的操作系统内核了。此法理论上可以实现,但代码不具有通用性,不便于将来的维护和再移植,同样也是不太可取的。

        (3)TCP/IP协议栈都在一个进程当中,这样TCP/IP协议栈就和操作系统内核分开了,而应用层程序既可以是单独的进程也可以驻留在TCP/IP进程中。如果应用程序是单独的进程,可以通过操作系统的邮箱、消息队列等和TCP/IP进程进行通讯。此种方式移植层次清晰,移植代码量适中,是比较好的思路,并且在此基础上移植调试成功,证明此思路是切实可行的,但缺点是依赖于操作系统的任务通信机制,不能得到很高的性能。

        (4)把应用层程序驻留TCP/IP进程中,则应用层程序就利用内部回调函数口(Raw API)和TCP/IP协议栈通讯。应用层程序既可以是独立的任务,也可以在TCP/IP线程中利用内部回调函数n(Raw API)和TCP/IP协议栈通讯。此方式不依赖实时操作系统,能在无操作系统的情况下运行。经过对LWIP协议栈源码的彻底消化,改写其接口代码,经多次调试移植成功,测试性能得到了很大提升。

        2.4 软件设计流程图
        软件设计分为发送部分和接受部分。
        程序流程图如下:

        发送端流程图                        接收端流程图


                

继承事业,薪火相传
返回列表