选择的串口 _ 不存在或开发板没有连接_PC 和开发板之间传输文件
8.1 傳輸文件的多種方法
在嵌入式開發(fā)中,涉及交叉編譯:在 PC 上編譯,在開發(fā)板上運(yùn)行。所以就涉及 PC 和開發(fā)板之間的文件
傳輸,方法有多種:網(wǎng)絡(luò)傳輸、串口傳輸、USB 傳輸,當(dāng)然,還有最笨的方法:U 盤拷貝。
一般的日常開發(fā)流程為:
a. 在 Windows 上閱讀修改代碼,然后通過 FileZilla 把代碼傳到 VMWare 中的 Ubuntu;
b. 在 Ubuntu 上編譯程序;
c. 把程序下載到開發(fā)板上,運(yùn)行驗(yàn)證,
d. 在 Windows 下通過串口操作開發(fā)板。
所以在 Windows、Ubuntu、開發(fā)板三者間,兩兩之間都存在文件的傳輸。
當(dāng)然,有人不喜歡 Windows,PC 只用純 Linux,這些高手已經(jīng)熟練掌握各種 Linux 命令,不再存在文件傳輸?shù)恼系K。
總之,各種需求都存在,比如某些筆記本沒有網(wǎng)口,那可以使用 USB 線連接開發(fā)板,開發(fā)板模擬出網(wǎng)卡;在工地上網(wǎng)口、USB 口統(tǒng)統(tǒng)沒有,那我們還可以使用串口。
我們會一一列舉,作為初學(xué)者,不需要驗(yàn)證全部章節(jié),選擇合適你的即可。
8.2 在 Windows 上通過串口和開發(fā)板傳輸文件
如果只是偶爾傳輸小文件,可以直接使用串口。
注意:在開發(fā)過程中,使用 NFS 是最方便的。
8.2.1 用 MobaXterm 打開串口、啟動(dòng)開發(fā)板
這不用介紹了吧。
8.2.2 使用 rz 命令通過串口下載 Windows 文件到開發(fā)板上
可以在開發(fā)板上使用 rz 命令,將 PC 上的文件傳輸?shù)介_發(fā)板。
請參考《5.3.2 使用rz命令通過串口下載Windows文件到開發(fā)板上》
8.2.3 使用 sz 命令讓開發(fā)板向 PC 發(fā)送文件
可以在開發(fā)板上使用 sz 命令,將開發(fā)板的文件上傳給PC。
請參考《5.3.3 使用 sz 命令通過串口把開發(fā)板文件上傳給 PC》。
8.3 通過 USB 給開發(fā)板傳文件
尚未實(shí)現(xiàn)。
8.4 安裝網(wǎng)絡(luò)服務(wù)
在嵌入式開發(fā)中,網(wǎng)絡(luò)服務(wù)帶來了很多便利,特別是 Ubuntu 上的 NFS 服務(wù)。使用 NFS 服務(wù),開發(fā)板可以掛載 Ubuntu 上的某個(gè)目錄,假設(shè)開發(fā)板把 Ubuntu 上的/home/book 目錄掛載到自己的/mnt 目錄,那么在開發(fā)過程中,可以如此操作:
a. 在 Ubuntu 上的/home/book/abc 目錄中編譯程序
b. 開發(fā)板可以直接運(yùn)行/mnt/abc 下的程序
在 Ubuntu 上編譯程序,開發(fā)板可以立刻執(zhí)行程序,免去了上傳、下載等等繁瑣的操作。
Windows 推出了 WSL 子系統(tǒng)(Windows Subsystem for Linux),這確實(shí)是個(gè)很牛的產(chǎn)品。可惜它不支持NFS 服務(wù),否則我們早就舍棄 Ubuntu 而采用 WSL 了。
當(dāng)然,網(wǎng)絡(luò)服務(wù)不僅僅有 NFS,還有 TFTP、SSH 等服務(wù)。如果只是傳輸文件,可以使用 TFTP、SSH 等服務(wù),比如:
a. 在 Ubuntu 啟動(dòng) TFTP 服務(wù),開發(fā)板通過 tftp 命令和 Ubuntu 互傳文件;
b. 在 Windows 啟動(dòng) TFTP 服務(wù),開發(fā)板通過 tftp 命令和 Windows 互傳文件;
c. 在開發(fā)板上啟動(dòng) SSH 服務(wù),Windows 通過 FileZilla 登錄開發(fā)板,互傳文件。
上述場景各有其存在的道理:
如果開發(fā)板沒安裝 SSH 服務(wù),那么就可以通過 tftp 命令使用 Ubuntu 或 Windows 的 TFTP 服務(wù)。
如果開發(fā)板安裝了 SSH 服務(wù),那么使用 FileZilla 傳輸文件時(shí)是完全的 GUI 操作,非常方便。
開發(fā)、調(diào)試過程使用 Ubuntu 的 NFS 服務(wù),這是最方便的。
NFS、TFTP、SSH 等服務(wù),都是基于網(wǎng)絡(luò)的。開發(fā)板可以使用網(wǎng)線和電腦相連,也可以使用 USB OTG 線與電腦相連,后者通過虛擬的 USB 網(wǎng)卡使用網(wǎng)絡(luò)。
使用網(wǎng)線,還是使用 USB OTG 線?有網(wǎng)卡、有網(wǎng)線就用網(wǎng)線,沒有再選擇 USB OTG 線。
下面章節(jié)講解怎么安裝、配置各種服務(wù),作為初學(xué)者建議先使用 NFS,其他的先不管。
8.4.1 在 Ubuntu 中安裝、配置 NFS
如果你使用的是我們提供的 Ubuntu,那么已經(jīng)安裝好了 NFS 服務(wù)。查看一下/etc/export 的內(nèi)容,就知道開發(fā)板可以掛載哪一個(gè)目錄。如果該文件中沒有指定目錄,請繼續(xù)往下看。
如果你的 Ubuntu 未安裝 NFS 服務(wù),那么在確保 Ubuntu 可以上網(wǎng)的前提下,執(zhí)行以下命令:
sudo apt-get install nfs-kernel-server注意:如果 Ubuntu 無法上網(wǎng),使用 VMware 橋接網(wǎng)絡(luò)時(shí)請參考《1.3 VMware 橋接網(wǎng)絡(luò)設(shè)置》,使用 VMware NAT 網(wǎng)絡(luò)或 Docker 時(shí)請參考《第四章 使用 NAT 配置 Ubuntu 網(wǎng)絡(luò)》和《第五章 安裝軟件及開發(fā)示例》。
然后,還得修改/etc/exports,添加類似以下的內(nèi)容,下面的例子里允許開發(fā)板通過 NFS 訪問 Ubuntu的/home/book 目錄:
/home/book *(rw,nohide,insecure,no_subtree_check,async,no_root_squash)最后,重啟 NFS 服務(wù),在 Ubuntu 上執(zhí)行以下命令:
sudo /etc/init.d/nfs-kernel-server restart可以在 Ubuntu 上通過 NFS 掛載自己,驗(yàn)證一下 NFS 可用:
sudo mount -t nfs -o nolock,vers=3 127.0.0.1:/home/book /mntls /mnt再次重申:NFS 是一種網(wǎng)絡(luò)服務(wù),開發(fā)板可以通過網(wǎng)線連接 Ubuntu 來使用 NFS 服務(wù);甚至也可以通過USB OTG 線連接 Ubuntu,通過虛擬的 USB 網(wǎng)卡使用 NFS 服務(wù)。
8.4.2 Ubuntu 安裝 TFTP 服務(wù)
注意:使用 VMware NAT 網(wǎng)絡(luò)或 Docker 時(shí),不需要在 Ubuntu 中安裝 TFTP 服務(wù),而是在 Windows 運(yùn)行tftpd64 程序。
在 Ubuntu 中執(zhí)行以下命令安裝 TFTP 服務(wù):
book@100ask:~$ sudo apt-get install tftp-hpa tftpd-hpa然后,創(chuàng)建 TFTP 服務(wù)器工作目錄,并打開 TFTP 服務(wù)配置文件,如下:
book@100ask:~$ mkdir -p /home/book/tftpboot book@100ask:~$ sudo chmod 777 /home/book/tftpboot book@100ask:~$ sudo vim /etc/default/tftpd-hpa在配置文件/etc/default/tftpd-hpa 中,添加以下字段:
TFTP_DIRECTORY="/home/book/tftpboot" TFTP_OPTIONS="-l -c -s"最后,重啟 TFTP 服務(wù):
book@100ask:~$ sudo service tftpd-hpa restart查看 tftp 服務(wù)是否在運(yùn)行,運(yùn)行如下命令,即可查看是否在后臺運(yùn)行。
book@100ask:~$ ps –aux | grep “tftp”8.4.3 在 Windows 安裝 TFTP 服務(wù)
Windows 上的 TFTP 服務(wù)由一個(gè)應(yīng)用程序 tftpd64 提供,下載后雙擊運(yùn)行,再做些設(shè)置即可。tftpd64 的前身是 tftpd32,它是 32 位的程序。對于 64 位電腦,請使用 tftpd64。
tftpd64 的官網(wǎng)為:http://tftpd32.jounin.net/,建議下載“portable edition”版本,無需安裝直接運(yùn)行。官網(wǎng)不好打開的話,直接百度搜“tftpd64”即可,它是免費(fèi)軟件。
把“網(wǎng)盤配套資料01_Tools (工具)01_Tools.zip”解壓后,也有此工具。
tftpd64 的使用非常簡單,運(yùn)行后只需要設(shè)置 3 步:
a. 選擇目錄(開發(fā)板將從這個(gè)目錄讀、寫文件)
b. 通過 IP 選擇網(wǎng)卡
有些電腦有多個(gè)網(wǎng)卡,選擇哪個(gè)網(wǎng)卡?使用 VMware 橋接網(wǎng)絡(luò)時(shí)請參考《1.3 VMware 橋接網(wǎng)絡(luò)設(shè)置》,使用 VMware NAT 網(wǎng)絡(luò)或 Docker 時(shí)請參考《第四章 使用 NAT 配置 Ubuntu 網(wǎng)絡(luò)》和《第五章 安裝軟件及開
發(fā)示例》。
c. 設(shè)置防火墻,直接關(guān)閉防火墻;或是允許 tftpsever 使用網(wǎng)絡(luò):
對于 Windows 10 可以按下圖操作,對于其他操作系統(tǒng),請自行百度:
8.5 沒有網(wǎng)卡時(shí)可以使用 OTG 虛擬 USB 網(wǎng)卡
如果你的電腦有網(wǎng)卡,請使用真實(shí)網(wǎng)卡。
如果你的電腦沒有網(wǎng)卡,那么用 USB 線連接 PC 和開發(fā)板的 USB OTG 口,開發(fā)板可以模擬出一個(gè) USB 網(wǎng)卡。Windows 使用這個(gè) USB 網(wǎng)卡比較復(fù)雜,我們一般是在 VMWare 中把它連接到 Ubuntu,讓開發(fā)板和 Ubuntu通過該虛擬網(wǎng)卡來交互。
8.5.1 安裝、設(shè)置虛擬 USB 網(wǎng)卡
再次聲明:電腦有真實(shí)網(wǎng)卡,建議使用真實(shí)網(wǎng)卡,那就不需要看本節(jié)內(nèi)容。
開發(fā)板的 USB OTG 口通過 USB 線接到 Ubunut 時(shí),開發(fā)板是 USB 從設(shè)備,開發(fā)板可以模擬 U 盤、USB 串口、USB 網(wǎng)卡;Ubuntu 看到的就是一個(gè) U 盤、USB 串口或是 USB 網(wǎng)卡。Ubuntu 可以通過這樣的 USB 網(wǎng)卡跟
開發(fā)板進(jìn)行網(wǎng)絡(luò)通信,反過來開發(fā)板當(dāng)然也就可以通過這個(gè) USB 網(wǎng)卡掛載 Ubunut 的 NFS 目錄。
開發(fā)板要安裝 USB 驅(qū)動(dòng)程序以模擬 USB 網(wǎng)卡,Ubuntu 要安裝 USB 網(wǎng)卡驅(qū)動(dòng)程序。幸運(yùn)的是,Ubuntu 中自帶該 USB 網(wǎng)卡的驅(qū)動(dòng)程序,并且會自動(dòng)安裝驅(qū)動(dòng)程序。
所以,我們要做的事情不多:
a. 在開發(fā)板上安裝 USB 驅(qū)動(dòng)程序,它會在開發(fā)板里虛擬出網(wǎng)卡 usb0,需要設(shè)置 IP
b. 在 VMWare 上把虛擬網(wǎng)卡連接到 Ubuntu,在 Ubuntu 中設(shè)置 IP
8.5.1.1 在開發(fā)板上安裝 USB OTG 網(wǎng)卡模塊驅(qū)動(dòng)程序并設(shè)置 IP
如下所示,我們需要先在開發(fā)板終端上執(zhí)行“modprobe -f g_ether”來安裝驅(qū)動(dòng)模塊程序,安裝成功的示意圖如下所示。
[root@imx6ull:~]# modprobe -f g_ether
該驅(qū)動(dòng)會給開發(fā)板模擬出網(wǎng)卡 usb0,使用以下命令設(shè)置其 IP,我們?nèi)?IP 為 10.10.70.1:
在安裝 g_ether 驅(qū)動(dòng)時(shí),開發(fā)板就已經(jīng)模擬出了一個(gè) USB 網(wǎng)卡。一旦連接開發(fā)板的 USB OTG 口到電腦,就相當(dāng)于給電腦插上了一個(gè) USB 網(wǎng)卡,設(shè)備管理器會自動(dòng)識別到新的設(shè)備。
8.5.1.2 在 VMWare 中連接虛擬網(wǎng)卡設(shè)備至 Ubuntu 并設(shè)置 IP
如下圖所示,在開發(fā)板上安裝 g_ether 驅(qū)動(dòng)并連接 USB OTG 線到 PC 上后,PC 會發(fā)現(xiàn)一個(gè)新的網(wǎng)卡。
我們需要讓 VMWare 把這個(gè)網(wǎng)卡連接到 Ubuntu 上,依次點(diǎn)擊“虛擬機(jī)”–>“可移動(dòng)設(shè)備”–>“Netchip RNDIS/Ethernet Gadget”–> “連接(斷開與主機(jī)的連接)?”,如下圖所示:
成功后,Ubuntu 系統(tǒng)下會多出一個(gè)新網(wǎng)卡,執(zhí)行“ifconfig -a”命令查看網(wǎng)卡名,如下圖所示,新網(wǎng)卡名為“ens35u1”。
注意:不同系統(tǒng)上新網(wǎng)卡的名字可能不同,再次接插 USB OTG 線時(shí) Ubuntu 中新網(wǎng)卡名也會變化。
使用以下命令設(shè)置其 IP,我們?nèi)?IP 為 10.10.70.2:
8.5.1.3 測試網(wǎng)絡(luò)并使用 NFS 服務(wù)
分配完 IP 地址后,我們就可以通過 ping 命令來測試 Ubuntu 和開發(fā)板系統(tǒng)是否可以互通,測試命令如下所示。
在開發(fā)板 ping Ubuntu 的 IP:
[root@imx6ull:~]# ping -I usb0 10.10.70.2
確認(rèn)開發(fā)板和 Ubuntu 網(wǎng)絡(luò)互通后,就可以在開發(fā)板上掛載 Ubuntu 的 NFS 目錄來互傳文件了:
8.5.1.4 常見問題
有時(shí)候你會發(fā)現(xiàn)開發(fā)板和 Ubuntu 無法 ping 通對方,多試幾次就可以:
a. 試試重新拔插 USB OTG 線
b. 試試在開發(fā)板上先禁止網(wǎng)卡,再啟用網(wǎng)卡,比如:
c. 試試在 Ubuntu 上先禁止網(wǎng)卡,再啟用網(wǎng)卡,假設(shè)虛擬網(wǎng)卡名為 ens35u1,可以試試這樣的命令:
book@100ask:~$ sudo ifconfig ens35u1 down book@100ask:~$ sudo ifconfig ens35u1 10.10.70.2注意:Ubuntu 上的虛擬網(wǎng)卡名不一定是 ens35u1,需要執(zhí)行“ifconfig -a”命令確認(rèn)。
8.6 使用網(wǎng)絡(luò)服務(wù)傳輸文件
8.6.1 開發(fā)板掛載 Ubuntu 的 NFS 目錄
開發(fā)板和 Ubuntu 之間網(wǎng)絡(luò)互通之后,就可以在兩者之間傳輸文件了。
開發(fā)板上不一定安裝有 FTP 服務(wù)、SSH 等服務(wù),所以不一定能使用 FTP 等工具登錄開發(fā)板。
但是開發(fā)板的系統(tǒng)一般都自帶 mount 命令,并且支持 NFS 文件系統(tǒng)。所以可以在開發(fā)板上執(zhí)行 mount 命令掛載 Ubuntu 的某個(gè)目錄。這樣就可以在開發(fā)板和 Ubuntu 之間傳文件了。
開發(fā)板使用 NFS 掛載 Ubuntu 的前提是:Ubuntu 中已經(jīng)安裝了 NFS 服務(wù),并且在/etc/exports 中配置了某個(gè)目錄供掛載。
使用 NAT 網(wǎng)絡(luò)時(shí),確保開發(fā)板可以 ping 通 Windows 后,就可以通過 NFS 掛載 Ubuntu 中的某個(gè)目錄。
使用橋接網(wǎng)絡(luò)時(shí),確保開發(fā)板可以 ping 通 Ubuntu 后,就可以通過 NFS 掛載 Ubuntu 中的某個(gè)目錄。
哪些目錄呢?請查看 Ubuntu 的/etc/exports 文件。
如果你使用的是VMware NAT方式,或是使用docker,假設(shè)Windows IP為192.168.1.100,在開發(fā)板上執(zhí)行以下命令(注意:必須指定port為2049、mountport為9999):
[root@imx6ull:~]# mount -t nfs -o nolock,vers=3,port=2049,mountport=9999 192.168.1.100:/home/book/nfs_rootfs /mnt [root@imx6ull:~]# cp /mnt/hello ./hello如果你使用的是VMware橋接方式,假設(shè)Ubuntu IP為192.168.1.100,在開發(fā)板上執(zhí)行以下命令:
[root@imx6ull:~]# mount -t nfs -o nolock,vers=3 192.168.1.100:/home/book/nfs_rootfs /mnt [root@imx6ull:~]# cp /mnt/hello ./hello如果一切正常,你可以在 Ubuntu 上把文件放到/home/book/nfs_rootfs 目錄中,在開發(fā)板上可以從/mnt目錄中訪問該文件。
8.6.2 開發(fā)板通過 tftp 傳輸 Ubuntu 文件
注意:使用 VMware NAT 網(wǎng)絡(luò)或 Docker,無法使用 tftp 命令訪問 Ubuntu,本節(jié)針對使用 VMware 橋接網(wǎng)絡(luò)。
注意:使用 VMware NAT 網(wǎng)絡(luò)或 Docker,可以使用 tftp 命令訪問 Windows,請參考《8.6.3 開發(fā)板通過 tftp 傳輸 Windows 文件》。
8.6.2.1 在開發(fā)板上使用 tftp 命令下載文件
首先確保你已經(jīng)將要下載的文件上傳至 Ubuntu 系統(tǒng)中 tftp 服務(wù)的目錄內(nèi),如下圖所示我的 tftp 服務(wù)目錄內(nèi)有 zImage 100ask_imx6ull-14x14.dtb 兩個(gè)文件,我的 Ubuntu 主機(jī) IP 地址為 192.168.1.123。
比如我要下載 Ubuntu 服務(wù)器下的 zImage 文件,則在開發(fā)板上執(zhí)行如下命令。
下載后的文件如下圖所示。
8.6.2.2 在開發(fā)板上使用 tftp 命令上傳文件
比如我們現(xiàn)在開發(fā)板家目錄下創(chuàng)建一個(gè) 1.txt 的文本文件,然后寫入 111111…. :
然后在開發(fā)板上執(zhí)行如下命令上傳此文件到 Ubuntu 服務(wù)器的 tftp 服務(wù)目錄下。
此時(shí)我們查看 Ubuntu 服務(wù)器的 tftp 服務(wù)目錄下,即可看到之前在開發(fā)板上創(chuàng)建的 1.txt 。
8.6.3 開發(fā)板通過 tftp 傳輸 Windows 文件
在 Windows 的 TFTP 服務(wù)由軟件 tftpd64.exe 實(shí)現(xiàn),它無需安裝,解壓就可運(yùn)行。
重要的是:需要設(shè)置防火墻,請參考《8.4.3 在 Windows 安裝 TFTP 服務(wù)》。
首先啟動(dòng) tftpd64.exe,設(shè)置好文件目錄,選擇 IP。假設(shè)該 IP 為 192.168.1.99。那么開發(fā)板可以使用tftp 命令向該 IP 上傳文件,或是下載文件。
8.6.3.1 在開發(fā)板上使用 tftp 命令下載文件
首先確保你已經(jīng)將要下載的文件放入 Windows 中上圖所選的目錄里,比如 zImage。
然后可以在開發(fā)板上執(zhí)行如下命令(假設(shè) Windows Ip 是 192.168.1.99):
[root@imx6ull:~]# tftp -g -r zImage 192.168.1.99這就會從 Windows 下載文件,效果如下圖:
下載后的文件保存在開發(fā)板的當(dāng)前目錄下,如下圖所示:
8.6.3.2 在開發(fā)板上使用 tftp 命令上傳文件
比如我們想把/boot/zImage 文件上傳到 Windows(假設(shè) IP 為 192.168.1.99),可以在開發(fā)板上執(zhí)行如下命令:
[效果如下圖:
8.6.4 在 Windows 上通過 FileZilla 和開發(fā)板傳輸文件
Windows 和開發(fā)板之間可以通過 TFTP 服務(wù),或是 SSH 服務(wù)傳輸文件。前者需要在開發(fā)板上輸入 tftp 命令,后者可以在純 GUI 界面操作。
100ASK_IMX6ULL 自帶的 Linux 系統(tǒng)中,已經(jīng)安裝并開啟了 SSH 服務(wù),所以只要網(wǎng)絡(luò)聯(lián)通,就可以通過FileZilla 和開發(fā)板傳輸文件。
注意:在開發(fā)過程中,使用 NFS 是最方便的。
8.6.4.1 確保 Windows 和開發(fā)板之間網(wǎng)絡(luò)聯(lián)通
假設(shè) Windows 和開發(fā)板之間網(wǎng)絡(luò)已經(jīng)聯(lián)通,可以通過下列方法確認(rèn)。
使用串口連接開發(fā)板,執(zhí)行 ifconfig 命令查看或是配置 IP,如下圖所示:
啟動(dòng) Windows 命令行,執(zhí)行 ping 192.168.1.100,如果下圖所示:
8.6.4.2 啟動(dòng) FileZilla 連接開發(fā)板
在 FileZilla 中輸入開發(fā)板的 IP,輸入用戶名 root,輸入端口號 22,就可以回車連接開發(fā)板了,如下圖:
第一次連接開發(fā)板時(shí),會有如下提示:
連接成功后,就可以直接拖動(dòng)文件進(jìn)行傳輸了:
8.7 開發(fā)板使用 NFS 根文件系統(tǒng)
注意:所謂根文件系統(tǒng)就是類似 Windows 的 C 盤,里面存放有必須的 APP、庫文件、配置文件。通過 NFS可以把 Ubuntu 的某個(gè)目錄,當(dāng)作板子的“C 盤”──Linux 中稱之為根文件系統(tǒng)。
Buildroot編譯完成之后生成的rootfs.tar.bz2,可以解壓之后放到NFS服務(wù)器上作為NFS ROOT文件系統(tǒng)供開發(fā)板使用。使用NFS文件系統(tǒng),便于程序的開發(fā)調(diào)試。所謂NFS服務(wù)器,就是我們在VMWare上運(yùn)行的Ubuntu。
使用NFS根文件文件系統(tǒng)之前時(shí),我們一般還會在u-boot使用tftpboot命令從Ubuntu或Windows中下載內(nèi)核文件zImage和設(shè)備樹文件,所以:
① 使用VMware橋接網(wǎng)絡(luò)時(shí):
Ubuntu上既要配置NFS服務(wù),也要配置TFTP服務(wù)。
① 使用VMware NAT網(wǎng)絡(luò)或Docker時(shí):
Ubuntu上要配置NFS服務(wù),Windows要運(yùn)行tftpd64程序。
對于Ubuntu,如果你按照《5.2 安裝Ubuntu軟件》來安裝過Ubuntu的軟件,那么NSF和TFTP服務(wù)都安裝好了。
也可以手工安裝這些服務(wù),請參考《8.4.1 在Ubuntu中安裝、配置NFS》安裝NFS服務(wù),參考《8.4.2 Ubuntu安裝TFTP服務(wù)》安裝TFTP服務(wù)。
8.7.1 準(zhǔn)備好文件
使用NFS根文件系統(tǒng)時(shí),涉及3個(gè)文件:uImage、設(shè)備樹(比如stm32mp157c-100ask-512d-lcd-v1.dtb)、rootfs.tar.bz2(解壓到Ubuntu某個(gè)目錄,比如/home/book/nfs_rootfs)。
在U-Boot中通過tftpboot命令從Ubuntu/Windows中下載內(nèi)核文件uImage、stm32mp157c-100ask-512dlcd-v1.dtb, 設(shè)置Uboot啟動(dòng)參數(shù)使用Ubuntu的某個(gè)目錄(比如/home/book/nfs_rootfs)作為根文件系統(tǒng)。
如果使用 VMware 橋接網(wǎng)絡(luò),將出廠鏡像或者自行編譯的 zImage 和設(shè)備樹文件 100ask_imx6ull-14x14.dtb,拷貝到 Ubuntu 的 /home/book/tftpboot 目錄。
如果使用 VMware NAT 網(wǎng)絡(luò)或 Docker,需要把這些文件復(fù)制到 Windows tftpd64 程序所指定的目錄。
把使用 buildroot 構(gòu)建得到的根文件系統(tǒng) rootfs.tar.bz2(在 buildroot2019.02/output/images 目錄
下),復(fù)制、解壓到 Ubuntu 的/etc/exports 文件中指定的目錄里,即復(fù)制到/home/book/nfs_rootfs 目錄
下,并解壓(注意:解壓時(shí)要用 sudo):
8.7.2 進(jìn)入 uboot 界面
使用 mobaxterm 工具打開開發(fā)板串口,此時(shí)將開發(fā)板上電,在打印 u-boot 時(shí)按下任意鍵進(jìn)入 uboot 界面。
8.7.2.1 測試開發(fā)板與 Ubuntu/Windows 是否聯(lián)通 (1) 如果使用 VMware 橋接網(wǎng)絡(luò)
查看 Ubuntu 系統(tǒng) IP 地址,如下圖所示在 Ubuntu 系統(tǒng)終端里使用 ifconfig 查看所有網(wǎng)絡(luò)設(shè)備的信息,獲取到當(dāng)前網(wǎng)卡設(shè)備的 IP 地址為 192.168.1.15 (也就意味著改 IP 地址的網(wǎng)段是 192.168.1.1)
先在 u-boot 中設(shè)置開發(fā)板 IP 為 192.168.1.112,然后在 u-boot 中使用 ping 命令測試開發(fā)板與 Ubuntu系統(tǒng)是否連通(出現(xiàn)“alive”就表示聯(lián)通):命令如下:
如果提示 host is alive 就表示開發(fā)板和 Ubuntu 系統(tǒng)可以互通,截圖示例如下所示。
(2) 如果使用 VMware NAT 網(wǎng)絡(luò)或 Docker
只需要確保開發(fā)板和 Windows 的網(wǎng)絡(luò)是聯(lián)通的,在 Windows 命令行中執(zhí)行“ipconfig”確定 Windows IP,然后在 Uboot 中 ping Windows IP。
可能由于防火墻或殺毒軟件的原因?qū)е?Uboot 無法 ping 通 Windows,那也沒關(guān)系,繼續(xù)往下走,有問題再說。
注意:板子正在運(yùn)行 Uboot 時(shí),Windows 是無法 ping 通開發(fā)板,因?yàn)?Uboot 的網(wǎng)絡(luò)功能不完善。如果想通過 Windows ping 開發(fā)板來驗(yàn)證網(wǎng)絡(luò),可以讓開發(fā)板啟動(dòng)進(jìn)入 Linux 后再去 ping 開發(fā)板。
如果有網(wǎng)絡(luò)問題,請參考:
《第 2 篇 環(huán)境搭建、Linux 基本操作、工具使用》
《6.4 驗(yàn)證開發(fā)板網(wǎng)絡(luò)》
8.7.2.2 使用網(wǎng)絡(luò)啟動(dòng)文件系統(tǒng)
注意:Uboot 只能使用 eth0,網(wǎng)線必須接入 eth0,如下:
(1) 對于使用 VMware NAT 網(wǎng)絡(luò)或 Docker
先在 Windows 啟動(dòng) tftpd64,并在該程序所指定目錄里放入 zImage 和設(shè)備樹文件。
再在 Ubuntu 的/home/book/nfs_rootfs 目錄下解壓好根文件系統(tǒng)。
然后在 U-Boot 控制臺執(zhí)行以下命令啟動(dòng)單板,假設(shè) Windows IP 是 192.168.1.100:
要注意的是上面第 4 條命令,必須指定“port=2049,mountport=9999”,這樣才能訪問到 Ubuntu 的 NFS目錄。
(2) 對于使用 VMware 橋接網(wǎng)絡(luò)
先在 Ubuntu 的 TFTP 目錄中放入 zImage 和設(shè)備樹文件,再在/home/book/nfs_rootfs 目錄下解壓好根文件系統(tǒng)。
然后在 U-Boot 控制臺執(zhí)行以下命令啟動(dòng)單板,假設(shè) Ubuntu IP 是 192.168.1.224:
=> setenv serverip 192.168.1.158 //設(shè)置服務(wù)器的 IP 地址,這里指的是 Ubuntu 主機(jī) IP => setenv ipaddr 192.168.1.112 //設(shè)置開發(fā)板的 IP 地址。 => tftpboot 0xc4000000 stm32mp157c-100ask-512d-lcd-v1.dtb; tftpboot c4100000 uImage; setenv bootargs root=/dev/nfs nfsroot=192.168.1.158:/home/book/nfs_rootfs,vers=3 rw ip=dhcp; bootm c4100000 - 0xc4000000-end-
全文下載:
嵌入式Linux系統(tǒng)開發(fā)完全手冊 第二版?weidongshan.gitee.io線上教學(xué)網(wǎng)站:
百問網(wǎng)嵌入式專家-韋東山嵌入式專注于嵌入式課程及硬件研發(fā)?www.100ask.net百問網(wǎng)開發(fā)板:
https://weidongshan.tmall.com/?weidongshan.tmall.com技術(shù)交流群(鴻蒙開發(fā)/Linux/嵌入式/驅(qū)動(dòng)/資料下載)
QQ群:869222007
http://weixin.qq.com/r/M0hvd2-EwjK9rSsU9x0h (二維碼自動(dòng)識別)
百問科技公眾號
http://weixin.qq.com/r/nkx-Z6jEa-UUrewE9xmM (二維碼自動(dòng)識別)
百問科技服務(wù)號
韋東山嵌入式Linux隨身課堂
總結(jié)
以上是生活随笔為你收集整理的选择的串口 _ 不存在或开发板没有连接_PC 和开发板之间传输文件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OFPPT-CTF 2022 部分wri
- 下一篇: 操作系统思维导图(一)