從網(wǎng)絡(luò)啟動 linux 系統(tǒng)的唯一目的就是為了調(diào)試!不管是為了調(diào)試 linux 系統(tǒng)還是 linux 下的驅(qū)動。每次修改 linux 系統(tǒng)文件或者 linux 下的某個驅(qū)動以后都要將其燒寫到 EMMC 中去測試,這樣太麻煩了。我們可以設(shè)置 linux 從網(wǎng)絡(luò)啟動,也就是將 linux 鏡像文件和根文件系統(tǒng)都放到 Ubuntu 下某個指定的文件夾中,這樣每次重新編譯 linux 內(nèi)核或者某個 linux 驅(qū)動以后只需要使用 cp 命令將其拷貝到這個指定的文件夾中即可,這樣就不用需要頻繁的燒寫 EMMC,這樣就加快了開發(fā)速度。
|配置網(wǎng)絡(luò)
uboot是支持網(wǎng)絡(luò)的,在移植uboot的時候一般都要調(diào)通網(wǎng)絡(luò)功能,因為在移植linuxkernel的時候需要使用到uboot的網(wǎng)絡(luò)功能做調(diào)試。uboot支持大量的網(wǎng)絡(luò)相關(guān)命令,比如 dhcp、ping、nfs 和 tftpboot。
(啟動時打印信息)
(網(wǎng)絡(luò)相關(guān)的變量)
1、連接網(wǎng)線,網(wǎng)線一定要接在左邊那個網(wǎng)口,uboot的FEC1就是這個網(wǎng)口;
2、 配置uboot的網(wǎng)絡(luò),把下面命令全部輸入uboot面板中;
setenvipaddr192.168.2.50//開發(fā)板IP地址 setenv ethaddr b8:ae:1d:01:00:00 //開發(fā)板網(wǎng)卡 MAC 地址 setenvgatewayip192.168.2.1//開發(fā)板默認網(wǎng)關(guān) setenv netmask 255.255.255.0 //開發(fā)板子網(wǎng)掩碼 setenvserverip192.168.2.55/服務(wù)器地址,也就是Ubuntu地址 saveenv//保存環(huán)境變量
上面的配置不一定適合所有,請根據(jù)實際網(wǎng)絡(luò)進行配置:
Windows電腦的cmd中的ipconfig指令來查看;
linux的電腦使用ifconfig指令來查看;
注意:虛擬機中的ubuntu要使用【橋接】,然后在【虛擬網(wǎng)絡(luò)編輯器】中添加橋接的網(wǎng)絡(luò),不懂就百度一下,一定要保證物理機和虛擬機的網(wǎng)絡(luò)在同一個網(wǎng)段,并且能ping通,若ping不通物理機,可以關(guān)閉【防火墻】再嘗試;
3、測試是否ping通
| 搭建TFTP服務(wù)
tftp 命令的作用和 nfs 命令一樣,都是用于通過網(wǎng)絡(luò)下載東西到 DRAM 中,只是 tftp 命令使用的 TFTP 協(xié)議,Ubuntu 主機作為 TFTP 服務(wù)器。因此需要在 Ubuntu 上搭建 TFTP 服務(wù)器,需要安裝 tftp-hpa 和 tftpd-hpa,命令如下:
sudo apt-get install tftp-hpa tftpd-hpa sudo apt-get install xinetd
TFTP也需要一個文件夾來存放文件,在用戶目錄下新建一個目錄,示例命令如下:
//創(chuàng)建文件夾 mkdir /home/noah/linux/tftpboot // 賦予權(quán)限 chmod 777 /home/noah/linux/tftpboot
最后配置 tftp,安裝完成以后新建文件/etc/xinetd.d/tftp,如果沒有/etc/xinetd.d 目錄的話自行創(chuàng)建,然后在里面輸入如下內(nèi)容:
server tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /home/noah/linux/tftpboot/ disable = no per_source = 11 cps = 100 2 flags = IPv4 }
配置完后啟動tftp服務(wù),命令如下:
sudo service tftpd-hpa start
打開/etc/default/tftpd-hpa文件,將其修改為如下所示內(nèi)容:
# /etc/default/tftpd-hpa TFTP_USERNAME="tftp" TFTP_DIRECTORY="/home/noah/linux/tftpboot" TFTP_ADDRESS=":69" TFTP_OPTIONS="-l -c -s"TFTP_DIRECTORY 就是上面創(chuàng)建的 tftp 文件夾目錄,以后我們就將所有需要通過TFTP 傳輸?shù)奈募挤诺竭@個文件夾里面,并且要給予這些文件相應(yīng)的權(quán)限。 最后輸入如下命令, 重啟 tftp 服務(wù)器:
sudo service tftpd-hpa restarttftp 服務(wù)器已經(jīng)搭建好了,接下來就是使用了。 | 測試驗證 將 zImage 鏡像文件拷貝到 tftpboot 文件夾中,并且給予 zImage 相應(yīng)的權(quán)限,命令如下:
chmod 777 zImage
uboot串口交互指令中的「tftp命令格式」如下:
tftpboot [loadAddress] [[hostIPaddr:]bootfilename]
loadAddress:文件在DRAM中的存放地址;
[[hostIPaddr:]bootfilename]:要從Ubuntu中下載的文件;
注意:tftp傳輸文件,不需要輸入文件在Ubuntu中的完整路徑,只需要輸入文件名即可。
比如我們現(xiàn)在將 tftpboot 文件夾里面的 zImage 文件下載到開發(fā)板 DRAM 的 0X80800000 地址處,命令如下:
tftp 80800000 zImage
|啟動Linux
1、設(shè)置環(huán)境變量,命令如下:
setenv bootargs 'console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw' setenv bootcmd 'tftp 80800000 zImage; tftp 83000000 imx6ull-14x14-evk-emmc.dtb; bootz 80800000 - 83000000' saveenv
2、通過tftp將zImage和設(shè)備樹下載到板子的RAM中,命令如下:
tftp 80800000 zImage tftp 83000000 imx6ull-14x14-evk-emmc.dtb
使用到的文件有「野火提供的yocto的zImage和dtb文件」,可以在野火公開文件包中找到;
3、啟動內(nèi)核,命令如下:
bootz 80800000 - 83000000
4、啟動成功
至此,uboot的移植基本完成,可以啟動Linux內(nèi)核。啟動內(nèi)核之后,uboot的使命就完成了。
-
Linux系統(tǒng)
+關(guān)注
關(guān)注
4文章
591瀏覽量
27352 -
編輯器
+關(guān)注
關(guān)注
1文章
801瀏覽量
31118 -
emmc
+關(guān)注
關(guān)注
7文章
200瀏覽量
52606
原文標題:i.MX6ULL|從網(wǎng)絡(luò)啟動 Linux 系統(tǒng)
文章出處:【微信號:玩轉(zhuǎn)單片機,微信公眾號:玩轉(zhuǎn)單片機】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論