色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

rt-thread系統(tǒng)運(yùn)行期改變網(wǎng)卡配置

冬至子 ? 來源:出出啊 ? 作者:出出啊 ? 2023-11-28 17:05 ? 次閱讀

前言

忘記在哪個(gè)論壇問題里回答過這個(gè)了,rtt 配置 DHCP 或者靜態(tài) ip 是靜態(tài)配置的。它只能在 menuconfig 或者 setting 的時(shí)候,或選擇 DHCP 編譯或選擇 靜態(tài) ip編譯,系統(tǒng)運(yùn)行起來以后如果想開啟或關(guān)閉 DHCP 就做不到了。

相信每一個(gè)做產(chǎn)品的打工人的需求都是動(dòng)態(tài)配置的,需要在系統(tǒng)啟動(dòng)以后,運(yùn)行期開啟或關(guān)閉 DHCP。

下面簡單講講怎么做。

第一步,配置 lwip 開啟 DHCP

這一步是一定要的,因?yàn)檫@一步是使能 lwip 的dhcp 功能,只有使能了之后,后面才有開啟/關(guān)閉 DHCP 的意義。

第二步,定義網(wǎng)絡(luò)配置全局變量

首先,定義如下結(jié)構(gòu)體類型(示意代碼):

typedef struct __network_config{
rt_bool_t dhcp_enable;
char *lan_ip;
char *lan_nm;
char *lan_gw;
}NetworkConfig;

然后,定義一個(gè)全局變量 NetworkConfig network;。

第三步,修改 “ethernetif.c” 文件

這個(gè)文件修改的地方全部和 DHCP 相關(guān),所以,在這個(gè)文件里搜索 “LWIP_DHCP” 這個(gè)宏,+凡是使用 “LWIP_DHCP” 宏的地方都需要進(jìn)行修改+。

聲明 NetworkConfig network; 變量

或者 extern 或者 include 頭文件,首先把前邊定義的全局變量在當(dāng)前文件里聲明一下。

netdev_flags_sync

修改前,

#if LWIP_DHCP
netdev_low_level_set_dhcp_status(netdev, RT_TRUE);
#else
netdev_low_level_set_dhcp_status(netdev, RT_FALSE);
#endif

修改后,

#if LWIP_DHCP
netdev_low_level_set_dhcp_status(netdev, network.dhcp_enable);
#else
netdev_low_level_set_dhcp_status(netdev, RT_FALSE);
#endif

修改后,我們根據(jù)全局變量 network 中的配置來決定設(shè)置 DHCP 狀態(tài)。

eth_netif_device_init

修改前,

#if LWIP_DHCP
/* if this interface uses DHCP, start the DHCP client */
dhcp_start(ethif->netif);
#endif

修改后,

#if LWIP_DHCP
/* if this interface uses DHCP, start the DHCP client */
if (network.dhcp_enable == RT_TRUE) {
dhcp_start(ethif->netif);
}
#endif

修改后,根據(jù)全局變量 network 中的配置來決定是否打開 DHCP。

eth_device_init_with_flag

修改前,

#if !LWIP_DHCP
ipaddr.addr = inet_addr(RT_LWIP_IPADDR);
gw.addr = inet_addr(RT_LWIP_GWADDR);
netmask.addr = inet_addr(RT_LWIP_MSKADDR);
#else
IP4_ADDR(&ipaddr, 0, 0, 0, 0);
IP4_ADDR(&gw, 0, 0, 0, 0);
IP4_ADDR(&netmask, 0, 0, 0, 0);
#endif

修改后,

#if !LWIP_DHCP
ipaddr.addr = inet_addr(RT_LWIP_IPADDR);
gw.addr = inet_addr(RT_LWIP_GWADDR);
netmask.addr = inet_addr(RT_LWIP_MSKADDR);
#else
if (network.dhcp_enable != RT_TRUE) {
ipaddr.addr = inet_addr(network.lan_ip);
gw.addr = inet_addr(network.lan_gw);
netmask.addr = inet_addr(network.lan_nm);
} else {
IP4_ADDR(&ipaddr, 0, 0, 0, 0);
IP4_ADDR(&gw, 0, 0, 0, 0);
IP4_ADDR(&netmask, 0, 0, 0, 0);
}
#endif

