對flash-based的mcu來說, isp和icp幾乎是不可或缺的功能, 但我們經(jīng)常被這兩個(gè)功能搞混, 究竟他們的差別在哪里? 對客戶的意義又是什么?在這里, 和大家分享并澄清一些觀念, 希望對大家有所幫助, 進(jìn)而解答來自客戶關(guān)于isp與icp的疑問.
1)在開發(fā)階段
改code時(shí), 不再需要將mcu從板子上拔起來, 拿到燒錄器上燒, 然后再裝回去. 可以直接利用isp/icp programmer做板上燒錄, 為開發(fā)者提供了極大的便利性.
2)在量產(chǎn)階段
客戶可以采用”先焊到板子上再燒code”的方式, 將燒code的動(dòng)作安排在生產(chǎn)線的某一站.
那么傳統(tǒng)的方式 (先將code燒好再焊到板子上)有什么缺點(diǎn)?
傳統(tǒng)的方式是這樣的: 拆封-->從tray盤取出chip-->燒錄-->把chip放回tray盤.
這樣的流程比起上面建議的方式: 增加了燒錄時(shí)間, 容易造成qfp包裝的chip彎腳, 或忘了燒code即放回tray盤.
3)在成品階段
已組裝好的成品若要改code, 可以透過預(yù)留的接口, 利用isp或icp, 更新mcu, 不需要拆機(jī).
什么是 iap (in-application programming)?
iap指的是, mcu在運(yùn)行的狀態(tài)下, 利用isp的機(jī)制, 不透過外接工具 (例如: isp programmer) 的幫忙, 去更新aprom, dataflash 或 config. 要實(shí)現(xiàn)這種功能,
系統(tǒng)必須有取得更新數(shù)據(jù)的能力, 例如: 處于某一種聯(lián)機(jī)的狀態(tài).
(注: 有時(shí)候, isp/iap的分別并不是那么清楚!)
isp與icp的差別
for isp
(1) mcu必須處于可執(zhí)行程序的狀態(tài) (除了上電, 還要接xtal), 且必須預(yù)燒isp-code在ldrom里面
(2) 燒錄范圍只限于aprom, dataflash或config (但對使用者來說, 應(yīng)經(jīng)夠了!)
(3) chip在lock的狀態(tài)下, 仍然可以只更新某一區(qū)塊 (aprom, dataflash或config)
(4) 因?yàn)闊浀膭?dòng)作取決于isp-code的寫法, 所以給系統(tǒng)設(shè)計(jì)者的彈性較大
for icp
(1) mcu只要處于上電狀態(tài)即可, 不必預(yù)燒任何code在mcu里面
(2) 燒錄范圍涵蓋整顆mcu, 包括 aprom, dataflash, config, ldrom和 rommap
(3) chip在lock的狀態(tài)下, 無法只更新某一區(qū)塊, 只能在erase-all之后,更新某一區(qū)塊, 再逐一燒回其它區(qū)塊(因?yàn)閕cp的本質(zhì)就是走串行接口的writer mode, chip被lock之后, 除了erase-all, 所有燒錄動(dòng)作皆會被禁止)
(4) 因?yàn)闊浖兇馐莍cp硬件的行為, mcu無法自己更新自己, 所以給系統(tǒng)設(shè)計(jì)者的彈性較小(例如: 無法藉由icp去實(shí)現(xiàn)iap的功能)
isp與icp的使用場合
依這兩者的特性, 配合客戶的系統(tǒng)需求, 而后才建議客戶使用isp或icp.
注:上述差別的第(3)點(diǎn)和第(4)點(diǎn), 可能是icp帶給使用者的最大限制. 站在使用者的觀點(diǎn), 若isp與icp只能擇一的話, isp會是必要的選擇。