嵌入式開發(fā)通常使用主機(jī)-開發(fā)板的開發(fā)模式,在裸板開發(fā)中,我們通常使用串口調(diào)試工具傳遞文件,比如windows平臺(tái)的超級(jí)終端,SecuCRT以及Linux平臺(tái)的ckermit(題外話:ckermit比windows的那兩個(gè)快多了)。但在OS的開發(fā)環(huán)境中,由于程序復(fù)雜,規(guī)模巨大,串口的低速和易錯(cuò)就不再適合我們開發(fā)了,而在這種環(huán)境下,基于網(wǎng)絡(luò)的開發(fā)環(huán)境由于高速和準(zhǔn)確受到了大家的青睞。

結(jié)構(gòu)說明

在有OS的嵌入式系統(tǒng)中,SoC的啟動(dòng)過程有3個(gè)加載。

  1. 上電的第一個(gè)程序就是片上固化的啟動(dòng)代碼,它負(fù)責(zé)把bootloader從Flash中加載到內(nèi)存中并執(zhí)行
  2. bootloader會(huì)從Flash中加載Linux內(nèi)核以及設(shè)備樹文件到內(nèi)存,并對兩者進(jìn)行相關(guān)的配置。完成所有工作后跳轉(zhuǎn)到內(nèi)核的首地址
  3. 內(nèi)核接管bootloader配置好的硬件資源,內(nèi)核啟動(dòng)過程中非常重要的一件事就是掛載文件系統(tǒng)。

在開發(fā)過程中,由于bootloader通常都具有網(wǎng)絡(luò)功能,而linux內(nèi)核,設(shè)備樹dts和文件系統(tǒng)fs都是不斷迭代的,所以我們自然希望通過配置bootloader的網(wǎng)絡(luò)功能使其直接通過服務(wù)器(開發(fā)主機(jī))下載內(nèi)核并進(jìn)一步下載設(shè)備樹文件(tftp),甚至直接掛接網(wǎng)絡(luò)上的文件系統(tǒng)(nfs)。整個(gè)開發(fā)環(huán)境的結(jié)構(gòu)框圖如下:

tftp的安裝和配置

tftp即tiny ftp,是一種輕型的ftp協(xié)議,ubuntu下可以使用下面這個(gè)小腳本安裝并配置。

#!/bin/bash echo "Please input tftpdir" read tftpdir
sudo mkdir $tftpdir #創(chuàng)建用于傳輸文件的目錄 sudo chmod 0777 $tftpdir sudo apt-get install tftp-hpa tftpd-hpa xinetd -y #sudo vi /etc/default/tftp-hpa sudo touch /etc/default/tftpd-hpa
sudo chmod 0777 /etc/default/tftpd-hpa
sudo echo "TFTP_USERNAME=\"tftp\"" > /etc/default/tftpd-hpa
sudo echo "TFTP_DIRECTORY=\"$tftpdir\"" >> /etc/default/tftpd-hpa #tftpd-hpa的服務(wù)目錄,這個(gè)想建立在哪里都行 sudo echo "TFTP_ADDRESS=\"0.0.0.0:69\"" >> /etc/default/tftpd-hpa 
        		

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式