1. 程式人生 > >2018-2019-1 20165211 20165230 20165208 實驗一 開發環境的熟悉

2018-2019-1 20165211 20165230 20165208 實驗一 開發環境的熟悉

2018-2019-1 20165211 20165230 20165208 實驗一 開發環境的熟悉

實驗目的

  • 熟悉Linux開發環境;
  • 學會Linux開發環境的配置和使用;
  • 使用Linux的arm編譯。

實驗步驟

一、交叉編譯環境-(使用自己膝上型電腦)

知識點

  • 使用ifconfig命令得出的分別是ip地址/廣播/子網掩碼
  • 需要把VMware的網路介面卡設定為“橋接”模式,目標機與宿主機的IP必須在同一網段即處於同一區域網下面
  • 交叉編譯(cross-compilation)是指,在某個主機平臺上(比如PC上)用交叉編譯器編譯出可在其他平臺上(比如ARM上)執行的程式碼的過程。

實驗過程

1.安裝老師提供的software目錄中的“VMware-workstation-full-10.0.1-1379776.exe”
2.解壓老師提供的software目錄中的“Ubuntu1204.rar”
3.用VMWare開啟Ubuntu,使用者名稱:linux,口令:1

4.建立實驗目錄"mkdir linux_組員1學號-組員2學號"

 mkdir linux_20165211_20165230_20165208

5.在實驗目錄中編寫“hello word”程式,另外補充幾行列印所有組員的學號姓名

6.參考bocsd目錄中的指令碼armc.sh, 分別用gcc和交叉編譯器arm-none-linux-gnuenbi-gcc編譯hello.c,用gcc編譯的可執行檔案命名linuxhello:gcc hello.c -o linuxhello; 用arm-none-linux-gnuenbi-gcc編譯的命名為armhello: /usr/local/toolchain/toolchain4.3.2/bin/arm-none-linux-gnuenbi-gcc hello.c -o armhello


gcc helloworld.c -o linuxhello    這是在宿主機中執行的程式

/usr/local/toolchain/toolchain4.3.2/bin/arm-none-linux-gnuaenbi-gcc helloworld.c -o armhello        這是要傳到目標機中執行的程式

7.分別執行linuxhello,armhello,有什麼結果?提交截圖並用file命令分析原因。

結果分析
  • 用armhello檢視檔案型別是32位的執行檔案,但linux是64位的,因此要在超級終端上執行。

二、目標機宿主機聯通

實驗過程

1.使用自己膝上型電腦的,解壓超級終端軟體“windows7st(Windows).rar”,並在桌面上建立快捷方式(這個不用在實驗室做)

2.使用自己膝上型電腦的,到實驗室把“USB轉串列埠線”的USB口插入自己的電腦,把串列埠連到實驗箱的COM0

3.參考視訊配置超級終端,用超級終端作為實驗箱的顯示終端

  • 配置arm

4.用ifconfig在超級終端中檢視實驗箱IP(目標機),在Ubuntu中(宿主機)中用ifconfig在命令列檢視IP

  • 在超級終端中輸入ifconfig後檢視目標機IP:192.168.0.232

  • 在Ubuntu中輸入ifconfig後檢視宿主機IP:192.168.0.230

5.用網線連線實驗室桌上型電腦(或自己膝上型電腦)和ARM實驗箱的網口NET1(最大屏旁邊的)

6.用ping命令保證目標機和宿主機能互相ping通,提交ping通的截圖


三、目標機宿主機聯通

知識點

  • 理解tftp和nfs的作用

nfs是網路檔案系統,不是用來傳東西的,是把嵌入式的根檔案系統通過nfs放在網路上的某個介質中,nfs是通過乙太網中的udp傳送命令的。
tftp是通過TCP/IP協議用來在客戶機與伺服器之間進行簡單檔案傳輸的協議。
在用nfs傳輸時,目標板不需要事先建立的根檔案系統。

實驗過程

1.tftp與nfs的配置

2.在超級終端中用“mkdir /arm_組員1學號_組員2學號_組員3學號” 建立實驗箱中程式執行目錄“arm_組員1學號_組員2學號_組員3學號”

 mkdir /arm_20165211_20165230_20165208

3.在超級終端中執行“mount -t nfs -o nolock 宿主機IP:/home/linux/linux_組員1學號_組員2學號 /arm_組員1學號_組員2學號__組員3學號”通過NFS把宿主機中的“linux_組員1學號_組員2學號” 對映到目標機中的“/arm_組員1學號_組員2學號_組員3學號”

 mount -t nfs -o nolock 192.168.0.230:/home/linux/  /arm_20165211_20165230_20165208

4.超級終端中執行"cd /arm_組員1學號_組員2學號_組員3學號"

cd /arm_20165211_20165230_20165208

5.超級終端中執行"./armhello", 提交執行截圖,並深入理解交叉編譯

實驗中的問題及解決過程

1.在通過裝置管理器檢視埠號時發現沒有USB埠號,超級終端中也沒有COM3/4的選項。

  • 問題解決:通過檢視部落格,發現是沒有安裝USB驅動,將CH340驅動的壓縮包解壓顯示安裝成功,通過配置,超級終端軟體中出現了COM4,終端上開始顯示實驗箱的相關資料。

2.使用ping命令,目標機和宿主機不能互相ping通

  • 問題解決:不能ping通的原因是網路不能連線上,在通過查詢網上指導部落格和往屆學長學姐的部落格,我們還是不能使網路連線上,於是打算換成另一個搭檔的WIN7電腦嘗試,但她的電腦沒有USB埠號,即使下載了CH340驅動的壓縮包也不能彈出,嘗試了很久還是不能解決。由於之前配置超級終端已經用了許多時間,離截止的時間也很近了,我們從這個實驗內容開始使用另一臺成功安裝了虛擬機器的電腦。

新學到的知識點

  • 交叉編譯
    交叉編譯是指編譯器在某一個平臺下能夠編譯出另外一個平臺下執行的程式,主要是為了多平臺應用程式使用的
  • 宿主機與目標機

宿主機是執行編譯、連結嵌入式軟體的計算機,而目標機是執行嵌入式軟體的硬體平臺。宿主機可以通過串列埠、網路、USB、JTAG或者JLINK下載到目標機上將軟體放到目標機上。

  • NFS

nfs是網路檔案系統,不是用來傳東西的,是把嵌入式的根檔案系統通過nfs放在網路上的某個介質中,nfs是通過乙太網中的udp傳送命令的。

  • 超級終端

超級終端是一個通用的序列互動軟體,很多嵌入式應用的系統有與之交換的相應程式,通過這些程式,可以通過超級終端與嵌入式系統互動,使超級終端成為嵌入式系統的“顯示器”。
在這個實驗中,我們將超級終端看做目標機,與宿主機進行互動。

  • file命令

可以通過file 檔名來檢視這個檔案的型別

實驗體會

  • 最開始我們認為這個實驗很簡單,跟著婁老師的實驗指導以及往屆學長學姐的部落格便可以輕鬆完成,但是到了實驗室用實驗機的時候出現了很多問題,尤其是在網路的配置問題上,試了很多方法,看了網路無法連線的指導部落格、詢問了ping通的同學,最終也沒有ping通,這反映出了我們對網路配置的基礎知識沒有掌握,之前學習的時候沒有學紮實,在今後的學習中,要將這一塊知識補充學習,並在實驗課下將我們這次實驗的內容重新學習與實踐。

PSP時間

步驟 耗時 百分比
需求分析 10min 4%
設計 20min 9%
程式碼實現 0min 0%
測試 120min 57%
分析總結 60min 28%