我要問的不是如何制作燒寫接口。 而是,電腦在通過接口向單片機燒寫時(此時單片機 內(nèi)沒有程序),電腦是如何通過接口訪問內(nèi)部rom的對應(yīng)p口怎么就會指向單片機內(nèi)部rom(就像單片機是一個rom?)
有三種方式:
1、把單片機當(dāng)做一個rom芯片,早期的單片機都是如此。將單片機放在通用編程上編程時,就像給28c256這樣的rom中寫程序的過程一樣。只是不同的單片機使用的端口,編程用的時序不一樣。
2、像at89s52或avr單片機一樣,在單片機上有spi接口,這時用專用的下載線將程序燒寫到單片機中。這時不同的是,單片機的cpu除了執(zhí)行單片機本身的指令之外,還能執(zhí)行對rom進(jìn)行操作的特殊指令,如rom擦除、燒寫和校驗指令。在編程rom時,下載線先通過傳輸這些指令給cpu執(zhí)行(擦除rom、讀入數(shù)據(jù)、燒寫rom、和校驗rom),這樣完成對單片機的rom的燒寫。此外,現(xiàn)在普遍使用的jtag仿真器也是這樣,單片機的cpu能執(zhí)行jtag的特殊指令,完成對rom的燒寫操作。
3、引導(dǎo)程序,即單片機中已經(jīng)存在了一個燒寫程序。啟動單片機時首先運行這程序,程序判斷端口狀態(tài),如果符合“要燒寫rom”的狀態(tài)存在,就從某個端口(串口、spi等等)讀取數(shù)據(jù),然后寫入到單片機的rom中。如果沒有“要燒寫rom”的狀態(tài),就轉(zhuǎn)到用戶的程序開始執(zhí)行。像avr單片機的bootloader方式、stc的串口下載方式,還有其他單片機的串口編程等等都是這樣。