我们从2011年坚守至今,只想做存粹的技术论坛。  由于网站在外面,点击附件后要很长世间才弹出下载,请耐心等待,勿重复点击不要用Edge和IE浏览器下载,否则提示不安全下载不了

 找回密码
 立即注册
搜索
查看: 1139|回复: 1

一步一步教你移植uIP0.9到8051+RTL8019AS

[复制链接]

该用户从未签到

4

主题

52

回帖

0

积分

二级逆天

积分
0

终身成就奖

QQ
发表于 2016-10-29 11:58:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区

您需要 登录 才可以下载或查看,没有账号?立即注册

×

1. google一下uip,点击进入主页 http://www.sics.se/~adam/uip/index.php/Main_Page
当前最新的uIP版本是 1.0,这个版本比较复杂,所以还是移植历史版本吧.
打开 http://www.sics.se/~adam/old-uip/ 下载0.9版:
http://www.sics.se/~adam/download/?f=uip-0.9.tar.gz

2. 打开Keil新建项目uIP0.9.uv2, 设置项目属性.
memory_model 设置为large 模式,这样默认的存储方式是xdata
因为uIP0.9编译后占用20K rom, 所以必须选一个32K(>20K)的rom的单片机,
比如Device可设置为SST89x58或者SST89x516xx,
解压缩官方下载的uIP0.9压缩包,添加文件至项目,
需添加至项目的文件有:uip\uip.c, uip.c\uip.h, uip.c\uip_arch.h,
uip.c\uip_arp.c,uip.c\uip_arp.h
unix\main.c, unix\uip_arch.c, unix\uipopt.h,
apps\httpd\所有文件

3. 因为data是系统关键字, 所以标识符data => dat
以下文件需要改动: fs.h, fsdata.h,httpd.c

4. 为RTL8019AS 编写驱动程序(具体如何操作寄存器老古的网站有详细的教程),
内容在压缩包中的RTL8019AS.c, RTL8019AS.h
需要更改main.h中的如下地方:
include "tapdev.h" => #include "rtl8019as.h"
tapdev_init() -> rtl8019as_init()
tapdev_send() -> rtl8019as_send()
tapdev_read() -> rtl8019as_read()

5. fsdata.c 首行添加 #include "fsdata.h"
关键字替换:
static const char -> const char code
const struct fsdata_file -> const struct fsdata_file code

fsdata.h 文件末尾添加:
#define FS_ROOT file_tcp_header_html
#define FS_NUMFILES 14

const char code data_cgi_files[];
const char code data_cgi_stats[];
const char code data_cgi_tcp[];
const char code data_img_bg_png[];
const char code data_about_html[];
const char code data_control_html[];
const char code data_404_html[];
const char code data_files_footer_plain[];
const char code data_files_header_html[];
const char code data_index_html[];
const char code data_stats_footer_plain[];
const char code data_stats_header_html[];
const char code data_tcp_footer_plain[];
const char code data_tcp_header_html[];
const struct fsdata_file code file_cgi_files[];
const struct fsdata_file code file_cgi_stats[];
const struct fsdata_file code file_cgi_tcp[];
const struct fsdata_file code file_img_bg_png[];
const struct fsdata_file code file_about_html[];
const struct fsdata_file code file_control_html[];
const struct fsdata_file code file_404_html[];
const struct fsdata_file code file_files_footer_plain[];
const struct fsdata_file code file_files_header_html[];
const struct fsdata_file code file_index_html[];
const struct fsdata_file code file_stats_footer_plain[];
const struct fsdata_file code file_stats_header_html[];
const struct fsdata_file code file_tcp_footer_plain[];
const struct fsdata_file code file_tcp_header_html[];


6. fs.c 第55行删除: #include "fsdata.c"

7. uipopt.h



181行: #define UIP_FIXEDETHADDR 0 -> 1
299行: #define UIP_ACTIVE_OPEN 1 ->0
497行: #define BYTE_ORDER LITTLE_ENDIAN -> BIG_ENDIAN
280行: #define UIP_UDP_APPCALL udp_appcall -> httpd_appcall

更改单片机的IP地址和子网掩码(比如我的demo项目改为192.168.2.254,255.255.0.0)
文件末尾添加:
#ifndef NULL
#define NULL (void *)0
#endif /* NULL */


8. httpd.c
删除以下内容:
extern const struct fsdata_file file_index_html;
extern const struct fsdata_file file_404_html;
220行更改:
fs_open(file_index_html.name, &fsfile); => file_index_html->name
224行同上更改

9. 烧录,运行。
命令提示符下运行 c:\>ping 192.168.2.254
回复

使用道具 举报

  • TA的每日心情
    开心
    2024-10-7 21:17
  • 签到天数: 103 天

    [LV.6]常住居民II

    49

    主题

    1万

    回帖

    7万

    积分

    三级逆天

    积分
    73180

    终身成就奖特殊贡献奖原创先锋奖社区居民忠实会员社区劳模最爱沙发社区明星原创达人优秀斑竹奖宣传大使奖

    QQ
    发表于 2016-10-30 04:03:31 | 显示全部楼层
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    公告:服务器刚移机,
    大家请不要下载东西。
    会下载失败


    Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

    本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请发帖投诉

    ( 闽ICP备2024076463号-1 ) 论坛技术支持QQ群171867948 ,论坛问题,充值问题请联系QQ1308068381

    平平安安
    TOP
    快速回复 返回顶部 返回列表