PC 和開發板之間傳輸檔案

羽飛竹製品發表於2021-03-25

8.1 傳輸檔案的多種方法

在嵌入式開發中,涉及交叉編譯:在 PC 上編譯,在開發板上執行。所以就涉及 PC 和開發板之間的檔案

傳輸,方法有多種:網路傳輸、串列埠傳輸、USB 傳輸,當然,還有最笨的方法:U 盤複製。


一般的日常開發流程為:


a. 在 Windows 上閱讀修改程式碼,然後透過 FileZilla 把程式碼傳到 VMWare 中的 Ubuntu;

b. 在 Ubuntu 上編譯程式;

c. 把程式下載到開發板上,執行驗證,

d. 在 Windows 下透過串列埠操作開發板。


所以在 Windows、Ubuntu、開發板三者間,兩兩之間都存在檔案的傳輸。


當然,有人不喜歡 Windows,PC 只用純 Linux,這些高手已經熟練掌握各種 Linux 命令,不再存在檔案傳輸的障礙。


總之,各種需求都存在,比如某些筆記本沒有網口,那可以使用 USB 線連線開發板,開發板模擬出網路卡;在工地上網口、USB 口統統沒有,那我們還可以使用串列埠。


我們會一一列舉,作為初學者,不需要驗證全部章節,選擇合適你的即可。


8.2 在 Windows 上透過串列埠和開發板傳輸檔案

如果只是偶爾傳輸小檔案,可以直接使用串列埠。

注意:在開發過程中,使用 NFS 是最方便的。


8.2.1 用 MobaXterm 開啟串列埠、啟動開發板

這不用介紹了吧。


8.2.2 使用 rz 命令透過串列埠下載 Windows 檔案到開發板上

可以在開發板上使用 rz 命令,將 PC 上的檔案傳輸到開發板。


請參考《5.3.2 使用rz命令透過串列埠下載Windows檔案到開發板上》


8.2.3 使用 sz 命令讓開發板向 PC 傳送檔案

可以在開發板上使用 sz 命令,將開發板的檔案上傳給PC。

請參考《5.3.3 使用 sz 命令透過串列埠把開發板檔案上傳給 PC》。


8.3 透過 USB 給開發板傳檔案

尚未實現。


8.4 安裝網路服務

在嵌入式開發中,網路服務帶來了很多便利,特別是 Ubuntu 上的 NFS 服務。使用 NFS 服務,開發板可以掛載 Ubuntu 上的某個目錄,假設開發板把 Ubuntu 上的/home/book 目錄掛載到自己的/mnt 目錄,那麼在開發過程中,可以如此操作:


a. 在 Ubuntu 上的/home/book/abc 目錄中編譯程式

b. 開發板可以直接執行/mnt/abc 下的程式


在 Ubuntu 上編譯程式,開發板可以立刻執行程式,免去了上傳、下載等等繁瑣的操作。


Windows 推出了 WSL 子系統(Windows Subsystem for Linux),這確實是個很牛的產品。可惜它不支援NFS 服務,否則我們早就捨棄 Ubuntu 而採用 WSL 了。


當然,網路服務不僅僅有 NFS,還有 TFTP、SSH 等服務。如果只是傳輸檔案,可以使用 TFTP、SSH 等服務,比如:


a. 在 Ubuntu 啟動 TFTP 服務,開發板透過 tftp 命令和 Ubuntu 互傳檔案;

b. 在 Windows 啟動 TFTP 服務,開發板透過 tftp 命令和 Windows 互傳檔案;

c. 在開發板上啟動 SSH 服務,Windows 透過 FileZilla 登入開發板,互傳檔案。


上述場景各有其存在的道理:

如果開發板沒安裝 SSH 服務,那麼就可以透過 tftp 命令使用 Ubuntu 或 Windows 的 TFTP 服務。

如果開發板安裝了 SSH 服務,那麼使用 FileZilla 傳輸檔案時是完全的 GUI 操作,非常方便。

開發、除錯過程使用 Ubuntu 的 NFS 服務,這是最方便的。


NFS、TFTP、SSH 等服務,都是基於網路的。開發板可以使用網線和電腦相連,也可以使用 USB OTG 線與電腦相連,後者透過虛擬的 USB 網路卡使用網路。


使用網線,還是使用 USB OTG 線?有網路卡、有網線就用網線,沒有再選擇 USB OTG 線。


下面章節講解怎麼安裝、配置各種服務,作為初學者建議先使用 NFS,其他的先不管。


8.4.1 在 Ubuntu 中安裝、配置 NFS

如果你使用的是我們提供的 Ubuntu,那麼已經安裝好了 NFS 服務。檢視一下/etc/export 的內容,就知道開發板可以掛載哪一個目錄。如果該檔案中沒有指定目錄,請繼續往下看。


如果你的 Ubuntu 未安裝 NFS 服務,那麼在確保 Ubuntu 可以上網的前提下,執行以下命令:


sudo apt-get install nfs-kernel-server

1

注意:如果 Ubuntu 無法上網,使用 VMware 橋接網路時請參考《1.3 VMware 橋接網路設定》,使用 VMware NAT 網路或 Docker 時請參考《第四章 使用 NAT 配置 Ubuntu 網路》和《第五章 安裝軟體及開發示例》。


然後,還得修改/etc/exports,新增類似以下的內容,下面的例子裡允許開發板透過 NFS 訪問 Ubuntu的/home/book 目錄:


/home/book *(rw,nohide,insecure,no_subtree_check,async,no_root_squash)

1

最後,重啟 NFS 服務,在 Ubuntu 上執行以下命令:


sudo /etc/init.d/nfs-kernel-server restart

1

可以在 Ubuntu 上透過 NFS 掛載自己,驗證一下 NFS 可用:


sudo mount -t nfs -o nolock,vers=3 127.0.0.1:/home/book /mntls /mnt

1

再次重申:NFS 是一種網路服務,開發板可以透過網線連線 Ubuntu 來使用 NFS 服務;甚至也可以透過USB OTG 線連線 Ubuntu,透過虛擬的 USB 網路卡使用 NFS 服務。



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69997197/viewspace-2764988/,如需轉載,請註明出處,否則將追究法律責任。

相關文章