早期一般是將調(diào)試好的單片機(jī)程序?qū)懭氲?ROM、 EPROM 中,這種操作就像刻制光盤一樣,實在高電壓方式下寫入,PROM 是一次性寫入,存儲內(nèi)部發(fā)生變化,有些線路或元件就被燒斷,不可再恢復(fù),所以叫做燒寫,EPROM 可以使用紫外線將原來寫入的內(nèi)容擦除,重新燒寫,目前大量采用 EEPROM,是可以電擦寫的存儲器。
單片機(jī)啟動時會直接運行這些芯片中的程序,完成既定的功能。
所謂燒寫,其實就是對單片機(jī)中的 rom 進(jìn)行擦寫?,F(xiàn)代工藝下,rom 已經(jīng)可以進(jìn)行多次擦寫,但在早期,rom 只能一次性設(shè)計好,例如早期的 PLC,把二極管上的絲燒了后就永久編碼出 1。而我們知道,單片機(jī)程序經(jīng)編譯連接后傳給機(jī)器便是機(jī)器語言,簡而言之就是一大堆 1 和 0。在少些過程中,我們將燒不燒一大堆 MOS 管和 BJT 的絲或連不連上通道來表示這些 1 和 0。
燒寫的三種方式:
1. 把單片機(jī)當(dāng)做一個 ROM 芯片,早期的單片機(jī)都是如此。將單片機(jī)放在通用編程上編程時,就像給 28C256 這樣的 ROM 中寫程序的過程一樣。只是不同的單片機(jī)使用的端口,編程用的時序不一樣。
2. 像 AT89S52 或 AVR 單片機(jī)一樣,在單片機(jī)上有 SPI 接口,這時用專用的下載線將程序燒寫到單片機(jī)中。這時不同的是,單片機(jī)的 CPU 除了執(zhí)行單片機(jī)本身的指令之外,還能執(zhí)行對 ROM 進(jìn)行操作的特殊指令,如 ROM 擦除、燒寫和校驗指令。在編程 ROM 時,下載線先通過傳輸這些指令給 CPU 執(zhí)行 (擦除 ROM、讀入數(shù)據(jù)、燒寫 ROM、和校驗 ROM),這樣完成對單片機(jī)的 ROM 的燒寫。此外,現(xiàn)在普遍使用的 JTAG 仿真器也是這樣,單片機(jī)的 CPU 能執(zhí)行 JTAG 的特殊指令,完成對 ROM 的燒寫操作。
3. 引導(dǎo)程序,即單片機(jī)中已經(jīng)存在了一個燒寫程序。啟動單片機(jī)時首先運行這程序,程序判斷端口狀態(tài),如果符合“要燒寫 ROM”的狀態(tài)存在,就從某個端口(串口、SPI 等等)讀取數(shù)據(jù),然后寫入到單片機(jī)的 ROM 中。如果沒有“要燒寫 ROM”的狀態(tài),就轉(zhuǎn)到用戶的程序開始執(zhí)行。像 AVR 單片機(jī)的 bootloader 方式、STC 的串口下載方式,還有其他單片機(jī)的串口編程等等都是這樣。
|