單片機(jī)程序燒錄的3種方式(ISP、ICP、IAP)是什么?
一、ISP是什么
ISP(In-System Programming)在系統(tǒng)可編程,指電路板上的空白器件可以編程寫入最終用戶代碼,而不需要從電路板上取下器件,已經(jīng)編程的器件也可以用ISP方式擦除或再編程。ISP技術(shù)是未來發(fā)展方向。
ISP 的實(shí)現(xiàn)相對(duì)要簡(jiǎn)單一些,一般通用做法是內(nèi)部的存儲(chǔ)器可以由上位機(jī)的軟件通過串口來進(jìn)行改寫。對(duì)于單片機(jī)來講可以通過SPI或其它的串行接口接收上位機(jī)傳來的數(shù)據(jù)并寫入存儲(chǔ)器中。所以即使我們將芯片焊接在電路板上,只要留出和上位機(jī)接口的這個(gè)串口,就可以實(shí)現(xiàn)芯片內(nèi)部存儲(chǔ)器的改寫,而無須再取下芯片。
二、ICP是什么
ICP是一種串行編程方式,其通過一根時(shí)鐘線和一根數(shù)據(jù)線串行傳輸編程指令及數(shù)據(jù),ICP功能使用芯片的5個(gè)管腳()與LCP900連接器上的5個(gè)引腳,PCL,PDA,RESET相連(這里V 使用3.3V電壓)。
ICP方式在應(yīng)用中有以下優(yōu)點(diǎn):
在產(chǎn)品發(fā)貨前,可以隨時(shí)裝載最新版軟件程序。在開發(fā)過程中,不需將芯片從系統(tǒng)板上取下,即可實(shí)現(xiàn)重新編程。不占用程序存儲(chǔ)空間(ISP要占用一定空間駐留ISP服務(wù)程序)。不受串口的影響。三、IAP是什么
IAP是In Application Programming的首字母縮寫,IAP是用戶自己的程序在運(yùn)行過程中對(duì)User Flash的部分區(qū)域進(jìn)行燒寫,目的是為了在產(chǎn)品發(fā)布后可以方便地通過預(yù)留的通信口對(duì)產(chǎn)品中的固件程序進(jìn)行更新升級(jí)。
通常在用戶需要實(shí)現(xiàn)IAP功能時(shí),即用戶程序運(yùn)行中作自身的更新操作,需要在設(shè)計(jì)固件程序時(shí)編寫兩個(gè)項(xiàng)目代碼,名列前茅個(gè)項(xiàng)目程序不執(zhí)行正常的功能操作,而只是通過某種通信管道(如USB、USART)接收程序或數(shù)據(jù),執(zhí)行對(duì)第二部分代碼的更新;第二個(gè)項(xiàng)目代碼才是真正的功能代碼。這兩部分項(xiàng)目代碼都同時(shí)燒錄在User Flash中,當(dāng)芯片上電后,首先是名列前茅個(gè)項(xiàng)目代碼開始運(yùn)行,它作如下操作:
檢查是否需要對(duì)第二部分代碼進(jìn)行更新如果不需要更新則轉(zhuǎn)到執(zhí)行更新操作跳轉(zhuǎn)到第二部分代碼執(zhí)行四、ISP 和 IAP 的工作原理
ISP 的實(shí)現(xiàn)相對(duì)要簡(jiǎn)單一些,一般通用做法是內(nèi)部的存儲(chǔ)器可以由上位機(jī)的軟件通過串口來進(jìn)行改寫。對(duì)于單片機(jī)來講可以通過 SPI 或其它的串行接口接收上位機(jī)傳來的數(shù)據(jù)并寫入存儲(chǔ)器中。所以即使我們將芯片焊接在電路板上,只要留出和上位機(jī)接口的這個(gè)串口,就可以實(shí)現(xiàn)芯片內(nèi)部存儲(chǔ)器的改寫,而無須再取下芯片。
IAP 的實(shí)現(xiàn)相對(duì)要復(fù)雜一些,在實(shí)現(xiàn) IAP 功能時(shí),單片機(jī)內(nèi)部一定要有兩塊存儲(chǔ)區(qū),一般一塊被稱為 BOOT 區(qū),另外一塊被稱為存儲(chǔ)區(qū)。單片機(jī)上電運(yùn)行在 BOOT 區(qū),如果有外部改寫程序的條件滿足,則對(duì)存儲(chǔ)區(qū)的程序進(jìn)行改寫操作。如果外部改寫程序的條件不滿足,程序指針跳到存儲(chǔ)區(qū),開始執(zhí)行放在存儲(chǔ)區(qū)的程序,這樣便實(shí)現(xiàn)了 IAP 功能。
延伸閱讀1:?jiǎn)纹瑱C(jī)
單片機(jī)(Single-Chip Microcomputer)是一種集成電路芯片,是采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力的中央處理器CPU、隨機(jī)存儲(chǔ)器RAM、只讀存儲(chǔ)器ROM、多種I/O口和中斷系統(tǒng)、定時(shí)器/計(jì)數(shù)器等功能(可能還包括顯示驅(qū)動(dòng)電路、脈寬調(diào)制電路、模擬多路轉(zhuǎn)換器、A/D轉(zhuǎn)換器等電路)集成到一塊硅片上構(gòu)成的一個(gè)小而完善的微型計(jì)算機(jī)系統(tǒng),在工業(yè)控制領(lǐng)域廣泛應(yīng)用。從上世紀(jì)80年代,由當(dāng)時(shí)的4位、8位單片機(jī),發(fā)展到現(xiàn)在的300M的高速單片機(jī)。