修改后,根據(jù)全局變量 network 中的配置來選擇初始化網(wǎng)卡的 ip 地址。

eth_device_deinit

修改前,

#if LWIP_DHCP
dhcp_stop(netif);
dhcp_cleanup(netif);
#endif

修改后,

#if LWIP_DHCP
if (network.dhcp_enable == RT_TRUE) {
dhcp_stop(netif);
dhcp_cleanup(netif);
}
#endif

卸載網(wǎng)卡設(shè)備時(shí),需要根據(jù)當(dāng)前是否開啟了 DHCP 來決定需不需要停止和清理 DHCP。

第四步,應(yīng)用程序接口

應(yīng)用程序里,無論使用哪種解數(shù),千方百計(jì)修改前文定義的全局變量。之后就剩下打開/關(guān)閉 DHCP、修改本地 ip 地址、修改子網(wǎng)掩碼、修改網(wǎng)關(guān) ip 等等常規(guī)操作。

通過如下代碼,在系統(tǒng)運(yùn)行期打開或者關(guān)閉 DHCP:

struct netdev *netdev = RT_NULL;
netdev = netdev_get_by_name("e0");
netdev_dhcp_enabled(netdev, (network.dhcp_enable == RT_TRUE));

注:如果關(guān)閉 DHCP 之后,想修改 ip 地址為靜態(tài) ip 。需要另行設(shè)置。
注:如上代碼只是示意性代碼,并不保證實(shí)際使用中包含漏洞。

在系統(tǒng)運(yùn)行期修改 ip 地址的主要代碼如下:

struct netdev *netdev = RT_NULL;
ip_addr_t addr;
netdev = netdev_get_by_name("e0");
inet_aton(network.lan_ip, &addr);
netdev_set_ipaddr(netdev, &addr);

注:如上代碼只是示意性代碼,并不保證實(shí)際使用中包含漏洞。

運(yùn)行期修改子網(wǎng)掩碼和網(wǎng)關(guān) ip 的過程同上,不同的是調(diào)用的函數(shù)不一樣。

總結(jié)

以上操作已經(jīng)在項(xiàng)目中得到驗(yàn)證,目前運(yùn)行良好。

請自行解決輸入的 ip 地址字符串是否符合格式問題。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 子網(wǎng)掩碼
    +關(guān)注

    關(guān)注

    2

    文章

    41

    瀏覽量

    11186
  • DHCP
    +關(guān)注

    關(guān)注

    0

    文章

    105

    瀏覽量

    20200
  • LwIP協(xié)議
    +關(guān)注

    關(guān)注

    0

    文章

    11

    瀏覽量

    9077
  • RT-Thread
    +關(guān)注

    關(guān)注

    32

    文章

    1372

    瀏覽量

    41556
