一種基于SD卡的NorFlash燒寫系統(tǒng)和方法
【技術(shù)領(lǐng)域】
[0001 ]本發(fā)明涉及一種NorFlash燒寫系統(tǒng)和方法,具體涉及一種基于SD卡的NorFlash燒 寫系統(tǒng)和方法。
【背景技術(shù)】
[0002] NorFlash芯片地址線和數(shù)據(jù)線分開,可供CPU直接尋址,可在flash芯片上直接執(zhí) 行啟動程序,無需將啟動程序復(fù)制到內(nèi)存中,因此NorFlash芯片被廣泛用作ARM、P 〇werPC等 嵌入式處理器芯片的系統(tǒng)啟動芯片。目前,在嵌入式系統(tǒng)板卡開發(fā)中,一般先將bootloader 引導(dǎo)程序燒入NorFlash,之后可在bootloader下通過tftp方式燒寫kernel內(nèi)核、rootfs根 文件系統(tǒng)。目前bootloader燒寫方法主要有以下幾種:
[0003] 1)使用專用仿真器,如Jlink、Trace32等,利用板卡JTAG 口燒寫到NorFlash中;
[0004] 2)使用專用燒錄器,將NorFlash芯片燒寫完成后,再焊接到板卡上或插到封裝座 上。
[0005] 其中,1)的燒寫方法較為常見,適用于NorFlash芯片已經(jīng)焊接到板卡上,但需要專 用仿真器,而且仿真器價格較高。第二種方法適合大批量生產(chǎn),但需要額外的燒錄器,專用 燒錄器價格也比較高。以上兩種方法燒寫NorFlash時均需要人工操作仿真器或燒錄器,且 操作過程相對復(fù)雜。
【發(fā)明內(nèi)容】
[0006] 為了克服上述現(xiàn)有方法的不足,本發(fā)明提供一種基于SD卡的NorFlash燒寫系統(tǒng)和 方法,該方法為嵌入式系統(tǒng)開發(fā)NorFlash燒寫提供一種低成本、簡單可靠的手段。
[0007] 本發(fā)明的目的是采用下述技術(shù)方案實現(xiàn)的:
[0008] 一種基于SD卡的NorFlash燒寫系統(tǒng),所述系統(tǒng)包括相互通信的處理器模塊、 NorFlash芯片和SD存儲卡,所述NorFlash芯片通過LocalBus總線與處理器模塊連接;其中,
[0009] 所述處理器模塊,用于外掛NorFlash芯片和SD存儲卡,采用跳線方式選擇啟動方 式;
[0010] 所述NorFlash芯片,用于存儲BootLoader引導(dǎo)程序,并作為處理器模塊常規(guī)啟動 介質(zhì);
[0011] 所述SD存儲卡,用于當(dāng)處理器模塊選擇通過SD存儲卡啟動時,將BootLoader引導(dǎo) 程序燒寫并存儲至NorFlash芯片中。
[0012] 優(yōu)選的,所述啟動方式包括NorFlash啟動和SD存儲卡啟動。
[0013] 優(yōu)選的,所述處理器模塊采用PowerPC處理器、ARM處理器或MIPS處理器。
[0014] 進(jìn)一步地,所述PowerPC處理器采用飛思卡爾Freescale P1020芯片;所述 NorFlash芯片為Spansion S29GL01GP芯片;所述SD存儲卡采用Sandisk SD存儲卡,容量為 8GB〇
[0015]優(yōu)選的,若所述SD存儲卡包含kernel內(nèi)核和rootf s根文件燒寫鏡像,可實現(xiàn)內(nèi)核 和文件系統(tǒng)燒寫。
[0016] -種基于SD卡的NorFlash燒寫方法,所述方法包括:
[0017] (1)定義SD存儲卡為啟動盤,通過該SD存儲卡加載bootloaderl引導(dǎo)程序,同時將 向NorFlash燒寫的bootloader2引導(dǎo)程序復(fù)制到所述SD存儲卡中;
[0018] (2)選擇一塊嵌入式板卡,將SD存儲卡插入嵌入式設(shè)備SD卡槽,選擇SD存儲卡啟動 方式,其中,所述嵌入式板卡選用PowerPC板卡、ARM板卡或MIPS板卡;
[0019] (3)板卡上電后從SD存儲卡啟動,執(zhí)行SD存儲卡中的bootloaderl引導(dǎo)程序,該 bootloaderl引導(dǎo)程序自動將SD存儲卡內(nèi)的bootloader2引導(dǎo)程序燒寫到NorFlash中,直至 燒與完成;
[0020] (4)將嵌入式板卡啟動方式改為NorFlash啟動,重新上電后,處理器模塊自動通過 NorFlash芯片加載SD存儲卡中燒寫的boot loader2引導(dǎo)程序。
[0021 ] 優(yōu)選的,所述SD卡燒寫NorFlash的具體步驟包括:
[0022] a)在ubuntul2.04下格式化SD存儲卡,并創(chuàng)建FAT32分區(qū);
[0023] b)在ubuntul2 · 04下使用Freescale boot_format工具將通過SD存儲卡啟動的 ubootl .bin二進(jìn)制文件寫入SD存儲卡中;
[0024] c)在ubuntul2.04下將向NorFlash中燒寫的uboot2. bin二進(jìn)制文件復(fù)制到所述 FAT32分區(qū)中;
[0025] d)采用跳線方式選擇SD存儲卡啟動;
[0026] e)板卡上電,處理器模塊通過SD存儲卡啟動,執(zhí)行ubootl .bin;
[0027] f)在ubootl .bin執(zhí)行環(huán)境下,設(shè)置向NorFlash燒寫uboot2.bin的環(huán)境變量uboot_ nor,并設(shè)置自啟動環(huán)境變量bootcmd為run uboot_nor,執(zhí)行bootcmd程序的代碼指令;將環(huán) 境變量保存于SD存儲卡中;其中,所述環(huán)境變量只需設(shè)置一次;
[0028] g)重新上電,在ubootl .bin執(zhí)行結(jié)束后,根據(jù)設(shè)置的bootcmd自動執(zhí)行uboot_nor, 以實現(xiàn)自動將uboot2. bin燒入Norf lash,直至燒寫結(jié)束;
[0029] h)啟動方式改為從NorFlash啟動,重新上電后,處理器模塊自動通過NorFlash加 載SD存儲卡中燒寫的uboot2.bin。
[0030] 進(jìn)一步地,所述處理器模塊采用PowerPC處理器、ARM處理器或MIPS處理器;
[0031 ] 所述PowerPC處理器米用飛思卡爾Freescale P1020芯片。
[0032]與現(xiàn)有技術(shù)相比,本發(fā)明達(dá)到的有益效果是:
[0033] 1)本發(fā)明充分利用嵌入式系統(tǒng)中常見的SD存儲卡設(shè)備,實現(xiàn)SD存儲卡啟動時 NorFlash芯片的自動燒寫,除去了生產(chǎn)調(diào)試人員操作仿真器或燒錄器的繁瑣過程,大大降 低了人工成本,提高了生產(chǎn)效率;
[0034] 2)本發(fā)明除了燒寫bootloader外,還可以適用于向NorFlash燒寫kernel內(nèi)核、 rootfs根文件系統(tǒng)等,只需要將kernel內(nèi)核、rootfs根文件系統(tǒng)復(fù)制到SD存儲卡中,并調(diào)整 相應(yīng)環(huán)境變量即可;操作簡單且實用。
【附圖說明】
[0035]圖1為基于SD卡的NorFlash燒寫系統(tǒng)結(jié)構(gòu)示意圖;
[0036]圖2為基于SD卡的NorFlash燒寫方法流程圖;
【具體實施方式】
[0037]下面結(jié)合附圖對本發(fā)明的【具體實施方式】做進(jìn)一步的詳細(xì)說明。
[0038]如圖1所示,一種基于SD卡的NorFlash燒寫系統(tǒng),該系統(tǒng)包括相互通信的處理器模 塊、NorFlash芯片和SD存儲卡,所述NorFlash芯片通過LocalBus總線與處理器模塊連接;其 中,
[0039]處理器模塊,用于外掛NorFlash芯片和SD存儲卡,采用跳線方式選擇啟動方式;其 包括NorFlash啟動和SD存儲卡啟動。
[0040] 所述處理器模塊采用PowerPC處理器、ARM處理器或MIPS處理器。其中PowerPC處理 器采用飛思卡爾Freescale P1020芯片;NorFlash芯片為Spansion S29GL01GP芯片;SD存儲 卡采用Sandisk SD存儲卡,容量為8GB。
[0041 ] NorFlash芯片,用于存儲BootLoader引導(dǎo)程序,并作為處理器模塊常規(guī)啟動介質(zhì);
[0042] SD存儲卡,用于當(dāng)處理器模塊選擇通過SD存儲卡啟動時,將BootLoader引導(dǎo)程序 燒寫并存儲至NorFlash芯片中。若所述SD存儲卡包含kernel內(nèi)核和rootfs根文件,可燒寫 鏡像;實現(xiàn)內(nèi)核和文件系統(tǒng)燒寫。
[0043]如圖2所示,一種基于SD卡的NorFlash燒寫方法,所述方法包括:
[0044]