猜你喜歡LIKE
相關(guān)推薦HOT
更多>>
linux都有哪些認(rèn)證?
一、LPI認(rèn)證LPI(Linux Professional Institute)是一個(gè)非盈利性組織,提供了一系列的Linux認(rèn)證,包括初級(jí)(LPIC-1)、中級(jí)(LPIC-2)和高級(jí)(L...詳情>>
2023-10-18 02:39:08
怎么打開一個(gè).bak格式的30G的數(shù)據(jù)庫(kù)文件?
一、打開一個(gè).bak格式的30G的數(shù)據(jù)庫(kù)文件的步驟1、打開SQL Server Management Studio首先打開SQL Server Management Studio,SQL Server詳情>>
2023-10-18 01:19:15
Python的字典和數(shù)據(jù)庫(kù)有什么區(qū)別?
一、Python的字典和數(shù)據(jù)庫(kù)有什么區(qū)別1、Python 中的字典是哈希表(hash tables)的一種抽象數(shù)據(jù)類型的具體實(shí)現(xiàn)。 字典存在于內(nèi)存中。如果沒有將...詳情>>
2023-10-18 01:02:55
Flutter架構(gòu)是怎樣,為什么比ReactNative好?
一、Flutter架構(gòu)概述Flutter是由谷歌開發(fā)的開源移動(dòng)應(yīng)用開發(fā)框架,使用Dart編程語言。Flutter的架構(gòu)采用了一種稱為“層疊式架構(gòu)”的設(shè)計(jì)模式。1...詳情>>
2023-10-18 00:15:19熱門推薦
linux都有哪些認(rèn)證?
沸為什么搜索引擎在磁盤上的索引不能做到實(shí)時(shí)添加而數(shù)據(jù)庫(kù)可以?
熱Win10下Oracle 11g 數(shù)據(jù)庫(kù)突然連接失敗怎么辦?
熱Power BI中建立度量值輸入信息后按回車怎么不行?
新單片機(jī)程序燒錄的3種方式(ISP、ICP、IAP)是什么?
怎么打開一個(gè).bak格式的30G的數(shù)據(jù)庫(kù)文件?
Python的字典和數(shù)據(jù)庫(kù)有什么區(qū)別?
數(shù)據(jù)庫(kù)事務(wù)完成后結(jié)果返回給客戶端前連接斷開了會(huì)發(fā)生什么?
刪除SQL server2012出現(xiàn)重新啟動(dòng)計(jì)算機(jī)――失敗,是什么原因?
Flutter架構(gòu)是怎樣,為什么比ReactNative好?
sql server2012r2所在服務(wù)器做端口限制,需要開放什么端口才能繼續(xù)訪問數(shù)據(jù)庫(kù)?
Oracle有什么優(yōu)勢(shì)和劣勢(shì)?
數(shù)據(jù)庫(kù)聚集索引非聚集索引實(shí)現(xiàn)上有哪些區(qū)別?
數(shù)據(jù)庫(kù)(如oracle、mysql)及編程語言(php、python、perl、lisp)的區(qū)別?
技術(shù)干貨







快速通道 更多>>
-
課程介紹
點(diǎn)擊獲取大綱 -
就業(yè)前景
查看就業(yè)薪資 -
學(xué)習(xí)費(fèi)用
了解課程價(jià)格 -
優(yōu)惠活動(dòng)
領(lǐng)取優(yōu)惠券 -
學(xué)習(xí)資源
領(lǐng)3000G教程 -
師資團(tuán)隊(duì)
了解師資團(tuán)隊(duì) -
實(shí)戰(zhàn)項(xiàng)目
獲取項(xiàng)目源碼 -
開班地區(qū)
查看來校路線