上一篇文章介紹了,怎么在調(diào)試開發(fā)板以及開發(fā)板上運(yùn)行程序
本篇文章介紹,怎么更新開發(fā)板系統(tǒng)?
一、開發(fā)板開發(fā)流程介紹
開發(fā)板裸機(jī)開發(fā)流程
對于功能簡單僅包括應(yīng)用程序的嵌入式系統(tǒng)一般不使用操作系統(tǒng),我們可使用類似單片機(jī)開發(fā)的步驟完成整個開發(fā)。
1.硬件開發(fā)(PCB、原理圖 ——硬件工程師 2.啟動代碼(硬件初始化)——芯片廠商(匯編) 3.設(shè)備驅(qū)動(裸機(jī)下驅(qū)動——驅(qū)動工程師 4.應(yīng)用程序(單任務(wù))——應(yīng)用工程師
開發(fā)板帶操作系統(tǒng)開發(fā)流程
當(dāng)設(shè)計較復(fù)雜的程序時,可能就需要一個操作系統(tǒng)(OS)來管理控制內(nèi)存、多任務(wù)、周邊資源等
1.硬件開發(fā)(PCB、原理圖) 2.啟動加載程(bootloader) 3.操作系統(tǒng)內(nèi)核(kernel) 4.根文件系統(tǒng) (root) 5.設(shè)備驅(qū)動 (driver) 6.應(yīng)用程序 (進(jìn)程、線程、GUI、網(wǎng)絡(luò)、數(shù)據(jù)庫等)
二、開發(fā)板系統(tǒng)組成(軟件)
bootloader、kernel(driver)、rootfs、app層次
2.1 BootLoader
定義:
系統(tǒng)加電后,在操作系統(tǒng)內(nèi)核或用戶應(yīng)用程序運(yùn)行之前運(yùn)行的一段或多段程序
作用:
將系統(tǒng)的軟件硬件環(huán)境帶到一個合適的狀態(tài),為調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境,類似于pc上的BIOS.(PC在BIOS之后仍然會啟動bootloader)
2.2 linux內(nèi)核
是linux系統(tǒng)軟件的核心,它的性能對整個系統(tǒng)的性能起決定作用 由linus領(lǐng)導(dǎo)的開源社區(qū)對其進(jìn)行甄別和修改最終決定是否進(jìn)入到linux主線內(nèi)核源碼中 http://www.kernel.org是內(nèi)核源碼的主要來源,所有來自全世界的對linux源碼的修改最終都會匯總到這個網(wǎng)站 linux內(nèi)核實(shí)現(xiàn)了操作系統(tǒng)的五大功能模塊: 進(jìn)程管理\內(nèi)存管理\文件系統(tǒng)\設(shè)備控制\網(wǎng)絡(luò)
2.3 linux驅(qū)動程序
驅(qū)動程序就是溝通用戶與各式各樣、千變?nèi)f化硬件的橋梁 驅(qū)動程序也是一類程序,其作用是驅(qū)動硬件正常工作,沒有他,嵌入式將寸步難行 例如:lcd、flash、ad、網(wǎng)絡(luò)等正常工作都需要相應(yīng)的驅(qū)動程序來支持
2.4根文件系統(tǒng)
存放linux系統(tǒng)所需:重要文件、命令、應(yīng)用程序等都保存在根文件系統(tǒng)中,操作系統(tǒng)起來后可以直接使用 在啟動內(nèi)核后需要掛載根文件系統(tǒng) 1、包含linux內(nèi)核啟動必須的配置文件,如:開機(jī)密碼、網(wǎng)絡(luò)配置腳本、環(huán)境變量等 2、應(yīng)用程序運(yùn)行需要的庫函數(shù)等 3、常用應(yīng)用程序:ftp、vi、telnet、web服務(wù)器等
2.5 linux應(yīng)用程序
嵌入式linux應(yīng)用程序開發(fā)可以說是嵌入式系統(tǒng)中最重要的組成部分 我們做出來產(chǎn)品最終是什么,完全看應(yīng)用程序怎么寫 基于本地圖形庫:QT、miniGUI、MicroWindows 基于網(wǎng)絡(luò):CS結(jié)構(gòu)、BS結(jié)構(gòu)、路由轉(zhuǎn)發(fā)、組網(wǎng) 基于數(shù)據(jù)存儲與處理:sqllite等 基于設(shè)備控制:uart、can、iic、spi等
三、bootloader、內(nèi)核、根文件系統(tǒng)燒寫
bootloader是系統(tǒng)加電后運(yùn)行的第一段程序,因此需要我們把bootloader燒入以下介質(zhì),完成啟動。
USB更新系統(tǒng)步驟
step1:初始化USB,準(zhǔn)備與上位機(jī)通信。 step2:在上位機(jī)(XP)上運(yùn)行fastboot軟件。 step3:修改開發(fā)板的環(huán)境變量。
step1:初始化USB,準(zhǔn)備與上位機(jī)通信
讓開發(fā)板停在bootloader命令行界面: 開發(fā)板的串口1和電腦的串口通過串口線連接后,打開開發(fā)板電源。當(dāng)串口軟件上出現(xiàn)"Hit any key to stop autoboot"時迅速按下電腦鍵盤上一任意按鍵。
開發(fā)板上的USB OTG口(如下圖)通過USB線和電腦USB相連。
在bootloader命令行界面中敲入fastboot命令并回車的界面如下圖所示:
輸入fastboot命令后開發(fā)板會初始化USB OTG口,讓其準(zhǔn)備好和上位機(jī)通信。
第一次使用fastboot命令時,電腦出現(xiàn)硬件安裝向?qū)А4藭r應(yīng)安裝fastboot驅(qū)動。
安裝成功,黃色感嘆號消失。
step2:在XP上運(yùn)行fastboot軟件
雙擊fastboot目錄下的sp_linux_image_down.bat則會運(yùn)行fastboot.exe軟件,往開發(fā)板上燒入Linux系統(tǒng)。
step3:結(jié)束
在命令行顯示如下內(nèi)容時表示燒寫結(jié)束
注意:如果是安卓系統(tǒng)第一次燒寫
step1:同上
step2:在XP上運(yùn)行fastboot軟件,腳本文件應(yīng)修改為如下所示,先燒引導(dǎo)程序,后重啟
step3:分區(qū)
分區(qū)命令1
mmc erase 0x400 0x40
分區(qū)命令2
fdisk 2 8 100000:4000000 4100000:2f200000 33300000:1ac00000 4e000000:800000 4e900000:160000050000000:0xc800000 0x5c900000:0x1f400000 0x7be00000:0x0
重啟:
reset
step4:在XP上運(yùn)行fastboot軟件,腳本文件應(yīng)修改為如下所示
