ISP與ICP 轉載分享
已有 1847 次閱讀2010-12-20 10:00
對Flash-based的MCU來說, ISP和ICP幾乎是不可或缺的功能, 但我們經常被這兩個功能搞混, 究竟他們的差別在哪里? 對客戶的意義又是什么?在這里, 和大家分享并澄清一些觀念, 希望對大家有所幫助, 進而解答來自客戶關于ISP與ICP的疑問.
1)在開發階段
改code時, 不再需要將MCU從板子上拔起來, 拿到燒錄器上燒, 然后再裝回去. 可以直接利用ISP/ICP Programmer做板上燒錄, 為開發者提供了極大的便利性.
2)在量產階段
客戶可以采用”先焊到板子上再燒code”的方式, 將燒code的動作安排在生產線的某一站.
那么傳統的方式 (先將code燒好再焊到板子上)有什么缺點?
傳統的方式是這樣的: 拆封-->從tray盤取出chip-->燒錄-->把chip放回tray盤.
這樣的流程比起上面建議的方式: 增加了燒錄時間, 容易造成QFP包裝的chip彎腳, 或忘了燒code即放回tray盤.
3)在成品階段
已組裝好的成品若要改code, 可以透過預留的接口, 利用ISP或ICP, 更新MCU, 不需要拆機.
什么是 IAP (In-Application Programming)?
IAP指的是, MCU在運行的狀態下, 利用ISP的機制, 不透過外接工具 (例如: ISP Programmer) 的幫忙, 去更新APROM, DataFlash 或 CONFIG. 要實現這種功能,
系統必須有取得更新數據的能力, 例如: 處于某一種聯機的狀態.
(注: 有時候, ISP/IAP的分別并不是那么清楚!)
ISP與ICP的差別
For ISP
(1) MCU必須處于可執行程序的狀態 (除了上電, 還要接XTAL), 且必須預燒ISP-code在LDROM里面
(2) 燒錄范圍只限于APROM, DataFlash或CONFIG (但對使用者來說, 應經夠了!)
(3) chip在LOCK的狀態下, 仍然可以只更新某一區塊 (APROM, DataFlash或CONFIG)
(4) 因為燒錄的動作取決于ISP-code的寫法, 所以給系統設計者的彈性較大
For ICP
(1) MCU只要處于上電狀態即可, 不必預燒任何code在MCU里面
(2) 燒錄范圍涵蓋整顆MCU, 包括 APROM, DataFlash, CONFIG, LDROM 和 ROMMAP
(3) chip在LOCK的狀態下, 無法只更新某一區塊, 只能在erase-ALL之后, 更新某一區塊, 再逐一燒回其它區塊(因為ICP的本質就是走串行接口的Writer Mode, chip被LOCK之后, 除了erase-ALL, 所有燒錄動作皆會被禁止)
(4) 因為燒錄純粹是ICP硬件的行為, MCU無法自己更新自己, 所以給系統設計者的彈性較小(例如: 無法藉由ICP去實現IAP的功能)
ISP與ICP的使用場合
依這兩者的特性, 配合客戶的系統需求, 而后才建議客戶使用ISP或ICP.
注:上述差別的第(3)點和第(4)點, 可能是ICP帶給使用者的最大限制. 站在使用者的觀點, 若ISP與ICP只能擇一的話, ISP會是必要的選擇.