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)證。
硬件框圖
常見的組成框圖差異不大,以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)建框架
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)建配置
在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è)宏。
效果演示
進(jìn)入msh終端,輸入help可查看支持的功能,其中 tftp_server 為以上操作實(shí)現(xiàn)的功能
輸入tftp_server并回車運(yùn)行后,就啟動(dòng)了tftp服務(wù)器,輸入ifconfig可查看開發(fā)板的ip地址,我的是192.168.75.130
在電腦端低開tftp工具,作為tftp客戶端,在Host輸入開發(fā)板的ip,端口設(shè)置為69,選擇一個(gè)電腦本地的文件然后點(diǎn)擊put即可將文件發(fā)送到開發(fā)板,如我電腦上的TOP.bin文件
傳輸完成后,在開發(fā)板msh終端輸入ls即可查看剛才傳輸?shù)奈募?p>
上一篇:I2C與SPI的區(qū)別是什么 速率對(duì)比
下一篇:應(yīng)用筆記|直接修改寄存器來輸出內(nèi)部時(shí)鐘的方法
推薦閱讀最新更新時(shí)間:2025-04-23 19:33
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦
- 英飛凌微控制器:以全新實(shí)惠套件和強(qiáng)大開發(fā)環(huán)境為開發(fā)者提供支持
- iTOP-i.MX6開發(fā)板設(shè)備數(shù)驅(qū)動(dòng)Menuconfig的用法
- 迅為IMX6ULL開發(fā)板Qt for Android搭建開發(fā)環(huán)境
- 迅為i.MX8M mini開發(fā)板Windots QT系統(tǒng)開發(fā)環(huán)境搭建
- 迅為IMX8MM開發(fā)板Yocto系統(tǒng)使用Gstarwmra(一)
- 迅為IMX8M mini開發(fā)板Linix系統(tǒng)修改默認(rèn)屏幕
- iTOP-4412開發(fā)板支持4G以上文件系統(tǒng)擴(kuò)展
- 迅為IMX8MM開發(fā)板Yocto系統(tǒng)設(shè)置開機(jī)自啟動(dòng)
- 迅為IMX6Q開發(fā)板 Buildroot文件系統(tǒng)mqtt測(cè)試
- CH340C-STM32F103C8T6
- AM1G-4818SZ 18V 1 瓦 DC/DC 轉(zhuǎn)換器的典型應(yīng)用
- LT3489 的典型應(yīng)用 - 具有 2.5A 開關(guān)和軟啟動(dòng)的 2MHz 升壓型 DC/DC 轉(zhuǎn)換器
- LT1086CT-3.3 具有自動(dòng)光控制功能的低壓差正穩(wěn)壓器的典型應(yīng)用
- PCB感應(yīng)卡——東方廚專用卡
- 鋼鐵俠水滴門禁卡
- AM2G-4805DH30Z ±5V 2 瓦 DC-DC 轉(zhuǎn)換器的典型應(yīng)用
- 無線喂魚器 Telegram
- 基于ST1S41IPHR的、具有使能功能的4A、850kHz固定頻率PWM同步降壓演示板
- 具有低電池電量指示的 MCP1258 穩(wěn)壓 3.3V、低紋波電荷泵和低工作電流睡眠模式或旁路模式的典型應(yīng)用
- Vishay 推出的27款600 V標(biāo)準(zhǔn)整流器和60 V - 200 V TMBS?整流器
- 泰克亮相2025 慕尼黑展: 以全棧式解決方案與中國智造同頻共振
- Nordic Semiconductor nRF9151 蜂窩物聯(lián)網(wǎng)模組與日本 IIJ SoftSIM產(chǎn)品相輔相成
- 汽車顯示屏——第2部分:TFT LCD、OLED和micro-LED顯示屏電源技術(shù)
- 車機(jī)操作系統(tǒng)自主可控加速!華為、小米和理想,誰是真正的領(lǐng)跑者?
- FOC入門教程
- 如何為工業(yè)物聯(lián)網(wǎng)選擇最節(jié)能的通信方案
- 什么是PID算法?一文帶你深度理解PID算法
- 控制無刷直流電動(dòng)機(jī)以應(yīng)對(duì)新挑戰(zhàn)
- 汽車加熱器的工作原理和功能
- 有獎(jiǎng)直播|TI毫米波雷達(dá)在汽車領(lǐng)域的最新應(yīng)用
- 吉時(shí)利DMM6500 6½ 位數(shù)字觸摸屏萬用表六大功能,滿足工程師的切身需求,獻(xiàn)給有夢(mèng)想的你!
- TI攜您共創(chuàng)未來乘駕新體驗(yàn)——初步學(xué)習(xí): TI 汽車專題任務(wù)打卡
- 如何在FPGA設(shè)計(jì)環(huán)境中加時(shí)序約束
- 報(bào)名觀看TI 嵌入式處理器主題月直播,漲姿勢(shì)還能拿全勤獎(jiǎng)!
- 有獎(jiǎng)問答 英飛凌一站式BMS解決方案
- 機(jī)智云Gokit3免費(fèi)測(cè)評(píng)試用!用熟悉的方式,快速實(shí)現(xiàn)每一個(gè)想法!
- 【已結(jié)束】 電感應(yīng)用知識(shí)分享|MPS 有獎(jiǎng)直播
- 有獎(jiǎng)電源設(shè)計(jì)問卷調(diào)查
- 芯片巨頭加速擴(kuò)張車載雷達(dá)版圖,激光雷達(dá)取代者呼之欲出
- 可植入電子儀器又有神操作!無需電池自驅(qū)動(dòng)心臟起搏器問世
- 谷歌地圖新增功能 可實(shí)時(shí)顯示可用電動(dòng)汽車充電站信息
- 馬斯克:特斯拉正研發(fā)壽命160萬公里電池組 或明年面世
- UCOSIII前后臺(tái)操作系統(tǒng)介紹
- 通過示波器測(cè)試SPC協(xié)議解碼
- 2700萬美元,英特爾收購Pivot旗下軟件業(yè)務(wù)
- 如何維護(hù)絕緣電阻表_絕緣電阻表維護(hù)注意事項(xiàng)
- 日韓就出口管制問題未達(dá)成一致,磋商仍繼續(xù)
- 天然氣計(jì)量系統(tǒng)使用時(shí)需要注意什么