日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

LwIP Application Developers Manual12---Configuring lwIP

發布時間:2023/11/27 生活经验 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LwIP Application Developers Manual12---Configuring lwIP 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.前言

?

2.LwIP makefiles

  • With minimal features
C_SOURCES = \
src/api/err.c \
src/core/init.c \
src/core/mem.c \
src/core/memp.c \
src/core/netif.c \
src/core/pbuf.c \
src/core/stats.c \
src/core/udp.c \
src/core/ipv4/icmp.c \
src/core/ipv4/inet.c \
src/core/ipv4/ip.c \
src/core/ipv4/ip_addr.c \
src/core/ipv4/ip_frag.c \
src/netif/etharp.c \

?

  • With all other features (with any Sequential API)
C_SOURCES = \
src/api/netifapi.c \
src/api/err.c \
src/core/dhcp.c \
src/core/init.c \
src/core/mem.c \
src/core/memp.c \
src/core/netif.c \
src/core/pbuf.c \
src/core/raw.c \
src/core/stats.c \
src/core/udp.c \
src/core/ipv4/autoip.c \
src/core/ipv4/icmp.c \
src/core/ipv4/igmp.c \
src/core/ipv4/inet.c \
src/core/ipv4/ip.c \
src/core/ipv4/ip_addr.c \
src/core/ipv4/ip_frag.c \
src/core/snmp/asn1_dec.c \
src/core/snmp/asn1_enc.c \
src/core/snmp/mib2.c \
src/core/snmp/mib_structs.c \
src/core/snmp/msg_in.c \
src/core/snmp/msg_out.c \
src/netif/etharp.c \
  • With all other features (with Socket API)
C_SOURCES = \
src/api/api_lib.c \
src/api/api_msg.c \
src/api/err.c \
src/api/netbuf.c \
src/api/netifapi.c \
src/api/sockets.c \
src/api/tcpip.c \
src/core/dhcp.c \
src/core/init.c \
src/core/mem.c \
src/core/memp.c \
src/core/netif.c \
src/core/pbuf.c \
src/core/raw.c \
src/core/stats.c \
src/core/udp.c \
src/core/ipv4/autoip.c \
src/core/ipv4/icmp.c \
src/core/ipv4/igmp.c \
src/core/ipv4/inet.c \
src/core/ipv4/ip.c \
src/core/ipv4/ip_addr.c \
src/core/ipv4/ip_frag.c \
src/core/snmp/asn1_dec.c \
src/core/snmp/asn1_enc.c \
src/core/snmp/mib2.c \
src/core/snmp/mib_structs.c \
src/core/snmp/msg_in.c \
src/core/snmp/msg_out.c \
src/netif/etharp.c \

3. Lwipopts.h

lwipopts.h是一個用戶文件,你可以使用它來配置lwIP和它的所有模塊。你可以不需要定義每一個lwIP的選項,如果你沒有定義該選項,一個默認的選項將會被使用。因此,你的lwipopts.h可以重定義許多lwIP的行為

3.1 Module support (Code size)

你可以調整代碼的大小通過只編譯你想要的特性。如下列表給出了原裝lwIP編譯時支持的特性:

1. 默認包含

  • ARP?(LWIP_ARP)
  • IP?and?fragmentation?(IP_FRAG)?and?reassembly?(IP_REASSEMBLY)
  • Raw?IP?PCB?support?(LWIP_RAW)
  • UDP?(LWIP_UDP)?and?UDP-Lite?(LWIP_UDPLITE)
  • TCP?(LWIP_TCP)?--?this?is?a?big?one!
  • Statistics?(LWIP_STATS)

2.默認不包含的

  • DHCP?(LWIP_DHCP)
  • AUTOIP?(LWIP_AUTOIP)
  • SNMP?(LWIP_SNMP)
  • IGMP?(LWIP_IGMP)
  • PPP?(PPP_SUPPORT)

