前一段时间在EDN-China上经常可以看到有很多人在用单片机实现TCP/IP协议栈,而且还有一些开发板出售,感到非常亲切,在这里我有自己的一些体会。04年我就采用单片机实现过TCP/IP协议栈,当时主要想用单片机验证一下TCP/IP通信的可行性。用MCU设计TCP/IP协议栈是一次非常锻练个人能力的机会,实现一个精简的协议栈需要一定的代码量,可以大大提高自己的编程能力。除了提高编程能力之外,还可以对TCP/IP的通信机制进行较为深入的探索,起码这个项目做下来之后会将一本TCP/IP协议栈的书籍研读完毕。
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
上图是我当时做的TCP/IP模块。TCP/IP通信模块的硬件部分比较简单,就是一个单片机的最小系统,网络通信的MAC和PHY可以采用RTL8019芯片,该芯片非常容易购买,而且很便宜。单片机需要采用Flash存储空间大一些的产品,例如可以采用Winbond(华邦)的W78E58之类的型号,其具有32KB的Flash程序存储空间,足够装载一个TCP/IP协议处理固件了。数据存储空间可以通过IS61S256之类的芯片进行扩展,32KB就足够了。另外,还需要<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />93C46之类的配置芯片,可以配置系统的物理地址、ISA接口地址、中断信息等,甚至可以存储IP之类的信息。整个系统的芯片成本很低,可以控制在50元上下。
PCB设计是电子设计的必备,所以在模块设计时可以自己设计PCB,这个PCB比较简单,为了节约成本可以将PCB尺寸做的小一些。第一次做板PCB贵一些,100多块钱也就搞定了。加上元器件这个系统能够控制在200元之内。对于电子DIY的爱好者,我觉得很有必要亲自将整个系统DIY一遍。这样才能将系统设计的思想融入到自己的血液之中,体会更加深刻。
协议栈软件可以采用C51进行开发,在协议栈开发过程中需要充分考虑内存资源的管理,从中可以体会到内存碎片对于一个系统稳定性带来的危害;由于协议栈在MCU上裸奔,所以需要考虑不同的任务该如何去调度?前后台程序架构是否满足应用需求?实时性能否得到保证?W78E58没有调试接口,该如何对协议栈进行调试?是否需要开发一套串口调试软件辅助协议栈的开发?诸如此类的问题和答案只有在系统DIY的过程中才能深深体会。
发扬电子DIY的精神,才能激发电子爱好的热情。所以,我认为在校学生应该充分利用业余时间进行研究式DIY,而不仅仅是购买开发板进行软硬件组装。其实,学习本来就是一个探索的过程。
用户162481 2009-4-24 19:57
用户411565 2009-4-8 23:12
用户142676 2009-4-8 22:25
用户746255 2009-4-7 18:11
用户411565 2009-4-6 15:52
用户412065 2009-4-6 08:59
用户142676 2009-4-4 22:52
用户411565 2009-4-2 12:11
用户412065 2009-4-2 11:16
tengjingshu_112148725 2009-4-2 09:34