Linux環境搭建--開發板端

上節完成了平臺端的環境搭建,我們的開發板端也要安裝相應的服務。

一.首先說一下我們開發板的啓動流程:

bootloader 初始化硬件,然後加載內核 kernel 然後掛接根文件系統,然後啓動我們的應用程序。

二.

當然第一步是要下載我們的bootloader,可以使用j-link等進行燒寫(不同板卡燒寫方式不同),一般我們使用SD卡的方式進行燒寫,SD卡需要製作成啓動卡,製作方法可以百度。將我們的bootloader放入SD卡中,

 

關閉開發板電源,將撥碼開關SW1調至(1000)(SD啓動模式)

剛纔做好的SD啓動盤插入SD卡插槽

打開電源

然後燒到我們的flash中,之後就可以通過bootloader來進行更多的操作。

(u-boot的移植適配板卡後期詳細說明)

boot燒寫完成後,之後就可以從flash啓動boot。撥號開關SW1 爲0110 (從EMMC(FLASH的一種) 啓動)

 

這個時候就可以通過串口查看到顯示信息了。

如果沒有打印信息,需要檢查以下幾個方面:

1. 連接串口線到板子的COM2口   //如果是用筆記本電腦的,需裝usb轉串口驅動(用360驅動大師在線裝方便)

2. 確認撥號開關SW1 爲0110 (從EMMC(FLASH的一種) 啓動)

3.  檢查 波特率設置, 流控設置

4. 可能爲flash中u-boot被破壞了,切換到SD卡啓動,重新燒寫boot(SW1 改爲1000)

 

 

三.配置網絡實現三板互通。

 

https://blog.csdn.net/thisway_diy/article/details/77976776 可以參考韋東山老師的教程。

其實也是比較簡單的,

------------------------          

 |板子   192.168.2.99   |

------------------------

------------------------

 |電腦 192.168.2.100   255.255.255.0  192.168.2.1 | //做中轉用,和板子虛擬機IP要在同一網段, 且不能和它們IP一樣    

------------------------

------------------------

 |虛擬機  192.168.2.129 |

 

此時我們通過電腦ping 虛擬機時ping的通的,但是虛擬機ping電腦是ping不通的。

這裏注意我們要關閉我們電腦的殺毒軟件,並且關閉防火牆。

windows 防火牆 à 高級設置 à 入站規則,啓動文件和打印機共享(ICMPv4-in 專用公用)

此時就可以ping通了。

 

電腦和虛擬機的IP設置完了,接着要設置板卡的IP了。

 

啓動板子,快速按任意鍵停在boot處,設置u-boot 的環境變量

# setenv serverip 192.168.2.129    //注意它與虛擬機裏 ubuntu 的ip要一致

# setenv ipaddr 192.168.2.99

# setenv gatewayip  192.168.2.1

# saveenv   保存設置

# pri  /*查看設置後效果                        

 

# ping 192.168.2.129   //測試網絡是否連通  ,注意在u-boot中, 它能ping電腦, 電腦不能ping它  //注意,要拔掉jtag線,否則ping 會重啓

host 192.168.2.129 is alive    //is alive 表示ok   

          

    

四.查看boot的指令

通過help我們可以看到支持很多的命令,也可以更具需要進行添加。

1.使用tftp服務,實現內核的加載

tftp使用時,服務器ip要設置我們電腦的IP。

# setenv bootcmd tftp 41000000 uImage\;tftp 42000000 exynos4412-fs4412.dtb\;bootm 41000000 - 42000000 /* 設置tftp方式加載內核

 

  setenv bootcmd    設置環境變量(自啓動命令 bootcmd)

  tftp 41000000 uImage\;  通過tftp從虛擬機/tftpboot目錄下下載內核uImage到板子    的內存  41000000 處。\; 用於分割多個命令

  tftp 42000000 exynos4412-fs4412.dtb  通過tftp下載設備樹文件 exynos4412-fs4412.dtb 到板子的內存  42000000 處

  bootm 41000000 - 42000000   啓動內核(41000000處放的是內核uImage, 42000000處放的是設備樹文件)

2.使用nfs服務,NFS根文件系統的掛載

首先啓動虛擬機服務端的nfs服務。

虛擬機端cat /etc/exports 來查看路徑。

 

#setenv bootargs root=/dev/nfs nfsroot=192.168.2.129:/nfs/rootfs rw console=ttySAC2,115200 init=/linuxrc ip=192.168.2.99  /* 掛載nfs  rootfs

  setenv bootarg  設置環境變量( bootarg是啓動參數)

  root=/dev/nfs  指定根文件系統類型是 nfs

  nfsroot=192.168.2.129:/nfs/rootfs  指定source rootfs的位置(是在ip 是192.168.9.120的機器上 ,的/source/rootfs目錄下). 注意/nfs/rootfs必須和前面NFS服務配置文件設置一致             

  # savenenv //保存環境變量

 

但是還是掛接不上,但是內核已經啓動起來了。

參數正確,網絡沒問題,nfs虛擬機掛接沒有問題,但是還是不行。

加載文件系統失敗,具體原因應該是內核權限配置問題,在之後的內核編譯中在詳細進行問題查找。先更換內核繼續進行。

 

五.練習

完成了環境的搭建。在電腦裏寫一個應用程序如hello.c ,裏面就簡單的輸出你的創客註冊的名字。 通過NFS的同步, 在板子上能運行該程序,輸出你的名字?

1. 掛接上虛擬機的nfs文件系統,後將編譯好的程序直接放到虛擬機目錄下,開發板就能直接查看,然後直接運行即可,注意程序要使用arm-gcc 工具鏈進行編譯。

 

arm-cortex_a8-linux-gnueabi-gcc hello.c -o hello

cp hello /home/linux/nfs/rootfs/ 目錄下。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章