如果你想要改變這些特性,你只需要設置其相關的選項。舉例,如果你想要失能UDP并且使能DHCP,那么你可以在lwipopts.h文件中加入如下代碼:

// Disable UDP#define LWIP_UDP 0// Enable DHCP#define LWIP_DHCP 1

?

3.2?Memory management (RAM usage)

3.2.1.內存池

在一個嵌入式環境中,內存池(memory?pools)使內存的分配更加快速和高效。

lwIP提供一個靈活的方法來管理和組織內存池。lwIP在數據段中保留了一個固定大小的靜態內存,該內存被分成各種池來保存各種數據結構。

比如,一個內存池專門為存放結構體tcp_pcb,另一個內存池專門為存放結構體udp_pcb。

每個池可以被配置用來保存固定數目的數據結構,該數目的大小可以通過改變lwipopts.h文件里面定義的MEMP_NUM_*數值,比如,MEMP_NUM_TCP_PCB(控制tcp_pcb的數目)和MEMP_NUM_UDP_PCB(控制udp_pcb的數目)。

除了lwIP提供的標準內存池,用戶還可以自定義內存池。

3.2.2.Dynamic allocation:?mem_malloc

lwIP使用mem_malloc自定義函數來動態分配內存,因此,改變lwIP如何使用RAM是方便的。如下提供了3種解決方案:

1).(默認)lwIP自定義基于堆的函數mem_malloc。默認,lwIP使用一個已分配的靜態內存塊,像堆,來進行內存處理。使用MEM_SIZE可以改變lwIP堆的大小。

2).C標準庫中的malloc和free。如果你希望lwIP使用標準函數庫(由編譯器/架構提供)來進行內存管理,那么你就要定義選項MEM_LIBC_MALLOC。

3).內存池。lwIP可以仿真內存的動態分配,通過使用custom?memory?pools(詳情請查看相關章節)。如果要使用該解決方案則要包含了MEM_USE_POOLS和MEMP_USE_CUSTOM_POOLS選項和一個新的定制文件lwippools.h。

3.2.3.Understanding/changing memory usage?

lwIP使用內存來:

  • n?存放代碼(使用ROM還是RAM取決于你的系統)
  • n?靜態分配變量(一些有初始化,一些則沒有)
  • n?任務的堆棧
  • n?動態內存分配:堆和memp內存池

除非你使用C庫堆的實現(通過定義MEM_LIBC_MALLOC=1),否則已分配的動態內存必須在其它地方靜態分配。

這意味著你要保留一定大小的內存給堆(heap)或memp池使用,在運行時代碼會動態分配內存。堆和memp池的大小可以被調整來減少RAM的使用:

  • 有3種類型的pbufs:REF/ROM,RAM和POOL。POOL的大小由PBUF_POOL_SIZE*PBUF_POOL_BUFSIZE來決定。(TODO)
  • RAM?pbufs在內存中分配的大小由MEM_SIZE(該內存并不經常被使用,除了RAM?pbufs)決定。它在mem_memory中被分配。(TODO)
  • REF/ROM?pbufs和pcbs還有其他一些stuff通過專用的內存池并根據其結構類型來分配大小。結構體的數量由各種MEMP_NUM_*來定義。總的來說,這個內存被分配為memp_memory并且它包括了pbuf?POOL.(TODO)

然而,如果你在lwipopts.h文件里定義了MEMP_MEM_MALLOC的值為1,那么每一個動態分配的內存都來自堆(heap)(該大小被MEM_SIZE定義)。如果你也定義了MEM_LIBC_MALLOC的值為1,則lwIP并不需要額外的內存來動態分配內存,使用C庫的堆就夠用了。然而,你還是要確保這個堆足夠大來運行你的應用。為了調整各種MEMP_NUM_數值,你可以定義LWIP_STATS=1和LWIP_STATS_DISPLAY=1并且調用stats_display來查看每個池使用的具體情況(或者查看全局變量lwip_stats)。

