娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

RT-Thread中使用lwip自帶的tftp功能傳輸文件

發(fā)布者:DelightWish123最新更新時(shí)間:2024-07-08 來源: elecfans關(guān)鍵字:RT-Thread  lwip  傳輸文件 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

TFTP協(xié)議


TFTP(簡單文件傳輸協(xié)議)是TCP/IP協(xié)議族中的一個(gè)用來在客戶機(jī)與服務(wù)器之間進(jìn)行文件傳輸?shù)膮f(xié)議,端口號(hào)為69號(hào)。TFTP基于UDP協(xié)議,開銷小、效率高,但是TFTP只能從服務(wù)器上獲得或者寫入文件,不能列出目錄,也不進(jìn)行認(rèn)證。


硬件框圖


ae5e9f44-2a13-11ee-a368-dac502259ad0.png

常見的組成框圖差異不大,以STM32H7為例,ARM內(nèi)核與MAC控制器集成在一個(gè)MCU芯片中,外部與PHY芯片相連,經(jīng)過網(wǎng)絡(luò)變壓器之后通過網(wǎng)線連接到PC端,后者是通過無線WIFI的方式連到遠(yuǎn)端服務(wù)器。


而從操作系統(tǒng)的層面來看,硬件框圖就顯得不重要了,對(duì)于rt-thread來說,只關(guān)注協(xié)議應(yīng)用本身,與硬件的交互在移植的時(shí)候做好適配即可。下面以RT-Thread源碼包中的QEMU虛擬開發(fā)板為例,介紹如何使用lwip自帶的tftp功能傳輸文件。


RT-Thread構(gòu)建框架


ae74ed80-2a13-11ee-a368-dac502259ad0.jpg

RTThread源碼包提供了完整的操作系統(tǒng),從內(nèi)核再到組件服務(wù)層,以及經(jīng)過認(rèn)證的第三方的軟件包,非常便于開發(fā)人員進(jìn)行應(yīng)用開發(fā)。開發(fā)者只需要關(guān)心和使用網(wǎng)絡(luò)應(yīng)用層提供的網(wǎng)絡(luò)接口,而無需關(guān)心底層具體網(wǎng)絡(luò) 協(xié)議棧類型和實(shí)現(xiàn),使用tftp傳輸文件需要提前掛載好文件系統(tǒng),本文不多敘述,我們主要關(guān)注Lwip中的網(wǎng)絡(luò)app。


修改構(gòu)建配置


ae933588-2a13-11ee-a368-dac502259ad0.png

在lwip的apps文件夾下,有tftp相關(guān)的源文件,但是rtthread并未在構(gòu)建工具中開放給用戶,以2.0.3版本為例,打開對(duì)應(yīng)的SConscript文件,路徑為

1rt-thread/components/net/lwip/lwip-2.0.3/SConscript

61行到85行內(nèi)容為:


1#ThesetofsourcefilesassociatedwiththisSConscriptfile. 2path=[GetCurrentDir()+'/src/include', 3GetCurrentDir()+'/src/include/ipv4', 4GetCurrentDir()+'/src/include/netif'] 5ifnotGetDepend('RT_USING_SAL'): 6path+=[GetCurrentDir()+'/src/include/posix'] 7ifGetDepend(['RT_LWIP_SNMP']): 8src+=snmp_src 9path+=[GetCurrentDir()+'/src/apps/snmp'] 10ifGetDepend(['RT_LWIP_PPP']): 11src+=ppp_src 12path+=[GetCurrentDir()+'/src/netif/ppp'] 13ifGetDepend(['RT_USING_LWIP_IPV6']): 14src+=ipv6_src 15ifGetDepend(['RT_LWIP_USING_PING']): 16src+=Glob('src/apps/ping/ping.c') 17group=DefineGroup('lwIP',src,depend=['RT_USING_LWIP','RT_USING_LWIP203'],CPPPATH=path) 18Return('group')這段腳本的功能是指,如果定義了相應(yīng)的宏定義,則把這部分的源代碼添加到工程中,參與編譯。但是從這里來看,是沒有添加lwip自帶的tftp的部分的,因此需要修改這部分腳本,增加一個(gè)宏的判斷,以及添加tftp文件夾下的.c文件,修改內(nèi)容為:



1.... 2ifGetDepend(['RT_LWIP_USING_PING']): 3src+=Glob('src/apps/ping/ping.c') 4ifGetDepend(['RT_LWIP_USING_TFTP']): 5src+=Glob('src/apps/tftp/*.c') 6group=DefineGroup('lwIP',src,depend=['RT_USING_LWIP','RT_USING_LWIP203'],CPPPATH=path)

構(gòu)建的腳本修改完成,還需要修改宏的添加,只有添加了RT_LWIP_USING_TFTP宏,才會(huì)把tftp下的c文件添加到工程中,這里有兩種方法,一種是直接在工程根目錄下的rtconfig.h中直接添加宏定義


1#defineRT_LWIP_USING_TFTP

另一種是修改menuconfig菜單選項(xiàng),增加宏的設(shè)置,修改方法為打開rt-thread/components/net/lwip/Kconfig文件,第8行左右,增加RT_LWIP_USING_TFTP的設(shè)置


