TW201301039A - 韌體燒錄方法 - Google Patents
韌體燒錄方法 Download PDFInfo
- Publication number
- TW201301039A TW201301039A TW100122774A TW100122774A TW201301039A TW 201301039 A TW201301039 A TW 201301039A TW 100122774 A TW100122774 A TW 100122774A TW 100122774 A TW100122774 A TW 100122774A TW 201301039 A TW201301039 A TW 201301039A
- Authority
- TW
- Taiwan
- Prior art keywords
- boot
- kernel
- burning
- firmware
- loader
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
一種韌體燒錄方法包括:製作偽開機文檔,該文檔包括韌體中的啟動引導程式、第一內核、第二內核、第一載入程式、第二載入程式、啟動文檔系統和應用程式;將啟動引導程式、第一內核、第二內核、第一、第二載入程式燒錄到Flash中;啟動嵌入式設備,依次啟動引導程式、第一內核和第一載入程式;當燒錄腳本識別到存有啟動文檔系統和應用程式的儲存裝置時,下載該啟動文檔系統和應用程式;當該Flash中當前待寫入資料的暫存器可讀寫時,將啟動文檔系統和應用程式燒錄到該暫存器中;若不能讀寫,則跳到下一個暫存器進行燒錄。
Description
本發明涉及一種韌體燒錄方法。
在產線測試嵌入式設備之前,往往需要燒錄韌體以更新快閃記憶體(Flash)作為出貨時所需要的出廠設定。現今產線的方式是先藉由一種燒錄模式(即寫入模式,如X-Modem)手動將嵌入式設備中的原始韌體燒錄到主機板的快閃記憶體中,再藉由軟體提取已經燒錄到主機板上的韌體影像,包括啟動引導程式(Bootloader)、內核(kernel)、載入程式(initramfs)、啟動文檔系統(rootfs)。該種藉由硬體燒錄的方法把燒錄韌體所需要的Bootloader,kernel,init ramfs,rootfs四個文檔直接燒錄在主機板的Nand Flash上,就是所謂的硬燒錄。
由於Flash容量比較大(rootfs包含的內容比較多),故廠商允許Flash裏可以有壞塊的存在,硬燒錄時遇到壞塊就會跳到下一個位置繼續燒錄。由於每片Flash裏的壞塊可能不在同一個位置,從母板裏提取出來的韌體影像本身可能有壞塊,當燒錄子板時因為遇到壞塊亦會跳過,因此,母片中的壞塊所跳轉的位置可能會剛好落到子板的壞塊中。雖燒錄器可以繼續跳過壞塊,但是在已經燒錄完成的Flash中,裏面的跳轉是仍然存在的,這樣在啟動嵌入式設備時可能會因為錯誤無法啟動,造成韌體無法成功地燒錄到Flash中,而且這個失敗是無法避免的,只能再次藉由X-Modem方式直接手動燒錄原始韌體,如此會嚴重影響產線生產測試嵌入式設備的速度。
鑒於以上內容,有必要提供一種韌體燒錄方法,可以自動燒錄韌體,且避開硬燒錄無法檢查壞塊的問題。
所述韌體燒錄方法包括:製作偽開機文檔,該偽開機文檔包括韌體中的啟動引導程式、第一內核、第二內核、第一載入程式和第二載入程式,及測試嵌入式設備的啟動文檔系統和應用程式;將該偽開機文檔中的啟動引導程式、第一內核、第二內核、第一載入程式和第二載入程式燒錄到嵌入式設備的Flash中;啟動嵌入式設備,依次啟動引導程式、第一內核和第一載入程式;藉由第一載入程式中儲存的燒錄腳本找到所述啟動文檔系統和應用程式對應的影像;利用Flash工具驗證該Flash中當前待寫入資料的暫存器是否可讀寫;若該暫存器可以進行資料讀寫,則將啟動文檔系統和應用程式燒錄到該暫存器中;或若該暫存器不可以進行資料讀寫,則跳過該暫存器到下一個暫存器進行燒錄。
相較於習知技術,本發明提供的韌體燒錄系統及方法,藉由製作一個偽開機文檔,把燒錄韌體的軟體隱藏在該偽開機文檔中來燒錄韌體,如此可避開硬燒錄無法檢查壞塊的問題。
參閱圖1所示,是本發明較佳實施例中韌體燒錄方法的運行環境示意圖。該圖中示意出了一個母板1和一個子板2,本實施例中,該母板1和子板2為嵌入式設備中的電路板,其結構和功能完全相同。藉由將母板1中的韌體10燒錄到子板2中,以作為嵌入式設備出貨時所需要的出廠設定。
其中,子板2包括USB20、記憶體22、Flash24和Flash工具26。該Flash24可以為Nand Flash,其包含一個或多個暫存器240(圖中僅示意出一個),用於儲存燒錄的資料。
為了將母板1中的韌體10成功地燒錄到子板2中時,且減少手動燒錄,提高嵌入式設備的生產、測試速度,本實施例需要提前製作一個偽開機文檔100,該偽開機文檔100可以用於隱藏所燒錄的韌體10中的應用程式,從而避開硬燒錄無法檢查壞塊的問題。
本實施例中,該偽開機文檔100由七個部分組成。如圖2所示,該偽開機文檔100具體包括:第一部分啟動引導程式B1(以下統稱為“bootloader B1”)、第二部分第一內核B2(以下統稱為“kernel1 B2”)、第三部分第二內核B3(以下統稱為“kernel2 B3”)、第四部分第一載入程式B4(以下統稱為“initrd1 B4“)、第五部分第二載入程式B5(以下統稱為“initrd2 B5”)、第六部分啟動文檔系統B6(以下統稱為“rootfs B6”)和第七部分應用程式對應的資料B7(以下統稱為“APP dataB7”)。其中,bootloader B1、kernel1 B2、kernel2 B3、initrd1 B4和initrd2 B5存在所述記憶體22中,rootfs B6和APP data B7存在USB20中。本實施例中,所述記憶體22可以為隨機訪問記憶體(Random access memory,RAM)。
其中,偽開機文檔100的前五部分內容與韌體10中的內容大致相同,僅是對第四部分(即initrd1 B4)和第五部分(即initrd2 B5)做了少許修改。藉由將偽開機文檔100中的內容燒錄到子板2的Flash24中,就可以完成韌體10的燒錄。
當bootloader B1、kernel1 B2、kernel2 B3、initrd1 B4和initrd2 B5被成功地燒錄到Flash24中後,啟動嵌入式設備,該嵌入式設備依次啟動bootloader B1、kernel1 B2和initrd1 B4,該initrd1 B4中儲存有燒錄腳本,該燒錄腳本中記載了嵌入式設備能支援的USB20。在啟動initrd1 B4後,該嵌入式設備會藉由initrd1 B4的燒錄腳本識別該USB20,掛載該USB20,並從中獲取rootfs B6和APP data B7對應的影像,藉由Flash工具26驗證Flash24中當前待寫入資料的暫存器240是否能讀寫資料,如果該暫存器240能進行資料讀寫,則將rootfs B6和APP data B7燒錄到該暫存器240中,如果該暫存器240不能進行資料讀寫,那麼該Flash工具26跳過該暫存器240到下一個暫存器240進行燒錄,直到燒錄完成,由此可避免將燒錄的韌體10寫入壞塊的情況發生。
參閱圖3所示,是本發明韌體燒錄方法較佳實施例的作業流程圖。
步驟S100,製作偽開機文檔100,將該偽開機文檔100中的bootloader B1、kernel1 B2、kernel2 B3、initrd1 B4和initrd2 B5存在記憶體22中,將rootfs B6和APP data B7存入USB20中。
第一步,製作bootloader B1;
第二步,製作kernel1 B2,該kernel1 B2為嵌入式設備第一次運行時的kernel,其中包含一些簡單的服務支援,以支援燒錄韌體10;
第三步,製作kernel2 B3,該kernel2 B3為嵌入式設備正式運行時的Kernel;
第四步,製作initrd1 B4,該initrd1 B4為燒錄韌體10時運行在RAM中的init ramfs,其中存有燒錄腳本,該燒錄腳本中包含USB20的服務支援;
第五步,製作initrd2 B5,該initrd2 B5為嵌入式設備正式運行時運行在RAM中的init ramfs;
第六步,製作rootfs B6,該rootfs B6為文檔系統;
第七步,製作APP data B7,該APP data B7為測試嵌入式設備的程式。
步驟S102,將偽開機文檔100中的bootloader B1、kernel1 B2、kernel2 B3、initrd1 B4和initrd2 B5燒錄到子板2的Flash24中。該燒錄為硬燒錄。
步驟S104,啟動嵌入式設備,並依次啟動bootloader B1、kernel1 B2和initrd1 B4。
步驟S106,當initrd1 B4中儲存的燒錄腳本識別到存有rootfs B6和APP data B7的儲存裝置如USB20時,從該USB20中下載rootfs B6和APP data B7對應的影像。具體而言,當用戶將USB20插入嵌入式設備的USB插口時,該嵌入式設備可從initrd1 B4的燒錄腳本識別到該USB20,從而打開該USB20中的文檔,即rootfs B6和APP data B7對應的影像,其中,rootfs B6和APP data B7用於生產時測試所述嵌入式設備。
步驟S108,該Flash工具26驗證當前待寫入資料的暫存器240是否可讀寫。
若該暫存器240可以進行資料讀寫,則於步驟S110,將rootfs B6和APP data B7燒錄到該暫存器240中。
若該暫存器240不可以進行資料讀寫,則於步驟S112,跳過該暫存器240到下一個暫存器進行燒錄,直到燒錄完成。
最後所應說明的是,以上實施例僅用以說明本發明的技術方案而非限制,儘管參照以上較佳實施例對本發明進行了詳細說明,本領域的普通技術人員應當理解,可以對本發明的技術方案進行修改或等同替換,而不脫離本發明技術方案的精神和範圍。
1...母板
2...子板
10...韌體
20...USB
22...記憶體
24...Flash
26...Flash工具
240...暫存器
100...偽開機文檔
B1...bootloader
B2...kernel1
B3...kernel2
B4...initrd1
B5...initrd2
B6...rootfs
B7...App data
S100...製作偽開機文檔,將該偽開機文檔中的rootfs和APP data存入USB中
S102...將偽開機文檔中的bootloader、kernel1、kernel2、initrd1和initrd2燒錄到子板的Flash中
S104...啟動嵌入式設備,並依吹啟動bootloader、kernel1、和initrd1
S106...當initrd1中儲存的燒錄腳本識別到存有rootfs和APP data的USB時,下載rootfs和APP data對應的影像
S108...驗證暫存器是否可讀寫?
S110...燒錄到該暫存器中
S112...跳過該暫存器到下一個暫存器進行燒錄
圖1是本發明較佳實施例中韌體燒錄方法的運行環境示意圖。
圖2是本發明較佳實施例中的偽開機文檔。
圖3是本發明韌體燒錄方法較佳實施例的作業流程圖。
S100...製作偽開機文檔,將該偽開機文檔中的rootfs和APP data存入USB中
S102...將偽開機文檔中的bootloader、kernel1、kernel2、initrd1和initrd2燒錄到子板的Flash中
S104...啟動嵌入式設備,並依次啟動bootloader、kernel1、和initrd1
S106...當initrd1中儲存的燒錄腳本識別到存有rootfs和APP data的USB時,下載rootfs和APP data對應的影像
S108...驗證暫存器是否可讀寫?
S110...燒錄到該暫存器中
S112...跳過該暫存器到下一個暫存器進行燒錄
Claims (5)
- 一種韌體燒錄方法,該方法包括:
製作偽開機文檔,該偽開機文檔包括韌體中的啟動引導程式、第一內核、第二內核、第一載入程式和第二載入程式,及測試嵌入式設備的啟動文檔系統和應用程式;
將該偽開機文檔中的啟動引導程式、第一內核、第二內核、第一載入程式和第二載入程式燒錄到嵌入式設備的Flash中;
啟動嵌入式設備,依次啟動引導程式、第一內核和第一載入程式;
當所述第一載入程式中儲存的燒錄腳本識別到存有所述啟動文檔系統和應用程式的儲存裝置時,從該儲存裝置中下載該啟動文檔系統和應用程式對應的影像;
利用Flash工具驗證Flash中當前待寫入資料的暫存器是否可讀寫;
若該暫存器能進行資料讀寫,則將啟動文檔系統和應用程式燒錄到該暫存器中;或
若該暫存器不能進行資料讀寫,則跳過該暫存器到下一個暫存器進行燒錄。 - 如申請專利範圍第1項所述之韌體燒錄方法,所述製作偽開機文檔的步驟包括:
製作啟動引導程式;
製作第一內核,該第一內核為嵌入式設備第一次運行時的內核,其中包含支援燒錄韌體的服務支援;
製作第二內核,該第二內核為嵌入式設備正式運行時的內核;
製作第一載入程式,該第一載入程式為燒錄韌體時運行在隨機存取記憶體中的init ramfs,其中存有燒錄腳本;
製作第二載入程式,該第二載入程式為嵌入式設備正式運行時運行在隨機存取記憶體中的init ramfs;
製作啟動文檔系統;及
製作應用程式。 - 如申請專利範圍第1項所述之韌體燒錄方法,在所述製作偽開機文檔之後,該方法還包括:
將所述啟動引導程式、第一內核、第二內核、第一載入程式和第二載入程式存在嵌入式設備的隨機存取記憶體中。 - 如申請專利範圍第1項所述之韌體燒錄方法,在所述製作偽開機文檔之後,該方法還包括:
將所述啟動文檔系統和應用程式存在所述儲存裝置中,該儲存裝置為USB。 - 如申請專利範圍第1項所述之韌體燒錄方法,所述Flash為Nand Flash。
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201110173070.3A CN102841796B (zh) | 2011-06-24 | 固件烧录方法 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| TW201301039A true TW201301039A (zh) | 2013-01-01 |
Family
ID=47362968
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW100122774A TW201301039A (zh) | 2011-06-24 | 2011-06-29 | 韌體燒錄方法 |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US8607227B2 (zh) |
| TW (1) | TW201301039A (zh) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN112363950A (zh) * | 2020-11-30 | 2021-02-12 | 杭州海康汽车软件有限公司 | 应用程序的调试方法及装置 |
| TWI776676B (zh) * | 2021-09-15 | 2022-09-01 | 英業達股份有限公司 | 伺服器系統之韌體燒錄檢核方法及其系統 |
Families Citing this family (27)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10055251B1 (en) | 2009-04-22 | 2018-08-21 | The Trustees Of Columbia University In The City Of New York | Methods, systems, and media for injecting code into embedded devices |
| CN103176806B (zh) * | 2011-12-21 | 2017-08-18 | 富泰华工业(深圳)有限公司 | 烧录系统及烧录控制方法 |
| KR102132501B1 (ko) * | 2012-02-15 | 2020-07-09 | 더 트러스티이스 오브 콜롬비아 유니버시티 인 더 시티 오브 뉴욕 | 매립 디바이스에 대한 공격을 금지하기 위한 방법, 시스템 및 미디어 |
| CN103645920A (zh) * | 2013-12-19 | 2014-03-19 | 深圳市捷顺科技实业股份有限公司 | 一种嵌入式系统程序烧录方法及系统 |
| CN106528354B (zh) * | 2016-10-12 | 2019-09-17 | 郑州云海信息技术有限公司 | 一种烧录存储器电源fru id的自动化方法 |
| US10552171B2 (en) | 2016-11-16 | 2020-02-04 | International Business Machines Corporation | Efficient booting system |
| CN108572830A (zh) * | 2017-12-22 | 2018-09-25 | 深圳市鼎阳科技有限公司 | 一种嵌入式系统及其引导程序的升级方法、系统 |
| CN108235095B (zh) * | 2018-01-17 | 2020-12-08 | 深圳创维数字技术有限公司 | 基于磁盘介质机顶盒启动/调试方法、机顶盒及存储介质 |
| CN108762774A (zh) * | 2018-05-22 | 2018-11-06 | 深圳市先河系统技术有限公司 | 一种固件烧录的方法及固件烧录的设备 |
| CN108845807B (zh) * | 2018-05-28 | 2022-02-18 | 郑州云海信息技术有限公司 | 一种固态硬盘烧写的方法、装置、设备以及存储介质 |
| CN109062576A (zh) * | 2018-07-18 | 2018-12-21 | 郑州云海信息技术有限公司 | 一种通过initramfs修复文件系统的方法及装置 |
| CN109614116B (zh) * | 2018-11-20 | 2022-06-21 | 锐捷网络股份有限公司 | 嵌入式系统的安装方法及装置 |
| CN112486506B (zh) * | 2019-09-12 | 2024-02-02 | 恒为科技(上海)股份有限公司 | 一种NAND Flash的烧录方法及装置 |
| CN112732287B (zh) * | 2019-10-28 | 2024-06-18 | 深圳市帝迈生物技术有限公司 | 一种程序烧录方法、主电路板及子电路板 |
| CN110912698B (zh) * | 2019-12-27 | 2022-07-15 | 嘉应学院 | 一种山地果园监控信息加密传输方法与装置 |
| CN111367535A (zh) * | 2020-02-28 | 2020-07-03 | 深圳市元征科技股份有限公司 | 一种软件烧录方法、车载设备以及介质 |
| CN111458105A (zh) * | 2020-04-21 | 2020-07-28 | 欧菲微电子技术有限公司 | 光学模组的测试方法、装置和设备 |
| CN111552486B (zh) * | 2020-04-27 | 2024-02-09 | 苏州浪潮智能科技有限公司 | Ssd固件烧录方法及相关组件 |
| CN111708546A (zh) * | 2020-06-02 | 2020-09-25 | 北京中宸泓昌科技有限公司 | 一种嵌入式软件自动烧录系统及烧录方法 |
| CN113094059B (zh) * | 2021-04-13 | 2025-05-16 | 深圳市研强物联技术有限公司 | 一种固件系统数据的传输方法及其烧录装置 |
| CN115437649A (zh) * | 2021-06-02 | 2022-12-06 | 苏州佳世达电通有限公司 | 固件烧录更新方法及应用其的固件烧录系统 |
| CN114168161B (zh) * | 2021-10-26 | 2025-03-11 | 昆山丘钛微电子科技股份有限公司 | 一种漏烧录控制方法及装置 |
| CN114443061A (zh) * | 2021-12-09 | 2022-05-06 | 北京千方科技股份有限公司 | 一种嵌入式设备的程序烧写方法、装置、存储介质及终端 |
| CN114416121A (zh) * | 2021-12-30 | 2022-04-29 | 深圳市广和通无线通信软件有限公司 | 固件烧录方法、装置、烧录设备以及固件烧录系统 |
| CN114650286A (zh) * | 2022-03-22 | 2022-06-21 | 深圳市泛海数据科技有限公司 | 一种mcu脱机烧录方法、设备及存储介质 |
| CN115794138A (zh) * | 2022-12-05 | 2023-03-14 | 北京雅光谷信息系统有限公司 | 一种安全模块的高速烧录装置 |
| CN118092989B (zh) * | 2024-04-22 | 2024-07-16 | 合肥康芯威存储技术有限公司 | 一种存储器的固件升级方法、系统、设备及介质 |
Family Cites Families (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20070094489A1 (en) * | 2005-10-21 | 2007-04-26 | Sony Corporation | Embedded system that boots from USB flash drive |
| KR20090060774A (ko) * | 2007-12-10 | 2009-06-15 | 한국전자통신연구원 | 임베디드 시스템의 펌웨어 및 데이터 미러링 장치 및 방법 |
| TWI489474B (zh) * | 2011-10-25 | 2015-06-21 | Silicon Motion Inc | 內嵌閃存卡燒機方法以及測試板、以及內嵌閃存卡 |
-
2011
- 2011-06-29 TW TW100122774A patent/TW201301039A/zh unknown
-
2012
- 2012-04-17 US US13/449,296 patent/US8607227B2/en not_active Expired - Fee Related
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN112363950A (zh) * | 2020-11-30 | 2021-02-12 | 杭州海康汽车软件有限公司 | 应用程序的调试方法及装置 |
| TWI776676B (zh) * | 2021-09-15 | 2022-09-01 | 英業達股份有限公司 | 伺服器系統之韌體燒錄檢核方法及其系統 |
Also Published As
| Publication number | Publication date |
|---|---|
| US8607227B2 (en) | 2013-12-10 |
| US20120331280A1 (en) | 2012-12-27 |
| CN102841796A (zh) | 2012-12-26 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| TW201301039A (zh) | 韌體燒錄方法 | |
| CN102902556B (zh) | 一种嵌入式设备的多级引导加载方法 | |
| CN107870769B (zh) | 操作系统的安装方法及装置 | |
| TWI540505B (zh) | 燒錄系統及燒錄控制方法 | |
| CN102609304B (zh) | 一种Android手机内置第三方应用的管理方法 | |
| CN105760191A (zh) | 嵌入式系统设备程序烧写量产方法 | |
| CN102270144A (zh) | 嵌入式网络设备及其更新固件的方法 | |
| CN105590072A (zh) | 一种实现嵌入式系统自动烧录的方法 | |
| CN104346206B (zh) | 一种已卸载软件恢复安装的方法和系统 | |
| CN106776122A (zh) | 一种基于Flash启动过程中主备保护的方法 | |
| WO2014190601A1 (zh) | 数据烧录系统及方法 | |
| US20160306757A1 (en) | Bridge configuration in computing devices | |
| CN104461667B (zh) | 智能终端的刷机方法与装置 | |
| CN102654839A (zh) | 一种实现现场可编程门阵列可靠升级的方法及装置 | |
| CN105653330A (zh) | 一种基于SD卡的NorFlash烧写系统和方法 | |
| CN104536841B (zh) | 一种Android系统Data分区自修复方法及系统 | |
| CN102043634B (zh) | 一种嵌入式系统和嵌入式软件升级方法 | |
| CN103514014A (zh) | 一种嵌入式终端设备引导系统的设计方法 | |
| TWI359378B (en) | Booting method of computer system | |
| US20140173187A1 (en) | Virtual boundary codes in a data image of a read-write memory device | |
| CN104951376A (zh) | 参数优化方法及参数优化装置 | |
| TW201502988A (zh) | 電子產品作業系統的快速安裝方法 | |
| CN105224352A (zh) | 软件版本升级方法和单板 | |
| CN113268366A (zh) | 内核运行方法、设备和系统 | |
| CN106775847A (zh) | 一种板卡软件版本更新方法及装置 |