搜索
bottom↓
回复: 7

关于加快RT_Thread系统时钟导致lwip无法正常初始化

[复制链接]

出0入0汤圆

发表于 2015-9-29 10:21:41 | 显示全部楼层 |阅读模式
因为功能需要,希望将RT_thread的系统时钟时间片加快到100μs。于是我修改了rtconfig.h中的RT_TICK_PER_SECOND,改为了10000;但是程序运行后lwip初始化过不去了。提高RT_thread系统时钟后,lwip需要进行什么修改。请指教,谢谢!

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

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

出0入0汤圆

发表于 2015-9-29 10:43:23 | 显示全部楼层
只能自己查了

出0入0汤圆

 楼主| 发表于 2015-9-29 11:14:37 | 显示全部楼层

我想问问,有没有提高系统时钟后lwip网络正常运行的情况啊。会不会不允许这么改?

出0入8汤圆

发表于 2015-9-29 14:53:40 | 显示全部楼层
给一点建议,需要高精度的定时,请使用额外的硬件定时器,而不要将OS Tick缩短至这么短
一般来说,1ms是合理的
将OS Tick再缩短下去,会加大系统功耗负担等
当然这个问题,你可以继续定位下去,看看哪里出错了,再来告诉大家,一块学习下。

出0入0汤圆

 楼主| 发表于 2015-9-29 15:44:48 | 显示全部楼层
security 发表于 2015-9-29 14:53
给一点建议,需要高精度的定时,请使用额外的硬件定时器,而不要将OS Tick缩短至这么短
一般来说,1ms是合 ...

我倒不是为了定时,而是需要线程能100μs切换一下。
目前改了RT_TICK_PER_SECOND 提高到10000后,在lwip初始化过程中static void tcpip_thread(void *arg)中的sys_timeouts_mbox_fetch(&mbox, (void **)&msg);这一句停住了,好像收不到message。还不知道是什么原因。

出0入8汤圆

发表于 2015-9-29 16:31:22 | 显示全部楼层
本帖最后由 security 于 2015-9-29 16:37 编辑
tyj07 发表于 2015-9-29 15:44
我倒不是为了定时,而是需要线程能100μs切换一下。
目前改了RT_TICK_PER_SECOND 提高到10000后,在lwip ...


1、过于频繁的线程切换,同样会加大系统的负担,不推荐。
2、LWIP的移植,默认的tick精度等级只到毫秒,你可以去看看
  1. u32_t sys_arch_mbox_fetch(sys_mbox_t *mbox, void **msg, u32_t timeout)
  2. {
  3.     rt_err_t ret;
  4.     s32_t t;
  5.     u32_t tick;

  6.     RT_DEBUG_NOT_IN_INTERRUPT;

  7.     /* get the begin tick */
  8.     tick = rt_tick_get();

  9.     if(timeout == 0)
  10.         t = RT_WAITING_FOREVER;
  11.     else
  12.     {
  13.         /* convirt msecond to os tick */
  14.         if (timeout < (1000/RT_TICK_PER_SECOND))
  15.             t = 1;
  16.         else
  17.             t = timeout / (1000/RT_TICK_PER_SECOND);
  18.     }
复制代码

这边,你应该可以看出,如果你把RT_TICK_PER_SECOND加大,大于1000HZ的话,这边就会产生除0的异常
或许,这是你的问题症结所在,期待你的解答
3、当然,这是RT-Thread的bug,要想准确的话,可以直接调用rt_tick_from_millisecond来计算
但从工程实践来讲,RT_TICK_PER_SECOND的底线,一般也就到1000HZ。

出0入0汤圆

 楼主| 发表于 2015-9-29 16:36:26 | 显示全部楼层
security 发表于 2015-9-29 16:31
1、过于频繁的线程切换,同样会加大系统的负担,不推荐。
2、LWIP的移植,默认的tick精度等级只到毫秒, ...

嗯,好的。非常感谢你的讲解,看来得用其他方法来实现功能咯。

出0入0汤圆

发表于 2015-9-29 17:08:13 | 显示全部楼层
security 发表于 2015-9-29 16:31
1、过于频繁的线程切换,同样会加大系统的负担,不推荐。
2、LWIP的移植,默认的tick精度等级只到毫秒, ...

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

本版积分规则

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

GMT+8, 2024-10-19 21:53

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

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