0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

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

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

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

RTThread物聯(lián)網(wǎng)操作系統(tǒng) ? 來源:未知 ? 2023-07-24 19:35 ? 次閱讀

TFTP協(xié)議


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

硬件框圖


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

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

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

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


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

RTThread源碼包提供了完整的操作系統(tǒng),從內(nèi)核再到組件服務(wù)層,以及經(jīng)過認證的第三方的軟件包,非常便于開發(fā)人員進行應(yīng)用開發(fā)。開發(fā)者只需要關(guān)心和使用網(wǎng)絡(luò)應(yīng)用層提供的網(wǎng)絡(luò)接口,而無需關(guān)心底層具體網(wǎng)絡(luò) 協(xié)議棧類型和實現(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版本為例,打開對應(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的部分的,因此需要修改這部分腳本,增加一個宏的判斷,以及添加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宏,才會把tftp下的c文件添加到工程中,這里有兩種方法,一種是直接在工程根目錄下的rtconfig.h中直接添加宏定義


		

1#defineRT_LWIP_USING_TFTP

另一種是修改menuconfig菜單選項,增加宏的設(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修改完成之后,在配置界面就會多出一個菜單選項,使能該菜單,然后使用scons構(gòu)建就會自動在rtconfig.h文件中增加這個宏。

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

效果演示


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

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

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

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

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

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

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

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

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

原文鏈接:http://club.rt-thread.org

———————End——————


點擊閱讀原文進入官網(wǎng)


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

文章出處:【微信公眾號:RTThread物聯(lián)網(wǎng)操作系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。


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

    關(guān)注

    31

    文章

    1261

    瀏覽量

    39840

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

文章出處:【微信號:RTThread,微信公眾號:RTThread物聯(lián)網(wǎng)操作系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    開源共生 商業(yè)共贏 | RT-Thread 2024開發(fā)者大會報名啟動!

    親愛的RT-Thread開發(fā)者我們很高興地宣布,一年一度的RDC(RT-ThreadDeveloperConference,RT-Thread開發(fā)者大會)正式啟動報名!2024RT-Threa
    的頭像 發(fā)表于 10-29 08:06 ?160次閱讀
    開源共生 商業(yè)共贏 | <b class='flag-5'>RT-Thread</b> 2024開發(fā)者大會報名啟動!

    2024 RT-Thread全球巡回 線下培訓(xùn)火熱來襲!

    親愛的RT-Thread社區(qū)成員們:我們非常高興地宣布,2024年RT-Thread全球開發(fā)者線下培訓(xùn)即將拉開帷幕!24年全球巡回培訓(xùn)將覆蓋超10座城市及國家,為開發(fā)者提供一個深入學(xué)習(xí)RT-Thread嵌入式開發(fā)的絕佳機會。
    的頭像 發(fā)表于 08-07 08:35 ?826次閱讀
    2024 <b class='flag-5'>RT-Thread</b>全球巡回 線下培訓(xùn)火熱來襲!

    RT-Thread 新里程碑達成——GitHub Star 破萬!

    RT-Thread實時操作系統(tǒng)開源項目在GitHub上的star數(shù)量突破一萬!截止發(fā)文,RT-Thread作為實時操作系統(tǒng)在業(yè)界Star數(shù)量排名第一!倉庫地址:https://github.com
    的頭像 發(fā)表于 07-04 08:35 ?378次閱讀
    <b class='flag-5'>RT-Thread</b> 新里程碑達成——GitHub Star 破萬!

    基于 RT-Thread專業(yè)版的EtherCAT主站方案

    (一)方案介紹本方案基于RT-Thread專業(yè)版,在RT-Thread端集成EtherCAT主站協(xié)議,通過EtherCAT對伺服電機或遠程IO進行實時控制,具備傳輸速度快,實時性高,擴展設(shè)備靈活等
    的頭像 發(fā)表于 06-19 08:35 ?746次閱讀
    基于 <b class='flag-5'>RT-Thread</b>專業(yè)版的EtherCAT主站方案

    6月6日杭州站RT-Thread線下workshop,探索RT-Thread混合部署新模式!

    6月6日下午我們將在杭州舉辦RT-Thread混合部署線下workshop,在瑞芯微RK3568平臺上實現(xiàn)同時運行RT-Thread和linux,本次workshop邀請到RT-Thread資深
    的頭像 發(fā)表于 05-28 08:35 ?388次閱讀
    6月6日杭州站<b class='flag-5'>RT-Thread</b>線下workshop,探索<b class='flag-5'>RT-Thread</b>混合部署新模式!

    2024 RT-Thread 全球技術(shù)大會演講議程發(fā)布!

    RT-ThreadGlobalTechConference(RT-ThreadGTC,RT-Thread全球技術(shù)大會)致力于圍繞RT-Thread基礎(chǔ)軟件技術(shù)發(fā)展、實踐創(chuàng)新、開發(fā)者能力
    的頭像 發(fā)表于 05-16 08:34 ?462次閱讀
    2024 <b class='flag-5'>RT-Thread</b> 全球技術(shù)大會演講議程發(fā)布!

    RT-Thread混合部署Workshop北京站來啦!

    4月25日,下午我們將在北京舉辦RT-Thread混合部署線下workshop,在瑞芯微RK3568平臺上實現(xiàn)同時運行RT-Thread和linux,本次workshop邀請到RT-Thread資深
    的頭像 發(fā)表于 04-19 08:34 ?384次閱讀
    <b class='flag-5'>RT-Thread</b>混合部署Workshop北京站來啦!

    4月25日北京站RT-Thread線下workshop,探索RT-Thread混合部署新模式

    4月25日,下午我們將在北京舉辦RT-Thread混合部署線下workshop,在瑞芯微RK3568平臺上實現(xiàn)同時運行RT-Thread和linux,本次workshop邀請到RT-Thread資深
    的頭像 發(fā)表于 04-16 08:35 ?382次閱讀
    4月25日北京站<b class='flag-5'>RT-Thread</b>線下workshop,探索<b class='flag-5'>RT-Thread</b>混合部署新模式

    4月10日深圳場RT-Thread線下workshop,探索RT-Thread混合部署新模式!

    4月10日我們將在深圳福田舉辦RT-Thread混合部署線下workshop,在瑞芯微RK3568平臺上實現(xiàn)同時運行RT-Thread和linux,本次workshop邀請到RT-Thread資深嵌入式軟件工程師農(nóng)曉明老師為您講
    的頭像 發(fā)表于 03-27 11:36 ?743次閱讀
    4月10日深圳場<b class='flag-5'>RT-Thread</b>線下workshop,探索<b class='flag-5'>RT-Thread</b>混合部署新模式!

    4月10日深圳場RT-Thread線下workshop,探索RT-Thread混合部署新模式!

    4月10日我們將在深圳福田舉辦RT-Thread混合部署線下workshop,在瑞芯微RK3568平臺上實現(xiàn)同時運行RT-Thread和linux,本次workshop邀請到RT-Thread資深
    的頭像 發(fā)表于 03-27 08:34 ?464次閱讀
    4月10日深圳場<b class='flag-5'>RT-Thread</b>線下workshop,探索<b class='flag-5'>RT-Thread</b>混合部署新模式!

    恩智浦半導(dǎo)體正式加入RT-Thread全球合作伙伴計劃!

    前不久,恩智浦半導(dǎo)體正式加入RT-Thread全球合作伙伴計劃,成為RT-Thread高級會員合作伙伴。同時,RT-Thread現(xiàn)已成為恩智浦注冊合作伙伴(RT-Thread| 簡介合
    的頭像 發(fā)表于 03-14 10:40 ?555次閱讀
    恩智浦半導(dǎo)體正式加入<b class='flag-5'>RT-Thread</b>全球合作伙伴計劃!

    BL808 RT-Thread Wi-Fi驅(qū)動適配

    BL808 WiFi 屬于 SOC 單芯片型無線 MCU,片上集成 WiFi 功能,移植 RT-Thread 過程中,需要使用 RT-Thread wlan 框架。
    的頭像 發(fā)表于 12-04 11:38 ?807次閱讀

    RT-Thread Nano入門:獨立看門狗(IWDT)

    本文主要介紹怎么用RT-Thread Nano實現(xiàn)獨立看門狗IWDT驅(qū)動,創(chuàng)建一個喂狗線程,實現(xiàn)定時喂狗功能。
    的頭像 發(fā)表于 11-22 11:04 ?2093次閱讀
    <b class='flag-5'>RT-Thread</b> Nano入門:獨立看門狗(IWDT)

    基于RT-Thread os實現(xiàn)混合定位介紹

    wayz_iotkit 是上海圖趣信息科技有限公司,針對RT-thread開發(fā)的能夠?qū)崿F(xiàn)定位功能的物聯(lián)網(wǎng)組件。
    的頭像 發(fā)表于 11-15 16:19 ?782次閱讀
    基于<b class='flag-5'>RT-Thread</b> os實現(xiàn)混合定位介紹

    rt-thread源碼分析之socket抽象層和網(wǎng)卡注冊

    如圖所示,rt-thread的網(wǎng)絡(luò)分為應(yīng)用層、sal_socket、netdev、協(xié)議簇(at、lwip、wiznet)、網(wǎng)卡驅(qū)動五層。
    的頭像 發(fā)表于 11-13 12:43 ?781次閱讀