物理基礎(chǔ):非易失性存儲器(NVM)芯片燒錄
芯片燒錄(也稱為編程或燒寫)的本質(zhì)是將編譯后的機(jī)器碼程序和配置信息通過特定協(xié)議寫入芯片內(nèi)部的非易失性存儲器(通常是Flash或OTP存儲器)的過程。其核心原理涉及硬件接口、通信協(xié)議、存儲單元結(jié)構(gòu)和高壓電子學(xué)。嵌入式系統(tǒng)已被廣泛應(yīng)用于國防電子、數(shù)字家庭、工業(yè)自動化、汽車電子等多種領(lǐng)域[1]。在嵌入式開發(fā)過程中,許多系統(tǒng)通常使用串口驅(qū)動來滿足通信要求,但在實(shí)際應(yīng)用中,使用SPI通信方式會更加高效和快捷[2]。SPI接口是一種高速、高效的串行接口技術(shù),因而SPI設(shè)備在數(shù)據(jù)通信應(yīng)用中十分方便[3]。本文基于ARM9芯片的S3C2440和Linux操作系統(tǒng),設(shè)計了一種SPI驅(qū)動程序,該驅(qū)動程序功能可靠靈活、易于移植,可應(yīng)用于多種嵌入式平臺,實(shí)現(xiàn)ARM與設(shè)備之間的通信。以下是詳細(xì)解析:
一、 物理基礎(chǔ):非易失性存儲器(NVM)
芯片程序存儲在Flash存儲器(可重復(fù)擦寫)或OTP存儲器(一次性可編程)中:
Flash存儲單元結(jié)構(gòu)
基于浮柵晶體管(Floating Gate Transistor)。
寫入(編程):在控制極施加高壓(通常12V),使電子穿越絕緣層(隧穿效應(yīng))注入浮柵,改變晶體管的閾值電壓(表示0或1)。
擦除:施加反向高壓,將電子從浮柵拉出(恢復(fù)為1)。
讀取:施加低壓檢測晶體管通斷狀態(tài)。
OTP存儲器
通常使用熔絲(Fuse)或反熔絲(Antifuse):
熔絲型:高壓燒斷熔絲(開路代表0)。
反熔絲型:高壓擊穿絕緣層形成通路(短路代表1)。
不可擦除,適合存儲密鑰或配置字。
二、 燒錄過程的核心步驟
連接與供電
燒錄器通過編程接口(如ICSP、SWD、JTAG)連接到目標(biāo)芯片的專用引腳(VDD、GND、CLK、DATA、RESET)。
燒錄器提供穩(wěn)定的編程電壓(VPP)(高于芯片工作電壓,用于Flash寫入/擦除)。
通信協(xié)議
燒錄器與芯片通過同步串行協(xié)議通信(如SPI、I2C或廠商私有協(xié)議)。
典型指令:
Chip Erase(全片擦除)
Program Memory(寫入程序)
Read Memory(校驗(yàn))
Write Configuration Bits(寫配置字)
數(shù)據(jù)寫入流程
配置字(Configuration Bits)
獨(dú)立于程序存儲區(qū)的特殊寄存器,控制芯片底層行為(如時鐘源、看門狗、代碼保護(hù))。
錯誤配置會導(dǎo)致芯片無法工作(如選錯時鐘源)。
芯片燒錄,又稱固件燒錄或編程,是將程序代碼寫入芯片的過程。這一過程通常涉及到兩個環(huán)節(jié):一方面是對芯片內(nèi)部存儲單元的編程,另一方面是對芯片功能的驗(yàn)證。燒錄不僅僅是將代碼寫入芯片,更重要的是保證燒錄后的程序能夠可靠運(yùn)行,這需要借助專門的燒錄工具和技術(shù)。
芯片內(nèi)部通常集成有閃存(Flash Memory)或可重編程的只讀存儲器(EEPROM)。這些存儲器可以通過特定的通信協(xié)議,比如SPI、I2C、UART等,將代碼傳輸至芯片內(nèi)。燒錄完成后,可以通過讀取、比對的方式驗(yàn)證燒錄結(jié)果是否正確。這保證了芯片在不同環(huán)境下的兼容性和穩(wěn)定性。
三、 燒錄器的關(guān)鍵作用
協(xié)議轉(zhuǎn)換器
將PC端的USB/UART信號轉(zhuǎn)換為芯片能識別的編程協(xié)議信號(如ICSP的PGD/PGC時序)。
高壓生成器
集成DC-DC升壓電路,生成Flash編程所需的高壓(5V芯片可能需要12V編程電壓)。
時序控制器
精確控制編程脈沖的寬度和時序(納秒級精度),防止過寫損壞存儲單元。
數(shù)據(jù)校驗(yàn)器
燒錄后自動讀取芯片內(nèi)容,與原始文件比對(校驗(yàn)和或逐字節(jié)比對)。
四、 不同燒錄方式的區(qū)別
方式原理典型接口適用場景
離線燒錄燒錄器自帶存儲,脫機(jī)操作專用夾具量產(chǎn)批量燒錄
在線燒錄(ICSP)通過PCB預(yù)留接口燒錄已焊芯片ICSP/SWD/JTAG研發(fā)調(diào)試、小批量生產(chǎn)
Bootloader芯片通過UART/USB自更新程序UART/USB固件遠(yuǎn)程升級
五、 為什么需要專用燒錄器?
高壓需求:普通IO口無法提供Flash編程所需高壓。
協(xié)議私有化:不同芯片廠商(如碩飛、Microchip、ST)使用私有編程算法(如PIC的LVPP協(xié)議)。
時序嚴(yán)苛:編程脈沖寬度、時鐘頻率需嚴(yán)格符合芯片手冊要求。
安全機(jī)制:繞過代碼保護(hù)區(qū)需特殊指令序列。
無論對嵌入式產(chǎn)品添加新功能還是修改原有的軟件BUG,涉及的都只是用戶應(yīng)用程序的改動,初始化代碼Startup.s是無需改動的,所以扇區(qū)O的內(nèi)容在ISP過程中可否保持不變,關(guān)鍵是能否使首次編譯生成的Vector.0始終與以后多次編譯的App.o相匹配。
需要特別指出的是,當(dāng)用戶應(yīng)用程序發(fā)生改變時,實(shí)際的中斷服務(wù)函數(shù)(一般是C語言函數(shù))很可能發(fā)生了改變,或者是實(shí)際的中斷服務(wù)函數(shù)的入口地址發(fā)生了改變,怎么通過固定不變的中斷向量Vector.o找到變化的中斷服務(wù)函數(shù)的入口呢?只要這個問題解決了,就可以使首次編譯生成的Vector.o始終和以后多次編譯的App.o相匹配,這是該方案可行性的關(guān)鍵所在。為解決這個問題,筆者在Flash的固定位置(0x80002000~0x800020ff)做了一個中斷映射表,實(shí)際上里面存放的是一條條跳轉(zhuǎn)指令。由于中斷映射表INTMap.s和用戶應(yīng)用程序App.c是一同編譯、鏈接的,里面的跳轉(zhuǎn)指令當(dāng)然可以準(zhǔn)確找到實(shí)際的中斷服務(wù)程序入口;而位于扇區(qū)O的中斷向量Vector.s雖然不和用戶應(yīng)用程序一起編譯,但中斷向量里的跳轉(zhuǎn)指令是絕對跳轉(zhuǎn)到固定的中斷映射表區(qū)域。這樣通過2次跳轉(zhuǎn)就可以準(zhǔn)確找到中斷服務(wù)程序的入口。
選擇合適的芯片燒錄座至關(guān)重要,它不僅影響到燒錄效率,還會影響到整個生產(chǎn)或開發(fā)過程的穩(wěn)定性和靈活性。
1. 根據(jù)芯片封裝類型選擇:
當(dāng)前市場上的芯片封裝形式多種多樣,包括DIP、QFN、BGA等。根據(jù)谷易電子芯片燒錄座工程師介紹:選擇燒錄座時,需首先確認(rèn)與芯片封裝的兼容性,確保連接的可靠性與穩(wěn)定性。(提供芯片規(guī)格書或者芯片封裝形式、芯片引腳數(shù)、芯片引腳中心間距、芯片尺寸(本體尺寸和含引腳尺寸))。
2. 可重復(fù)使用性:
燒錄座作為一種消耗品,其耐用性決定了其使用壽命和經(jīng)濟(jì)性。在選用燒錄座時,應(yīng)考慮其是否具備長時間、高頻次使用的性能。
3. 兼容不同型號:
對于研發(fā)設(shè)計階段而言,可能需要對不同型號產(chǎn)品反復(fù)測試。選擇兼容性好的燒錄座,能有效降低更換燒錄座帶來的時間成本和經(jīng)濟(jì)成本。
4. 數(shù)據(jù)傳輸速度:
燒錄座所支持的最大數(shù)據(jù)傳輸速度也是考量因素之一??焖贁?shù)據(jù)傳輸能顯著降低大批量燒錄所需時間,提高生產(chǎn)線效率。