1.... 2ifRT_USING_LWIP 3configRT_LWIP_USING_TFTP 4bool'Usetftpapp' 5defaultn 6configRT_USING_LWIP_LOCAL_VERSION 7bool'UseLwIPlocalversiononly' 8defaultn 9help 10Ifdon'tselectthisoption,bothlocalversionandupstream 11....Kconfig修改完成之后,在配置界面就會(huì)多出一個(gè)菜單選項(xiàng),使能該菜單,然后使用scons構(gòu)建就會(huì)自動(dòng)在rtconfig.h文件中增加這個(gè)宏。

aeb52472-2a13-11ee-a368-dac502259ad0.jpg


效果演示


進(jìn)入msh終端,輸入help可查看支持的功能,其中 tftp_server 為以上操作實(shí)現(xiàn)的功能

aed2047a-2a13-11ee-a368-dac502259ad0.png

aee99d2e-2a13-11ee-a368-dac502259ad0.png


輸入tftp_server并回車運(yùn)行后,就啟動(dòng)了tftp服務(wù)器,輸入ifconfig可查看開發(fā)板的ip地址,我的是192.168.75.130

af00ded0-2a13-11ee-a368-dac502259ad0.png


在電腦端低開tftp工具,作為tftp客戶端,在Host輸入開發(fā)板的ip,端口設(shè)置為69,選擇一個(gè)電腦本地的文件然后點(diǎn)擊put即可將文件發(fā)送到開發(fā)板,如我電腦上的TOP.bin文件


af18930e-2a13-11ee-a368-dac502259ad0.png


傳輸完成后,在開發(fā)板msh終端輸入ls即可查看剛才傳輸?shù)奈募?p>

af2b2ab4-2a13-11ee-a368-dac502259ad0.png


關(guān)鍵字:RT-Thread  lwip  傳輸文件 引用地址:RT-Thread中使用lwip自帶的tftp功能傳輸文件

上一篇:I2C與SPI的區(qū)別是什么 速率對(duì)比
下一篇:應(yīng)用筆記|直接修改寄存器來輸出內(nèi)部時(shí)鐘的方法

推薦閱讀最新更新時(shí)間:2025-04-23 19:33

RT-Thread學(xué)習(xí)筆記【stm32】(二):線程的創(chuàng)建中的一些問題
本文作者在實(shí)現(xiàn)對(duì)RTT的線程創(chuàng)建的過程中,發(fā)現(xiàn)了一些問題。 首先,我初始化了三個(gè)線程a,b,c。 但是在start 的過程中,我發(fā)現(xiàn)了一個(gè)神奇的現(xiàn)象,那就是,我只能初始化前兩個(gè)線程, 第三個(gè)線程總是初始化失敗。 而后我想到可能是,優(yōu)先級(jí)的設(shè)置出現(xiàn)問題,于是我更換各種優(yōu)先級(jí)之后發(fā)現(xiàn),問題并沒有得到解決。 再后來,我想到了一個(gè)重要的問題,那就是我用的是最小板STM,那么會(huì)不會(huì)是32的ram不夠大,而 我的任務(wù)堆棧設(shè)置的過大,到導(dǎo)致任務(wù)無法初始化。 而后,我降低了任務(wù)的堆棧,發(fā)現(xiàn),成功開始了線程。
[單片機(jī)]
RT-Thread與君正、全志等多家主流芯片廠商簽署戰(zhàn)略合作協(xié)議
電子網(wǎng)消息,國內(nèi)領(lǐng)先的自主物聯(lián)網(wǎng)操作系統(tǒng)平臺(tái)RT-Thread暨上海睿賽德電子科技有限公司宣布:公司已與國內(nèi)多家主流芯片廠商簽署戰(zhàn)略合作協(xié)議,RT-Thread將作為他們的原生操作系統(tǒng)之一,搭配其芯片推向市場(chǎng)。首批簽約公司包括中天微系統(tǒng)、富瀚微電子(300613)、靈動(dòng)微電子、北京君正(300223)、全志科技(300458)、愛普特微電子、華芯微特科技等企業(yè)。此舉標(biāo)志著RT-Thread獲得了業(yè)界的廣泛認(rèn)同,同時(shí)其生態(tài)體系建設(shè)成效顯著。 隨著目前國內(nèi)集成電路產(chǎn)業(yè)的快速發(fā)展,國內(nèi)芯片設(shè)計(jì)企業(yè)不斷推出MCU、無線SoC等全新的芯片產(chǎn)品。其中許多芯片產(chǎn)品針對(duì)相應(yīng)的物聯(lián)網(wǎng)應(yīng)用,需要特別優(yōu)化或者差異化的操作系統(tǒng)來對(duì)其應(yīng)用軟件提供支持,
[半導(dǎo)體設(shè)計(jì)/制造]
小廣播
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號(hào)

 
EEWorld服務(wù)號(hào)

 
汽車開發(fā)圈

 
機(jī)器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號(hào) 京ICP備10001474號(hào)-1 電信業(yè)務(wù)審批[2006]字第258號(hào)函 京公網(wǎng)安備 11010802033920號(hào) Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 安庆市| 新津县| 疏勒县| 垣曲县| 宝山区| 阳谷县| 昔阳县| 屏山县| 东台市| 沿河| 西宁市| 东兴市| 阿尔山市| 嘉峪关市| 固始县| 克山县| 丰台区| 新宁县| 沅陵县| 丰宁| 凤冈县| 新余市| 繁峙县| 开封县| 旺苍县| 乌鲁木齐市| 定陶县| 蓬溪县| 青海省| 班玛县| 绥芬河市| 当阳市| 营山县| 上思县| 宣城市| 阿拉善左旗| 清河县| 乡宁县| 吉安市| 桐柏县| 怀柔区|