1.1 什麼是韌體
韌體(firmware)一般儲存於裝置中的電可擦除唯讀儲存器eeprom(electrically erasable programmable rom)或flash晶元中,一般可由使用者通過特定的重新整理程式進行公升級的程式。一般來說,擔任著乙個數碼產品最基礎、最底層工作的軟體才可以稱之為韌體,比如計算機主機板上的基本輸入/輸出系統bios(basic input/output system),在以前其實更多的專業人士叫它韌體。我的理解為:韌體其實就是放在儲存介質上的資料,當嵌入式板子啟動時,能夠從特定的位置找到這些檔案,使得板子能夠跑起來,這些檔案就是韌體。那麼在嵌入式linux系統中,經常用到的檔案如下:
嵌入式板子上電後,會去特定的位置尋找uboot,uboot初始化記憶體,初始化串列埠,設定linux啟動引數以後,會將核心從flash中載入到記憶體。然後核心會去掛載根檔案系統並啟動init。所以上面所說的三種檔案可以理解為韌體。
1.2 什麼是燒錄?2.1.1 只燒錄uboot,其他的韌體不用燒錄?
答案是可以的 。當我們只燒錄uboot後,進入uboot模式下,我們可以通過uboot模式下的命令來載入kernel和rootfs。在uboot模式下,我們使用tftp mem_addr kernel_file來載入核心,然後通過nfs來載入rootfs。這樣做的前提是你的pc機提供tftp和nfs服務,並且你的開發板需要和pc機在同一網路下。這樣做有乙個缺點,每次板子上電時都需要去敲命令來載入核心以及nfs。
2.1.2 燒錄uboot和核心,rootfs以nfs的形式掛載到pc機上
在開發過程中經常用到的是這種方案。只燒錄uboot和kernel,在板子啟動時,核心會通過nfs去pc機上尋找檔案系統。這種方式有的時候可能會導致系統起來比較慢,可能是因為網路狀況不好,這樣可能會影響你的體驗。
2.1.3 燒錄uboot、kernel、rootfs
在常見的燒錄方式是將這三個檔案全部燒錄到板子裡,且核心需要支援nfs協議。板子能夠從自己的儲存器中將系統啟動起來而不需要依賴網路。板子啟動後,可以利用mount命令,將某一目錄掛載到pc機上。當應用程式更新後,只需要將可執行檔案拷貝到nfs目錄下,板子就可以進行除錯了。之前做個某創的freertos專案,除錯非常的麻煩,每次程式更新後就需要燒錄系統,燒錄一次需要5分鐘,把脾氣都磨沒了。linux的除錯還是很人性化的。
產品發布後公升級韌體一般有下面兩種方式
3.1 通過uboot燒錄(兩步到位)
有這麼幾種情形可以使用uboot進行燒錄
3.2 通過usb燒錄(一步到位)
在工廠量產的環境下,使用usb燒錄是做有效也是最簡潔的方式。將三個映象檔案準備好,使用特定的燒錄工具,將三個檔案直接燒錄到儲存器中。如君正的clone工具。
嵌入式產品 燒錄
1.windows軟體 a.ether b.win32diskimager 2.linux a.檢查sd卡檔案系統型別 dmesg grep mmcblk b.dd拷貝映象到sd卡 sudo dd bs 4m if system.img of dev sdb status progress sudo...
嵌入式linux應用的製作與韌體燒錄的概述
僅概述,不對細節進行過多描述 不同的晶元平台,細節也會略有不同,多說無益 文章只有乙個目的,就是對於新接觸linux soc平台的人,幫助他們明確目標,清晰思路,以便更迅速的切入到工作中 很明顯,為了讓乙個晶元工作起來,晶元需要程式。首先,針對第乙個問題,嵌入式linux的soc,整體架構,從操作的...
嵌入式linux應用的製作與韌體燒錄的概述
僅概述,不對細節進行過多描述 不同的晶元平台,細節也會略有不同,多說無益 文章只有乙個目的,就是對於新接觸linux soc平台的人,幫助他們明確目標,清晰思路,以便更迅速的切入到工作中 很明顯,為了讓乙個晶元工作起來,晶元需要程式。韌體包含 uboot logo dtb以及kernel。檔案系統?...