搜索
bottom↓
回复: 31

在RT-Thread成功移植uIP,分享源码。。。

[复制链接]

出0入0汤圆

发表于 2010-11-18 21:09:13 | 显示全部楼层 |阅读模式
闲闷得慌,想吧uIP1.0移植到RT-Thread试试。花了一下午时间,终于跑起来了。

软件平台: RT-Thread Kernel+ uIP1.0

硬件平台: XX DevBoard(STM32F107RC)

如果移植上uIP,那么所消耗的RAM和Code的资源将比LwIP的要少的多。这次移植加上了telnet的功能。
不废话了,上图看看RT-Thread+uIP跑起来的结果:


(原文件名:rtt-uip.jpg)

工程源代码:
点击此处下载 ourdev_598930CU3L93.rar(文件大小:655K) (原文件名:uIP_On_RTT.rar)

阿莫论坛20周年了!感谢大家的支持与爱护!!

你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。

出0入0汤圆

发表于 2010-11-18 23:00:35 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-11-18 23:04:38 | 显示全部楼层
Good!

uIP的驱动框架是什么样的?能够和现在已有的lwip驱动框架融合吗?如果可行的话,可以把它放到svn上来。
头像被屏蔽

出0入0汤圆

发表于 2010-11-18 23:06:28 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

 楼主| 发表于 2010-11-18 23:07:11 | 显示全部楼层
什么样的融合?
能放到svn上,我很高兴!

出0入0汤圆

发表于 2010-11-18 23:20:06 | 显示全部楼层
就是说,驱动能够重用,切换TCP/IP协议栈时,上下层都可以不用修改,这个是最理想的情况了。

上层:应用
下层:驱动

出0入0汤圆

 楼主| 发表于 2010-11-19 09:14:19 | 显示全部楼层
完全可以的。
uIP很独立的。

出0入0汤圆

发表于 2010-11-19 09:17:37 | 显示全部楼层
回复【4楼】itspy  
什么样的融合?
能放到svn上,我很高兴!
-----------------------------------------------------------------------

请联系我 (bernard.xiong # gmail.com),我会开放uip组件维护人的权限给你。

出0入0汤圆

发表于 2010-11-19 09:19:56 | 显示全部楼层
不错

出0入0汤圆

发表于 2010-11-19 10:20:03 | 显示全部楼层
恭喜 itspy

出0入0汤圆

发表于 2010-11-20 19:09:56 | 显示全部楼层
cool,支持一下,rtt又多了一个模块了

出0入0汤圆

发表于 2010-11-20 19:16:44 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-11-21 10:00:04 | 显示全部楼层
真的很酷,顶更多高手的加入!

出0入0汤圆

发表于 2010-11-21 11:43:15 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-1 09:46:49 | 显示全部楼层
这个组件现在的稳定程度如何?

出0入0汤圆

 楼主| 发表于 2010-12-1 10:38:43 | 显示全部楼层
楼主位的工程很过时了。
现在已经又有所更新。

出0入0汤圆

发表于 2010-12-1 12:56:17 | 显示全部楼层
itspy能不能给我一份移植好uIP的MDK工程?最新的。

出0入0汤圆

发表于 2010-12-1 13:12:48 | 显示全部楼层
uIP 性能相比 lwip 还是有差距的

出0入0汤圆

发表于 2010-12-1 13:23:56 | 显示全部楼层
我现在用0.3.0的lwIP。结果以太网没有反应,RJ45俩个LED一直处于亮的状态。

出0入0汤圆

 楼主| 发表于 2010-12-1 16:10:43 | 显示全部楼层
回复【16楼】applex 白菜
itspy能不能给我一份移植好uip的mdk工程?最新的。
-----------------------------------------------------------------------

会提供的,
那时IAR和MDK和MDK的+RT-Thread工程包一起提供

出0入0汤圆

 楼主| 发表于 2010-12-1 16:12:32 | 显示全部楼层
回复【18楼】applex 白菜
我现在用0.3.0的lwip。结果以太网没有反应,rj45俩个led一直处于亮的状态。
-----------------------------------------------------------------------

不知道你用哪个版本,030的有点老了吧,工程应该是可以跑LWIP的,
不知道你的硬件是什么版本,
现在最新已经是040beta1了

出0入0汤圆

发表于 2010-12-1 16:45:06 | 显示全部楼层
都是牛人

出0入0汤圆

发表于 2010-12-1 17:45:02 | 显示全部楼层
现在绿色的LED闪烁,还是ping 不通,问过Bernard,他说看中断有没有进。我测试后,发现可能没有进。
static void RCC_Configuration(void)
{
    /* enable spi1 clock */
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);

    /* enable gpiob port clock */
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOC | RCC_APB2Periph_AFIO, ENABLE);
}