3.3?Fine-tuning even more?

你可以打開lwip/src/include/lwip/opt.h文件來查看你可設置哪些選項。該文件注釋完整并且解釋了多少選項可以被使用。

?4.?lwIP code size

todo?

5.?Maximizing throughput

todo

6. Tuning TCP

todo?

7.?Custom memory pools

?todo

?

轉載于:https://www.cnblogs.com/smartjourneys/p/8214613.html

總結

以上是生活随笔為你收集整理的LwIP Application Developers Manual12---Configuring lwIP的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲一区在线免费 | 欧美不卡在线观看 | 国产在线视频资源 | 韩国三色电费2024免费吗怎么看 | 色香视频首页 | 正在播放经典国语对白 | 日韩一区二| 999精品一区 | 免费观看黄色小视频 | 久国久产久精永久网页 | 欧美中文字幕在线 | 国产孕妇一区二区三区 | 一区二区在线观看av | 婷婷伊人五月天 | 手机av在线播放 | 国产 xxxx | 欧美夫妻性生活视频 | 国产v亚洲v天堂无码 | 免费在线黄 | 亚洲亚洲人成综合网络 | 国产成人三级在线观看视频 | 色婷婷av一区二区三区四区 | 黄色在线免费观看 | 超碰h | 中文字幕日韩在线播放 | 91传媒在线视频 | 美女被猛网站 | 蜜臀av一区二区三区激情综合 | 99啪啪| 人人妻人人澡人人爽精品日本 | 成人免费毛片入口 | 极品销魂美女一区二区三区 | 日批免费观看视频 | 中文字幕日本一区 | 日韩欧美极品 | 91国自啪| 欧美黄大片 | 国产日韩精品在线观看 | 精品黑人一区二区三区观看时间 | 久久久婷 | 精品欧美 | 欧美日韩不卡一区 | 黄视频在线观看免费 | 欧美亚洲伦理 | 久久午夜夜伦鲁鲁一区二区 | 一区二区三区精品 | 伊人久久久久久久久 | 免费成人av | 图片区小说区视频区 | 成人禁污污啪啪入口 | 少妇高潮一区二区三区69 | 日本精品一区二区三区在线观看 | 国产一区二区在线播放视频 | 国产一区二区三区四区 | 日韩电影一区二区在线观看 | 午夜影视剧场 | 人人妻人人澡人人爽人人欧美一区 | 亚洲不卡av一区二区 | 麻豆回家视频区一区二 | 亲嘴脱内衣内裤 | 九色麻豆 | 痴汉电车在线观看 | 五月天婷婷色 | 青娱乐久久 | 91国模少妇一区二区三区 | 欧州一区二区三区 | 欧美日韩国产中文字幕 | 超碰97在线人人 | 自拍偷拍第二页 | 久久精品国产熟女亚洲AV麻豆 | 日韩欧美国产一区二区三区 | 成人在线视频网站 | 无码熟妇人妻av | 男人天堂资源 | 僵尸叔叔在线观看国语高清免费观看 | 亚洲黄色小视频 | 3d动漫啪啪精品一区二区中文字幕 | 亚洲香蕉| 免费欧美大片 | 欧美日韩专区 | 麻豆精品国产 | 黑鬼巨鞭白妞冒白浆 | 少妇综合 | 欧美一区二区三区影视 | 特黄视频在线观看 | 性淫bbwbbwbbw| 成年人视频网站 | 国产欧美日韩综合精品一区二区 | 在线 日本 制服 中文 欧美 | 玉女心经是什么意思 | 久久中文字幕国产 | 蜜桃av鲁一鲁一鲁一鲁俄罗斯的 | 国产黑丝在线观看 | 日韩不卡一二三区 | 日本一区视频在线观看 | 在线激情小视频 | 黑名单上的人全集免费观看 | 亚洲视频一区二区 | av激情在线 |