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

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






