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