第2課 在開發板上運行程序


2.1 准備工作

在第一課的基礎上,還要做一些准備工作,

第一,需要在Windows上安裝一個軟件“SecureCRT”和一個驅動“綠聯USB-RS232”,SecureCRT是一款用於連接運行Windows和Linux的理想工具,安裝以及破解教程參照鏈接https://www.cnblogs.com/qingtingzhe/articles/5008902.html

“綠聯USB-RS232“是一款USB轉RS232串口的驅動,在本次實驗中,主要利用開發板的串口向計算機發送數據,達到顯示的目的(因為開發板沒有顯示器)。

第二,需要在ubuntu上安裝tftp服務。具體步驟如下:

1)安裝tftp-hpa,tftpd-hpa

sudo apt-get install tftp-hpa tftpd-hpa

tftp-hpa是client,tftpd-hpa是server

2) 配置tftpd-hpa

sudo gedit /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"

TFTP_DIRECTORY="/tftpboot"       此目錄為tftp的工作目錄,可以根據需要來設置。

TFTP_ADDRESS="0.0.0.0:69"

TFTP_OPTIONS=" -l -c -s“

其中,TFTP_DIRECTORY="/tftpboot",此目錄為tftp的工作目錄,可以根據需要來設置。

3)設置tftpboot文件夾的權限

sudo chmod 777 /tftpboot

4)重啟tftpd-hpa服務

sudo service tftpd-hpa restart

 

表示重啟成功。

ps -ef |grep tftp  能看到tftpd-hpa進程

 

5)測試

在tftpboot目錄下建立a.txt,在其他目錄下(注意是當前用戶可以操作的目錄,否則get是會提示permission denied)建立b.txt:

接下來在b.txt所在的目錄下執行:

tftp localhost

tftp>get a.txt //下載tftproot中的文件

tftp>put b.txt //上傳到tftproot中

tftp>quit //離開

執行完以上代碼后,可以在b.txt所在的目錄中看到a.txt文件;在·tftpboot下看到b.txt文件,那么tftp服務就安裝完成了。

2.2 第一個uClinux程序

首先在/work/uClinux-dist/user/目錄下建一個scu的文件夾。

 

修改user目錄下的Makefile文件,

 

在該Makefile里增加dir_y+=scu,如下圖

 

在scu目錄下創建一個hello.c文件,

 

在文本編輯框里輸入一個簡單的C語言程序,比如打印輸出一個Hello,uClinux!如下圖,寫完以后保存,退出。

 

在scu目錄下創建一個Makefile文件,

 

在Makefile里編寫如下的代碼

 

其中注意命令要有一個TAB鍵的距離。完成以后保存退出。

然后,進入/work/uClinux-dist目錄下,執行以下語句,僅編譯應用程序。

 

其次安裝文件到/work/uClinux-dist/romfs,執行下語句。

 

為應用程序創建一個鏡像,

 

完成以上步驟以后,完成了第一個uClinux應用程序,接下來就需要和開發板聯合起來測試了。

2.3 程序下載

硬件系統如下圖,連接方式是將串口線和雙絞線將電腦和開發板連接起來,雙絞線應插在LAN口。

 

第一,設置Linux的網絡,按照步驟以及相應的數據填寫進去,保存就行了。

 

 

第二,更改Windows的網絡設置,進入控制面板->網絡和internet->網絡連接,如下圖。應該選擇計算機網卡所在的以太網,下圖紅框標注的以太網,並打開該以太網的屬性。

 

接下來的設置下圖的步驟,按照下圖進行,其中IP地址“192.168.0.x”,x代表你想設置的值,只要不沖突。設置完,確定。做完該實驗以后,如果想要恢復internet網絡連接,需要設為“自動獲得IP地址(O)”,不然連不上網,也就是說要恢復現場。

 

第三,修改虛擬機的設置,虛擬機->設置,硬件選項卡下的網絡適配器,選擇橋接模式,如下圖。做完該實驗以后,將虛擬機的網絡連接手動恢復成NAT模式。

以上步驟完成了以后,將目標版和計算機連接起來,此時打開計算機的設備管理器,查看端口號,如下圖所示,是COM5,右鍵點開COM5的屬性,設置成38400,8,無,1和無。點擊確定,退出設備管理器。

 

打開SecureCRT軟件,紅框里面的設置要和上面的對應一致。點擊“Connect”,

 

回到Ubuntu系統,重啟tftp服務和關閉防火牆。

sudo service tftpd-hpa restart

sudo ufw disable

給開發板上電,並立刻按下任意鍵,鼠標指針停在rtlcboot>后,執行下面語句,用TFTP將應用程序的映像下載到開發板,

tftp 20000 zRomfs

如果成功了,會給出zRomfs的大小,比如會有“Bytes transferred = 199511(30b57 hex)”,如果失敗了,會一直有“ARP broadcast 1,2,3……”;解決的辦法,回到ubuntu系統,重啟tftp服務,然后ping一下:ping 192.168.0.222是否通的,然后再進行開發板上電。

 

應用程序的映像下完以后,將程序映像寫到開發板里,執行下面這條語句:

fburn 20000 fff70000 30b57

30b57是zRomfs的大小,每個人的都可能不一樣,根據第一條語句末尾的給出的大小來改。

執行完以后,轉到ffff0000地址里去:

go ffff0000

接下來執行 cd bin

用ls查看bin里面的文件,清楚的看到有hello這一個可執行的文件,運行hello,也就是:./hello

打印輸出了“Hello,uClinux!“,正是我們在之前hello.c里面編寫輸出的內容。

 

至此,整個過程就圓滿結束了。

2.4 總結

整個過程是紛繁復雜的,我也是一步步的進坑、出坑,進陷阱、爬陷進過來的,心態都搞崩,但當結果出來的時候,好像什么痛苦都沒經歷過似的心里狂喜。我把它寫的比較詳細,整個過程一步一步走下來,是沒有什么問題的,以后再看,再做就簡單許多。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM