rtt4.0.3,使用lwip,ppp拨号联网。但无法进入低功耗。经过排查,有个名称为tcpip的timer100ms定时启动一次。目前排查疑似lwip的问题,但不清楚具体怎么样才能更改这个时间?或者干脆进低功耗的时候把这个定时器停掉
查看更多
找到这个 timer 是干啥的,删掉没猜错的话,是检测连 internet 网络状态的。可以看看我的文章怎么裁剪 lwip
如果待机时要关闭网络,就停掉这个定时器,关闭网络
const struct lwip_cyclic_timer lwip_cyclic_timers[] = {#if LWIP_TCP /* The TCP timer is a special case: it does not have to run always and is triggered to start from TCP using tcp_timer_needed() */ {TCP_TMR_INTERVAL, HANDLER(tcp_tmr)},#endif /* LWIP_TCP */#if LWIP_IPV4#if IP_REASSEMBLY {IP_TMR_INTERVAL, HANDLER(ip_reass_tmr)},#endif /* IP_REASSEMBLY */#if LWIP_ARP {ARP_TMR_INTERVAL, HANDLER(etharp_tmr)},#endif /* LWIP_ARP */#if LWIP_DHCP {DHCP_COARSE_TIMER_MSECS, HANDLER(dhcp_coarse_tmr)}, {DHCP_FINE_TIMER_MSECS, HANDLER(dhcp_fine_tmr)},#endif /* LWIP_DHCP */#if LWIP_AUTOIP {AUTOIP_TMR_INTERVAL, HANDLER(autoip_tmr)},#endif /* LWIP_AUTOIP */#if LWIP_IGMP {IGMP_TMR_INTERVAL, HANDLER(igmp_tmr)},#endif /* LWIP_IGMP */#endif /* LWIP_IPV4 */#if LWIP_DNS {DNS_TMR_INTERVAL, HANDLER(dns_tmr)},#endif /* LWIP_DNS */#if LWIP_IPV6 {ND6_TMR_INTERVAL, HANDLER(nd6_tmr)},#if LWIP_IPV6_REASS {IP6_REASS_TMR_INTERVAL, HANDLER(ip6_reass_tmr)},#endif /* LWIP_IPV6_REASS */#if LWIP_IPV6_MLD {MLD6_TMR_INTERVAL, HANDLER(mld6_tmr)},#endif /* LWIP_IPV6_MLD */#endif /* LWIP_IPV6 */};
const struct lwip_cyclic_timer lwip_cyclic_timers[] = {
#if LWIP_TCP
/* The TCP timer is a special case: it does not have to run always and
is triggered to start from TCP using tcp_timer_needed() */
{TCP_TMR_INTERVAL, HANDLER(tcp_tmr)},
#endif /* LWIP_TCP */
#if LWIP_IPV4
#if IP_REASSEMBLY
{IP_TMR_INTERVAL, HANDLER(ip_reass_tmr)},
#endif /* IP_REASSEMBLY */
#if LWIP_ARP
{ARP_TMR_INTERVAL, HANDLER(etharp_tmr)},
#endif /* LWIP_ARP */
#if LWIP_DHCP
{DHCP_COARSE_TIMER_MSECS, HANDLER(dhcp_coarse_tmr)},
{DHCP_FINE_TIMER_MSECS, HANDLER(dhcp_fine_tmr)},
#endif /* LWIP_DHCP */
#if LWIP_AUTOIP
{AUTOIP_TMR_INTERVAL, HANDLER(autoip_tmr)},
#endif /* LWIP_AUTOIP */
#if LWIP_IGMP
{IGMP_TMR_INTERVAL, HANDLER(igmp_tmr)},
#endif /* LWIP_IGMP */
#endif /* LWIP_IPV4 */
#if LWIP_DNS
{DNS_TMR_INTERVAL, HANDLER(dns_tmr)},
#endif /* LWIP_DNS */
#if LWIP_IPV6
{ND6_TMR_INTERVAL, HANDLER(nd6_tmr)},
#if LWIP_IPV6_REASS
{IP6_REASS_TMR_INTERVAL, HANDLER(ip6_reass_tmr)},
#endif /* LWIP_IPV6_REASS */
#if LWIP_IPV6_MLD
{MLD6_TMR_INTERVAL, HANDLER(mld6_tmr)},
#endif /* LWIP_IPV6_MLD */
#endif /* LWIP_IPV6 */
};
lwip/src/core/timeouts.c中有很多定时器,目前全给注释掉了,还没有验证这些定时器是不是必须的。全是一些几百毫秒的定时器
欢迎发表与嵌入式相关的技术分享、开发技巧、工具介绍、技术设想、职业心得、行业评论等对他人有启发,排版优雅的文章
回到 顶部
发布 问题
分享 好友
手机 浏览
投诉 建议
回到 底部