static void NVIC_Configuration(void)
{
    NVIC_InitTypeDef NVIC_InitStructure;

    /* Configure one bit for preemption priority */
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);

    /* Enable the EXTI1 Interrupt */
    NVIC_InitStructure.NVIC_IRQChannel = EXTI1_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure);
}

static void GPIO_Configuration()
{
        GPIO_InitTypeDef GPIO_InitStructure;
    EXTI_InitTypeDef EXTI_InitStructure;

        /* configure PC1 as external interrupt */
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;
        GPIO_Init(GPIOC, &GPIO_InitStructure);

    /* Configure SPI1 pins:  SCK, MISO and MOSI ----------------------------*/
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_Init(GPIOA, &GPIO_InitStructure);

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
        GPIO_Init(GPIOC, &GPIO_InitStructure);

    /* Connect ENC28J60 EXTI Line to GPIOC Pin 1 */
    GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource1);

    /* Configure ENC28J60 EXTI Line to generate an interrupt on falling edge */
    EXTI_InitStructure.EXTI_Line = EXTI_Line1;
    EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
    EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
    EXTI_InitStructure.EXTI_LineCmd = ENABLE;
    EXTI_Init(&EXTI_InitStructure);

        /* Clear the Key Button EXTI line pending bit */
        EXTI_ClearITPendingBit(EXTI_Line1);
}

static void SetupSPI (void)
{
    SPI_InitTypeDef SPI_InitStructure;
    SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
    SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
    SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
    SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
    SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
    SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
    SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_4;
    SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
    SPI_InitStructure.SPI_CRCPolynomial = 7;
    SPI_Init(SPI1, &SPI_InitStructure);
    SPI_Cmd(SPI1, ENABLE);
}

void EXTI1_IRQHandler(void)
{
    extern void enc28j60_isr(void);

    /* enter interrupt */
    rt_interrupt_enter();

    enc28j60_isr();

    /* Clear the Key Button EXTI line pending bit */
    EXTI_ClearITPendingBit(EXTI_Line1);

    /* leave interrupt */
    rt_interrupt_leave();
}

我使用的中断管脚是PC1.谁帮我看看有什么问题,我看不出来。还没有看enc28j60是否有中断过来。没有示波器现在。

出0入0汤圆

 楼主| 发表于 2010-12-2 09:41:19 | 显示全部楼层
进不了中断,软件和硬件都有可能是原因
应该从软件各初始化配置,和硬件链接上看看了。

出0入0汤圆

发表于 2010-12-2 09:46:50 | 显示全部楼层
昨天测试过了,中断是可以进的。

出0入0汤圆

发表于 2010-12-2 10:11:13 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-7 16:59:32 | 显示全部楼层
下载下来,调试下

出0入0汤圆

发表于 2012-1-19 10:10:48 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-6-15 15:04:35 | 显示全部楼层
我代表党中央对你无私的贡献表示真心的感谢!

出0入0汤圆

发表于 2012-6-19 16:54:51 | 显示全部楼层
本帖最后由 wandersky 于 2012-6-19 16:56 编辑

markmarkmarkmarkmark

出0入0汤圆

发表于 2014-1-25 10:46:37 | 显示全部楼层
mark 准备资源少的时候参考
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-10-2 23:18

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表