收藏 0人收藏

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    RT-Thread NUC97x 移植 LVGL

    不涉及 rt-thread 驅(qū)動(dòng),但是它是 LVGL 和 rt-thread 的接口。LVGL 在 rt-thread運(yùn)行的基石。
    發(fā)表于 07-08 09:37 ?1659次閱讀

    RT-Thread編程指南

    RT-Thread編程指南——RT-Thread開發(fā)組(2015-03-31)。RT-Thread做為國內(nèi)有較大影響力的開源實(shí)時(shí)操作系統(tǒng),本文是RT
    發(fā)表于 11-26 16:06 ?0次下載

    RT-Thread用戶手冊

    RT-Thread用戶手冊——本書是RT-Thread的編程手冊,用于指導(dǎo)在RT-Thread實(shí)時(shí)操作系統(tǒng)環(huán)境下如何進(jìn)行編 程。
    發(fā)表于 11-26 16:16 ?0次下載

    RT-Thread軟件包定義和使用

    RT-Thread軟件包是運(yùn)行RT-Thread物聯(lián)網(wǎng)操作系統(tǒng)平臺(tái)上,面向不同應(yīng)用領(lǐng)域的通用軟件組件 。RT-Thread 同時(shí)提供了開放
    的頭像 發(fā)表于 05-21 11:29 ?1.1w次閱讀
    <b class='flag-5'>RT-Thread</b>軟件包定義和使用

    RT-thread】如何將RT-thread系統(tǒng)移植到stm32

    設(shè)備,RT-Thread 又能使用在線的軟件包管理工具,配合系統(tǒng)配置工具實(shí)現(xiàn)直觀快速的模塊化裁剪,無縫地
    發(fā)表于 12-08 11:06 ?21次下載
    【<b class='flag-5'>RT-thread</b>】如何將<b class='flag-5'>RT-thread</b><b class='flag-5'>系統(tǒng)</b>移植到stm32

    RT-Thread STM32 配置系統(tǒng)時(shí)鐘(使用外部晶振)

    RT-Thread STM32 配置系統(tǒng)時(shí)鐘開發(fā)環(huán)境芯片:STM32F103RCT6RT-Thread Studio: V1.0.6(現(xiàn)在已經(jīng)更新到1.1.3,由于本人使用RTT開發(fā)已
    發(fā)表于 12-14 18:45 ?15次下載
    <b class='flag-5'>RT-Thread</b> STM32 <b class='flag-5'>配置</b><b class='flag-5'>系統(tǒng)</b>時(shí)鐘(使用外部晶振)

    RT-Thread Studio驅(qū)動(dòng)SD卡

    RT-Thread Studio驅(qū)動(dòng)SD卡前言一、創(chuàng)建基本工程1、創(chuàng)建Bootloader2、創(chuàng)建項(xiàng)目工程二、配置RT-Thread Settings三、代碼分析1.引入庫2.讀入數(shù)據(jù)四、效果驗(yàn)證
    發(fā)表于 12-27 19:13 ?20次下載
    <b class='flag-5'>RT-Thread</b> Studio驅(qū)動(dòng)SD卡

    RT-Thread開源作品秀】基于RT-Thread的星務(wù)平臺(tái)研究

    本作品為了驗(yàn)證星務(wù)軟件在RT-Thread系統(tǒng)運(yùn)行的可行性,底層是否能夠驅(qū)動(dòng)星務(wù)軟件,同時(shí)擴(kuò)展RT-Thread應(yīng)用范圍。ART-Pi作為衛(wèi)星下位機(jī),...
    發(fā)表于 01-25 18:26 ?6次下載
    【<b class='flag-5'>RT-Thread</b>開源作品秀】基于<b class='flag-5'>RT-Thread</b>的星務(wù)平臺(tái)研究

    RT-Thread全球技術(shù)大會(huì):RT-Thread構(gòu)建配置系統(tǒng)

    RT-Thread全球技術(shù)大會(huì):RT-Thread構(gòu)建配置系統(tǒng),構(gòu)建系統(tǒng)也稱為組件自動(dòng)化,通常需要通過腳本聲明構(gòu)建行為。 ? ? ? ? 審
    的頭像 發(fā)表于 05-27 14:39 ?1461次閱讀
    <b class='flag-5'>RT-Thread</b>全球技術(shù)大會(huì):<b class='flag-5'>RT-Thread</b>構(gòu)建<b class='flag-5'>配置</b><b class='flag-5'>系統(tǒng)</b>

    RT-Thread全球技術(shù)大會(huì):RT-Thread上的單元測試框架與運(yùn)行測試用例

    RT-Thread全球技術(shù)大會(huì):RT-Thread上的單元測試框架與運(yùn)行測試用例 ? ? ? ? ? ? ? ? 審核編輯:彭靜
    的頭像 發(fā)表于 05-27 16:21 ?1836次閱讀
    <b class='flag-5'>RT-Thread</b>全球技術(shù)大會(huì):<b class='flag-5'>RT-Thread</b>上的單元測試框架與<b class='flag-5'>運(yùn)行</b>測試用例

    RT-Thread學(xué)習(xí)筆記 RT-Thread的架構(gòu)概述

    的種種優(yōu)越之處。RT-Thread 是一款完全由國內(nèi)團(tuán)隊(duì)開發(fā)維護(hù)的嵌入式實(shí)時(shí)操作系統(tǒng)(RTOS),具有完全的自主知識(shí)產(chǎn)權(quán)。經(jīng)過 16 個(gè)年頭的沉淀,伴隨著物聯(lián)網(wǎng)的興起,它正演變成一個(gè)功能強(qiáng)大、組件豐富的物
    的頭像 發(fā)表于 07-09 11:27 ?4922次閱讀
    <b class='flag-5'>RT-Thread</b>學(xué)習(xí)筆記 <b class='flag-5'>RT-Thread</b>的架構(gòu)概述

    RT-Thread文檔_RT-Thread 簡介

    RT-Thread文檔_RT-Thread 簡介
    發(fā)表于 02-22 18:22 ?5次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> 簡介

    RT-Thread文檔_RT-Thread 潘多拉 STM32L475 上手指南

    RT-Thread文檔_RT-Thread 潘多拉 STM32L475 上手指南
    發(fā)表于 02-22 18:23 ?10次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> 潘多拉 STM32L475 上手指南

    RT-Thread文檔_RT-Thread SMP 介紹與移植

    RT-Thread文檔_RT-Thread SMP 介紹與移植
    發(fā)表于 02-22 18:31 ?9次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> SMP 介紹與移植

    基于RT-Thread Studio學(xué)習(xí)

    前期準(zhǔn)備:從官網(wǎng)下載 RT-Thread Studio,弄個(gè)賬號登陸,開啟rt-thread學(xué)習(xí)之旅。
    的頭像 發(fā)表于 05-15 11:00 ?5065次閱讀
    基于<b class='flag-5'>RT-Thread</b> Studio學(xué)習(xí)
    主站蜘蛛池模板: 亚洲a视频在线观看 | 国产精品青青在线麻豆 | 欧美成a人片免费看久久 | 秀婷程仪公欲息肉婷在线观看 | 天堂草原天黑黑 | 啊灬啊灬啊灬快灬深高潮啦 | 国产AV高清怡春院 | 欧美特级特黄a大片免费 | 护士喂我吃乳液我脱她内裤 | 亚洲乱码AV久久久久久久 | 中文字幕无码一区二区免费 | 一二三四在线观看韩国 | 在线涩涩免费观看国产精品 | 亚洲精品不卡视频 | 亚洲精品一线二线三线无人区 | 最新国产av.在线视频 | 视频一区亚洲视频无码 | 处88XXX | 日本超A大片在线观看 | 国产国产人免费观看在线视频 | 男男免费看 | 亚洲国产果果在线播放在线 | 18禁黄久久久AAA片 | 午夜AV内射一区二区三区红桃视 | 我和黑帮老大第365天第2季在线 | 日韩免费精品视频 | 性女传奇快播 | 国产午夜不卡 | 曰本老头同性xxxxx | 日本一卡二卡三卡四卡无卡免费播放 | 亚洲精品午夜aaa级久久久久 | 成 人 片 免费播放 成 人 免费 黄 色 网站无毒下载 | 久久亚洲成a人片 | 国产网红主播精品福利大秀专区 | 色综合久久中文色婷婷 | 六六影院午夜伦理 | 超碰97av 在线人人操 | 精品国产人成亚洲区 | 秋霞伦理机在线看片 | 欧美激情一区二区三区视频 | 胸太大被男同桌吃好爽 |

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品