honey655729 发表于 2011-12-30 23:01:37

lpc2103+enc28j60+uip1.0实现telnet功能

来论坛这么久一直都是看别人的文章,下大家分享的资源,最近在学习UIP虽然还没摸透,在自己的LPC2103板上试验了远程登录功能,下面我写下我移植uip的记录和修改的地方,而且还做了proteus仿真。
移植过程:
1、准备uip-1.0源码包,主要移植的应用程序是telnetd
2、建立工程,我使用的LPC2103,将uip-1.0的源码添加的到工程内,uip文件夹下除uip-split.c的所有文件,lib文件夹下所有文件以及unix文件夹下除main.c的所有文件。下面截图是我的工程的添加内容:
http://cache.amobbs.com/bbs_upload782111/files_49/ourdev_709150IXLRD7.jpg
(原文件名:工程.jpg)
3、移植修改文件:我对uip还不是很熟悉,多的就不说了,几个移植需要修改的文件需要说明下
   uip的底层驱动接口有三个函数,初始化、写数据和读数据。这三个函数位于unix文件夹下名为tapdev.c.看我的工程内就会看到,我再三个函数内添加了底层enc28j60的读写代码。
   uip内需要时钟进行处理比如arp老化等,这个时钟就是单片机来提供的,我的工程内sys_clock.c就是LPC2103的时钟函数,包括定时器初始化中断初始化以及中断服务函数。而uip内有一个函数用来连接系统的时钟就是在unix文件夹下的clock-arch.c内的那个函数,我的代码内直接返回系统时钟的计数,看代码就知道了。
4、uip的应用程序都是通过一个叫做UIP_APPCALL的宏定义来实现的,其实这个宏定义是函数名,比如我使用的是远程登录的应用程序,那么就要定义具体的UIP_APPCALL函数实体。在telnetd.h文件内有这个定义#define UIP_APPCALL   telnetd_appcall//这个是telnet的一个函数。
5、主函数的编写,主函数可以直接参考源码内unix文件夹下的main.c文件。
6、我使用的keil mdk仿真程序的时候发现一个问题,就是调用string.h库内的strlen()函数时会进入死循环,这个问题至今没有解决,所以我自己编写了一个mystrlen()函数位于main.c内,用它来替代原库的strlen(),并将uip内所有使用了strlen()的,全比进行替换。
下面贴上proteus的仿真图:
http://cache.amobbs.com/bbs_upload782111/files_49/ourdev_709154WYOWD6.jpg
(原文件名:仿真.jpg)
使用keil mdk生成的程序不能直接仿真,需要将HEX文件的倒数第二行删除掉才行。
http://cache.amobbs.com/bbs_upload782111/files_49/ourdev_709153VSK1YZ.jpg
(原文件名:ping测试.jpg)
ping的IP地址是192.168.1.200
http://cache.amobbs.com/bbs_upload782111/files_49/ourdev_709152WPQ1ON.jpg
(原文件名:远程登陆.jpg)
远程登录 telnet 192.168.1.200
废话不多说,附上源代码点击此处下载 ourdev_709155E7ED5K.rar(文件大小:544K) (原文件名:LCLlpc2103Enc28j60ok.rar)

honey655729 发表于 2011-12-30 23:05:14

补充:源码内有proteus仿真文件版本为proteus7.5

AilesArgentees 发表于 2011-12-31 00:00:37

mark

qhshilin 发表于 2011-12-31 00:12:40

mark

avbee 发表于 2012-1-4 15:57:45

顶下!!!

losting 发表于 2012-1-15 01:44:17

ding

2006lc 发表于 2012-1-15 11:02:18

谢谢分享

l09046162 发表于 2012-1-15 13:22:30

收藏

flyingcys 发表于 2012-1-15 13:38:12

MARK

myHXH 发表于 2012-1-19 10:06:40

mark

zhouwenjing 发表于 2012-1-28 14:00:26

mark

eworker 发表于 2012-1-28 18:02:20

uip-split.c,split功能很好用的。

huilai 发表于 2012-1-28 18:15:34

lpc2103+enc28j60+uip1.0实现telnet功能mark

Ayumi123 发表于 2012-9-21 13:49:13

目前正在收集telnet相关资料~ 谢谢了

Allen520 发表于 2012-12-20 13:35:47

看看吧,希望有收获

jacktau 发表于 2012-12-31 20:58:59

谢谢分享~~~~~~~~~~~~~~~~~~~~

3050311118 发表于 2013-10-13 03:05:48

兄台 我想问下 这边为什么
使用keil mdk生成的程序不能直接仿真,需要将HEX文件的倒数第二行删除掉才行。
??????
我试了下 的确是,但是我编译其他单片机仿真的时候都不需要删除啊   莫非LPC的特殊?

dzf050727 发表于 2014-3-11 11:24:27

mark,正准备使用

sanjuncsw 发表于 2014-3-13 20:10:49

十分感谢,正在搞网络上的东西。

glyhw 发表于 2014-8-27 22:35:08

3050311118 发表于 2013-10-13 03:05
兄台 我想问下 这边为什么
使用keil mdk生成的程序不能直接仿真,需要将HEX文件的倒数第二行删除掉才行。
? ...

请教一下,怎么删去HEX文件的倒数第二行呀,谢谢

3050311118 发表于 2014-8-28 07:02:50

glyhw 发表于 2014-8-27 22:35
请教一下,怎么删去HEX文件的倒数第二行呀,谢谢

文本文档打开即可

lengque007 发表于 2014-8-29 16:44:16

LPC芯片不错,虽然没用过

glyhw 发表于 2014-9-2 13:26:51

3050311118 发表于 2014-8-28 07:02
文本文档打开即可

谢谢你的帮助
页: [1]
查看完整版本: lpc2103+enc28j60+uip1.0实现telnet功能