借助 U 盤或 TF 卡拷貝程序到開發板上
????????我們已經學習了怎么在 ubuntu 和 windows 上互傳文件,那么怎么把 ubuntu 或 win 上的程序拷貝到開發板呢,這里給大家介紹第一種方法,使用 U 盤或者 TF 卡來完成,如果大家使用的是 U 盤,那么大家直接把 U 盤插到電腦上就可以了,如果大家使用的是 TF 卡,那么大家要把 TF 卡連接到讀卡器上,然后把讀卡器插到電腦,其他的操作方法都是一樣的,我就不給大家做區分了,我現在把 U 盤插到電腦上。
一、步驟一:保證 U 盤或者 TF 卡的格式為 FAT32 格式,TF 卡要用讀卡器和電腦相連。
????????我們首先要檢查 U 盤或者 TF 卡是不是 FAT32 格式的,打開我的電腦,然后找到識別出來的 U 盤或 TF卡的盤符,點擊右鍵,選擇屬性,我們可以看到文件系統 FAT32 ,就是文件系統的類型,這里我們要使用FAT32 格式,不能使用其他格式。
????????????????????????????????????????
????????如果大家的格式不是這個,可以格式化一下,選中 U 盤或者 TF 卡,點擊右鍵,選擇格式化,文件系統這里選擇默認的 FAT32 格式,然后點擊開始。
????????我們格式化之前要保證 U 盤或 TF 卡里面沒有重要的東西,因為格式化完了,里面的東西就全部沒有了,如果大家之前的 U 盤或者 TF 卡分成了好幾個區,就要先把它變成一個區然后在格式化。
????????我們 TF 卡使用讀卡器和電腦相連,然后我們虛擬機 VM 軟件識別出來的就是 U 盤而不是 TF 卡,如果你直接插 TF 卡,那么虛擬機軟件可能會識別不出來,所以要用讀卡器和電腦相連,把 windows 上的文件或程序拷貝到 TF 卡。
二、步驟二:把 U 盤或者 TF 卡連接到 VMware 軟件上,然后使用 df 命令確定掛載的路徑。
????????我們要怎么把 ubuntu 上的文件拷貝到 U 盤或者 TF 卡呢。
????????第一步,我們要把 U 盤或者 TF 卡連接到虛擬機 VM,我們可以點擊 VM 里“虛擬機”這個選項,選擇“可移動設備”,然后選擇“Unknown Mass Storage ”,連接(斷開與主機的連接),()里是斷開與機的連接,這就是說我們選上這個選項之后,他會把我們的 U 盤或者 TF 卡與 windows 電腦連接斷開,然后把它們連接到 ubuntu 上,我們點一下,連接成功以后,ubuntu 會彈出來 U 盤或者 TF 卡里面的存儲的界面。彈出這個界面就說明我們已經連接成功了,如下圖所示。點擊左上角的 x 關掉這個界面
????????把ubuntu里面的程序或者文件拷貝到TF卡,我們就可以使用df命令查看U盤或者TF卡掛載到了Ubuntu 哪個目錄上,我先把 U 盤斷開,點擊“可移動設備”,然后斷開連接。如下圖所示。
????????現在我的 windows 電腦已經識別了 U 盤,說明他已經從虛擬機里面斷開了,然后我輸入 df 命令。如圖所示。接著我再把 U 盤連接到虛擬機軟件里,連接成功之后,再輸入 df 命令。如圖 29.4 所示。
????????我們對比下這兩個 df 命令的輸出結果,我們第二次輸入 df 命令 ,這里多了個 /dev/sda1 的設備,那么這個設備就是 U 盤或者 TF 卡,我們第一次沒有連接 U 盤或者 TF 卡的時候是沒有這個設備的,如下圖所示。
????????設備掛載到了 mounted on 這個掛載點,它掛載到了這個路徑上,我們直接可以使用 “cd “命令進到這個路徑。如下圖所示。
????????這個路徑下面就是我們的 U 盤或者 TF 卡里面的文件列表,我們的內容都可以在這個路徑下看到,我們可以來試一下,我現在再打開一個控制臺,我們還是使用之前的 hello.c 作為例子,我們使用交叉編譯器來編譯這個 .c 文件,因為這個可執行文件是要在開發板運行的,所以我們這里要使用交叉編譯器,輸入
????????arm-linux-gnueabihf-gcc hello.c -o hello? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
????????可以看到是在 arm 運行的,如下圖所示。
????????然后我們把這個可執行文件拷貝到 U 盤或者 TF 卡上,直接使用 cp 命令,如下圖所示。
????????這就是我們的路徑,把它復制過來,然后我們再來看下,拷貝成功,如下圖所示。
????????我們已經把 hello 這個可執行文件拷貝到我們的 U 盤上了,然后我們斷開連接,我們把它連接 win 電腦上,我們打開看一下,這里面就多了個 hello 的可執行程序。如下圖所示。
三、步驟三:把 U 盤或 TF 卡連接到開發板,TF 卡使用讀卡器和開發板連接
????????接著就可以把 U 盤或者 TF 卡拔下來連接到開發板上了。我們先給開發板上電,連接好超級終端,這里作者已經連接好了,然后我們啟動開發板,現在把 U 盤從電腦上拔下來,我們等待系統啟動成功。系統啟動成功之后我們就可以把 U 盤或者 TF 卡連接到 TF 上了,這里大家使用 TF 卡的話,大家要用讀卡器連接到我們的開發板上。如下圖所示。
????????
????????作者開發板的啟動是 yocto 文件系統,我現在把 U 盤插到開發板上,插好了之后我們開發板會彈出來一些打印信息,這個是正常的。如下圖所示。
????????作者是連接到這個 USB 口上,搭建連接到下邊的 USB 口也是沒有問題的,如下圖所示。
????????
????????我們要怎么訪問我們的 U 盤或者 TF 卡呢。
????????第一步我們要先知道,U 盤或者 TF 卡掛載到了哪個路徑上,就跟我們在 ubuntu 上使用 df 命令是一樣的,我們可以在開發板上同樣敲入 df 命令。如下圖所示。
????????這里面的根目錄下的 sdb1 就是我們 U 盤或者 TF 卡的設備,它掛載到了 /run/media/sdb1 這個路徑上大家也可以把我們的U盤或者 TF卡拔下來對比下,然后我們進到這個路徑,直接使用 cd /run/media/sdb1 我們就可以看到 hello 這個可執行文件了,如下圖所示。
????????我們可以直接使用 cp 命令把它拷貝到開發板 opt 目錄下,輸入 cp hello /opt 然后我們進到根目錄的opt 目錄下,輸入 cd /opt 我們可以運行下 hello 這個可執行文件,我們先給他改下權限,改成 777 輸入chmod 777 hello ,我們運行下./hello,這樣他就打印了 hello world! 如下圖所示。
????????因為我這里給開發板燒寫的是 yocto 的文件系統,yocto 文件系統是自動掛載 U 盤和 TF 卡的。什么是自動掛載呢,自動掛載就是不用再手動使用命令把我們的 U 盤或者是 TF 卡掛載到我們的掛載點上,即自動幫你完成掛載到 /run/media/sdb1 這個路徑上,但是有的文件系統不會自動幫你掛載,比如說 busyboxy 、buildroot 默認是不會幫你自動掛載的,我們就可以手動先來掛載下,我把開發板的文件系統燒寫成 busybox文件系統,燒寫過程就不給大家演示了,然后我們再來看下,我們要怎么使用命令來掛載。我現在給開發板燒寫好了 busybox 文件系統,然后我插上 U 盤,插上 U 盤之后,他會彈出來一些打印信息,我們可以通過這個打印信息就可以知道識別出來的是 dev 下邊的哪個設備,他這里識別的是 sdb1 。如下圖所示。
????????然后我使用 df 命令,下面是沒有自動掛載我們 dev 下邊 sdb1 設備的,如下圖所示。
????????這時候我們就要使用手動掛載,手動掛載我們使用的是 mount 命令,我們輸入這個命令 ,
????????mount 設備名稱 掛載點 ,
????????設備的名稱是 dev 下邊的 sdb1 ,
????????我們把它掛載到 mnt 路徑,也就是我們的掛載點是 mnt ,如下圖所示。
????????mount /dev/sdb1 /mnt? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
????????mnt 的作用我們在之前 fsh 規范的時候已經講過了,然后我們再使用 df 命令,我們再來查看下,這里就多了一個設備,如下圖所示。
????????然后它掛載到了 mnt 上,然后我們進到 mnt 這個命令,ls 看一下,這里面就有 hello 這個可執行程序,如下圖所示。
????????所以說這個目錄下就是我們 U 盤的目錄,我們可以把 hello 拷貝到開發板上,我們把它拷貝到根目錄下,然后我們來運行下也是沒有問題的,如下圖所示。
????????有的文件系統是不會給你彈出來打印信息的,這時候我們要怎么確定他識別出來的是 dev 下邊哪個設備呢,比如說 ubuntu 你插上 U 盤之后,他是沒有打印信息的,這時候就不知道是 sda1 還是 sdb1 ,我們可以使用 cat 命令查看下準確信息,我們直接使用這個命令,他下邊的 sdb1 就是我們的 U 盤,如下圖所示。
????????我們可以拔掉 U 盤,然后我們再來查看下,他就沒有這個 sdb1 了,所以說這個分區信息就是 U 盤的,如下圖所示。
????????然后我們在插上他。我們這里 TF 卡連接到開發板也使用讀卡器連接的
????????連接好了之后,第一步先使用 df 命令查看下我們當前的文件系統是不是自動掛載的 U 盤或者 TF 卡,如果不是自動掛載的,我們要用 mount 命令來掛載一下。如下圖所示。
mount 命令格式 :
mount 設備名稱 掛載點
使用 mount 命令我們要先確定我們的設備名稱,這個設備名稱就是 dev 下邊的 sdb1 ,mnt 是掛載點????????
mount /dev/sdb1 /mnt? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
設備名稱的確定我們可以通過打印信息來查看,如果插上沒有打印信息,我們可以使用 cat 命令來查看下分區信息,輸入? ?cat /proc/partitions? ?
????????如果我們的 U 盤或者 TF 卡時自動掛載的,我們接下來直接訪問就可以了。
????????我們要怎么卸載呢,我們使用的是 umount 命令,
????????卸載命令:umount 命令
????????格式:umount 掛載點
????????我現在卸載掉 U 盤掛載的 mnt 這個掛載點,我們直接輸入 umount ,后邊跟我們的掛載點就可以了,我們輸入 umount /mnt?
????????卸載后,我們來查看下,這里就沒有我們 dev/sda1 掛載的 mnt 這個掛載點了,如下圖所示。
四、TF 卡直接和卡座連接
????????開發板上也預留了 TF 卡座子給大家,我們可以不使用讀卡器和開發板連接,直接把 TF 插到我們的開發板 TF 卡座子上,如下圖所示。剛剛我已經把 U 盤拔下來了,作者現在把 TF 卡插到這個座子,
????????然后我們看下,我們在超級終端就打印出了我們插上 TF 卡之后的打印信息。如下圖所示。
????????我們按照剛剛學到的,我們第一步要判斷下他有沒有給我們自動掛載,使用 df 命令,顯然他這里是沒有給我們自動掛載的。如下圖所示。
????????我就要使用 mount 命令手動掛載一下,我先要確定我設備的名稱,設備的名稱我這里可以通過打印信息來確定,他這里打印的是 mmcblk0:p1 ,如下圖所示。
????????我們使用 mount /dev/mmcblk0p1 /mnt 然后在使用 df 命令來查看下,我們 TF 卡就掛載到了 mnt 這個掛載點,我們使用 cd /mnt 直接訪問就可以了,ls 看到 TF 卡里的信息,這個是 TF 卡自帶的一個文件和 hello文件,如下圖所示。
????????使用 U 盤或者 TF 卡拷貝文件到開發板上,我們一般是在開發板沒有預留出網口等其他接口的時候,我們使用這個辦法來拷貝,因為比較麻煩。
????????我們來總結下,第一步要保證 U 盤或者 TF 卡的格式為 FAT32 格式,我們把文件或者是程序拷貝到 U盤或者 TF 卡之后,連接到開發板上,連接好之后我們要先確定我們的開發板上有沒有自動掛載,使用 df命令來查看,如果他是自動掛載的,我們直接訪問掛載的路徑就可以了,如果不是自動掛載的,我們要使用 mount 命令手動掛載,使用 mount 命令我們要確定設備的名稱,確定設備的名稱我們可以通過打印信息來確定,如果沒有打印信息,我們可以通過查看分區信息命令來確定,然后我們手動掛載上之后就可以直接訪問我們的掛載點也就是訪問我們的 U 盤或者 TF 卡了,這個思路并不難,大家可以自己體驗下。