㈠ 單片機三種燒錄方式ISP,IAP和ICP的區別詳解
單片機ISP、IAP和ICP幾種燒錄方式的區別
玩單片機的都應該聽說過這幾個詞。一直搞不太清楚他們之間的區別。今天查了資料後總結整理如下。
ISP:In System Programing,在系統編程
IAP:In applicaTIng Programing,在應用編程
ICP:In Circuit Programing,在電路編程
ISP是指可以在板級上進行編程,也就是不用拆晶元下來,寫的是整個程序,一般是通過ISP介面線來寫。
IAP雖然同樣也是在板級上進行編程,但是是自已對自已進行編程,在應用中進行編程,也即可以只是更改某一部分而不影響系統的其它部分,另外介面程序是自已寫的,這樣可以進行遠程升級而不影響應用。
打個比喻吧:
1、ISP是把房子拆了再重造一間,那麼在造好之前當然是不能住人的啦!
2、IAP是在造好的房子里邊進行一些裝修,當然人可以繼續住啦!
ICP是在電路編程,是LPC晶元的編程方式,相當於ATMEL的ISP,而LPC的ISP就相當於ATMEL的IAP了。
ISP與IAP的區別
ISP:in system programming, 在系統編程
IAP: in applicaTIn programming 在應用編程
但兩者的操作方式,結果和應用場合有什麼區別
什麼是ISP:
用寫入器將code燒入,不過,晶元可以在目標板上,不用取出來,在設計目標板的時候就將介面設計在上面,所以叫「在系統編程」,即不用脫離系統;
什麼是IAP:
在應用編程,有晶元本身(或通過外圍的晶元)可以通過一系列操作將code寫入,比如一款支持Iap的單片機,內分3個程序區,1作引導程序區,2作運行程序區,3作下載區,晶元通過串口接收到下載命令,進入引導區運行引導程序,在引導程序下將new code內容下載到下載區,下載完畢並校驗通過後再將下載區內容復制到2區,運行復位程序,則Iap完成;
應用場合:
1,ISP 程序升級需要到現場解決,不過好一點的是不必拆機器了;
2,IAP 如果有網管系統的話,用網管下載一切搞定,人不用跑來跑去,
這可能是他們的優點或應用吧
在線編程目前有兩種實現方法:在系統編程(ISP)和在應用編程(IAP)。ISP一般是通過單片機專用的串列編程介面對單片機內部的Flash存儲器進行編程,而IAP技術是從結構上將Flash存儲器映射為兩個存儲體,當運行一個存儲體上的用戶程序時,可對另一個存儲體重新編程,之後將控制從一個存儲體轉向另一個。ISP的實現一般需要很少的外部電路輔助實現,而IAP的實現更加靈活,通常可利用單片機的串列口接到計算機的RS232口,通過專門設計的固件程序來編程內部存儲器。 ISP和IAP很相似,都是不需要把晶元從板子上拔出來,就達到了用PC-MCU的編程介面(JTAG、串口、雙絞線、SPI等)搞定新版本的升級的目的。MCU內部都是首先執行一段獨立的Boot代碼(這段Boot代碼一般是出廠預置,或使用編程器燒錄的,通常只有1k或4k,SST通常是佔用一塊獨立的Block,Philips通常是讓BootROM地址與其他Flash重疊,以達到隱藏的效果),Boot負責控制擦除程序存儲器及給程序存儲器編程的代碼(或是處理器外部提供的執行代碼),然後通過某種與PC計算機的通信方式(如,ether網口),將用戶指定的某個在PC上編譯完成的MCU可運行的二進制代碼文件編程入MCU內的程序存儲器。
ISP和IAP最大的不同是:由誰來觸發。
ISP有4種觸發方式:
1.由外部硬體電路:如VDD保持高電平,給RST連續3個脈沖;
2.檢測狀態位:如ISPEN,為0時PC指針從0000H開始執行;為1時,通過「引導向量」計算出「ISP代碼」的位置。每次復位後都會檢測該狀態位;
3.中止控制符信號觸發晶元復位:中止控制符信號就是指在非同步串列口的接收腳上出現長 達一幀長度的低電平,這里一幀的長度與非同步串列口的工作模式有關。
4.直接調用ISP:用戶程序也可以調用,但是很危險。
4種方式的目的是相同的——進入ISP子程序,比如Philips出廠的ISP子程序在1E00H-1FFFH,只要能引導PC指針指向1E00H就可以了。
而進入ISP代碼的目的是:進入BootROM。
IAP的觸發比較簡單一些,沒有外部觸發。通過一些指示位(SST為SC0/SC1、SFCF;Philips為一段IAP子程序,保存在FF00H~FFFFH地址空間中),達到引導到BootROM的目的。
殊途同歸,ISP、IAP所進入的BootROM裡面駐留的Boot代碼,才是最終目標。
最後一種:並行編程模式。不需要BootROM,直接設置晶元的多個引腳來讓晶元識別命令(如:擦除、寫入、驗證等),從P口傳地址、數據,就可以寫入Flash
用LPC2000的IAP,你自己分配好FLASH空間,指定一個BLOCK用來存放你的數據,然後通過IAP進行寫操作。每次開機後,從這個BLOCK讀你的數據。
㈡ stc12單片機的isp,iap,eeprom是個什麼關系isp,iap是什麼原理isp程序存
isp是在系統編程技術,是指給單片機燒寫程序不用吧晶元從電路板上拆下來,就能完成燒錄程序。iap是在應用編程,是指單片機在上電工作過程中實現程序修改燒寫,就好比手機不關機安裝應用程序。eeprom是一種存儲器技術,可以靠電擦除內容,並實現掉電後不丟失,而且可以按位元組讀寫
㈢ 單片機的 在系統可編程ISP與在應用可編程IAP是什麼_有什麼作用
ISP是In System Programming,在線編程
IAP是In Application Programming在應用編程
ISP一般是通過單片機專用的串列編程介面對單片機內部的Flash存儲器進行編程,
IAP技術是從結構上將Flash存儲器映射為兩個存儲體,當運行一個存儲體上的用戶程序時,可對另一個存儲體重新編程,之後將控制從一個存儲體轉向另一個。
ISP的實現一般需要很少的外部電路輔助實現,
IAP的實現更加靈活,通常可利用單片機的串列口接到計算機的RS232口,通過專門設計的固件程序來編程內部存儲器。
㈣ 51單片機如何利用IAP實現數據掉電不丟失相應程序怎麼寫
IAP的方式是寫入到程序Flash區保持數據不丟失
寫之前要保證區域內沒有會被執行到的程序。否則寫入數據後會導致程序死機會不斷重啟。
支持IAP的單片機類型比較多,請提供具體型號
以IAP15F2K61S2為例(STC官方代碼)
//IAP特殊功能寄存器:
sfrIAP_DATA=0xC2;//IAP數據寄存器
sfrIAP_ADDRH=0xC3;//IAP地址寄存器高位元組
sfrIAP_ADDRL=0xC4;//IAP地址寄存器低位元組
sfrIAP_CMD=0xC5;//IAP命令寄存器
sfrIAP_TRIG=0xC6;//IAP命令觸發寄存器
sfrIAP_CONTR=0xC7;//IAP控制寄存器
//IAP工作模式
#defineCMD_IDLE0//空閑模式
#defineCMD_READ1//IAP位元組讀命令
#defineCMD_PROGRAM2//IAP位元組編程命令
#defineCMD_ERASE3//IAP扇區擦除命令
//單片機運行頻率
//#defineENABLE_IAP0x80//ifSYSCLK<30MHz
//#defineENABLE_IAP0x81//ifSYSCLK<24MHz
#defineENABLE_IAP0x82//ifSYSCLK<20MHz
//#defineENABLE_IAP0x83//ifSYSCLK<12MHz
//#defineENABLE_IAP0x84//ifSYSCLK<6MHz
//#defineENABLE_IAP0x85//ifSYSCLK<3MHz
//#defineENABLE_IAP0x86//ifSYSCLK<2MHz
//#defineENABLE_IAP0x87//ifSYSCLK<1MHz
//測試地址
#defineIAP_ADDRESS0x0400
/*----------------------------
扇區擦除
----------------------------*/
voidIapEraseSector(WORDaddr)//擦除扇區是以512位元組為單位
{
IAP_CONTR=ENABLE_IAP;//使能IAP
IAP_CMD=CMD_ERASE;//設置IAP命令
IAP_ADDRL=addr;//設置IAP低地址
IAP_ADDRH=addr>>8;//設置IAP高地址
IAP_TRIG=0x5a;//寫觸發命令(0x5a)
IAP_TRIG=0xa5;//寫觸發命令(0xa5)
_nop_();//等待ISP/IAP/EEPROM操作完成
IapIdle();
}
/*----------------------------
寫一位元組數據到ISP/IAP區域
----------------------------*/
voidIapProgramByte(WORDaddr,BYTEdat)
{
IAP_CONTR=ENABLE_IAP;//使能IAP
IAP_CMD=CMD_PROGRAM;//設置IAP命令
IAP_ADDRL=addr;//設置IAP低地址
IAP_ADDRH=addr>>8;//設置IAP高地址
IAP_DATA=dat;//寫ISP/IAP/EEPROM數據
IAP_TRIG=0x5a;//寫觸發命令(0x5a)
IAP_TRIG=0xa5;//寫觸發命令(0xa5)
_nop_();//等待ISP/IAP/EEPROM操作完成
IapIdle();
}
/*----------------------------
從ISP/IAP/EEPROM區域讀取一位元組
----------------------------*/
BYTEIapReadByte(WORDaddr)//由於在程序儲存區內也可以用MOVC指令讀取
{
BYTEdat;//數據緩沖區
IAP_CONTR=ENABLE_IAP;//使能IAP
IAP_CMD=CMD_READ;//設置IAP命令
IAP_ADDRL=addr;//設置IAP低地址
IAP_ADDRH=addr>>8;//設置IAP高地址
IAP_TRIG=0x5a;//寫觸發命令(0x5a)
IAP_TRIG=0xa5;//寫觸發命令(0xa5)
_nop_();//等待ISP/IAP/EEPROM操作完成
dat=IAP_DATA;//讀ISP/IAP/EEPROM數據
IapIdle();//關閉IAP功能
returndat;//返回
}
/*----------------------------
關閉IAP
----------------------------*/
voidIapIdle()
{
IAP_CONTR=0;//關閉IAP功能
IAP_CMD=0;//清除命令寄存器
IAP_TRIG=0;//清除觸發寄存器
IAP_ADDRH=0x80;//將地址設置到非IAP區域
IAP_ADDRL=0;
}
通過以上代碼即可對Flash區進行寫入操作
㈤ 單片機通過u盤燒寫程序
你說的是IAP程序,只要在U盤指定位置寫入更新文件,在識別U盤後讀入即可進行擦寫操作。
㈥ STC單片機中的IAP功能是什麼ISP/IAP 觸發寄存器是什麼
IAP是指在應用編程,就是片子提供一系列的機制(硬體/軟體上的)當片子在運行程序的時候可以提供一種改變flash數據的方法。通俗點講,也就是說程序自己可以往程序存儲器里寫數據或修改程序。
這種方式的典型應用就是用一小段代碼來實現程序的下載,實際上單片機的ISP功能就是通過IAP技術來實現的,即片子在出廠前就已經有一段小的boot程序在裡面,片子上電後,開始運行這段程序,當檢測到上位機有下載要求時,便和上位機通信,然後下載數據到存儲區。
ISP/IAP相關寄存器:
ISP_DATA:ISP/IAP操作時的數據寄存器。
ISP/IAP從Flash讀出的數據放在此處,向Flash寫入的數據也需放在此處。
ISP_ADDRH:ISP/IAP操作時的地址寄存器高八位。
ISP_ADDRL:ISP/IAP操作時的地址寄存器低八位。
ISP_CMD:ISP/IAP操作時的命令模式寄存器,須命令觸發寄存器觸發方可生效。
(6)單片機iap程序擴展閱讀
STC單片機的特點:
STC12C5A60S2/AD/PWM系列單片機是宏晶科技生產的單時鍾/機器周期(1T)的單片機,是高速/低功耗/超強抗干擾的新一代8051單片機,指令代碼完全兼容傳統8051,但速度快8-12倍。
內部集成MAX810專用復位電路,2路PWM,8路高速10位A/D轉換(250K/S),針對電機控制,強干擾場合。
1、增強型8051CPU,1T,單時鍾/機器周期,指令代碼完全兼容傳統8051;
2、工作電壓:STC12C5A60S2系列工作電壓:5.5V-3.3V(5V單片機)STC12LE5A60S2系列工作電壓:3.6V-2.2V(3V單片機);
3、工作頻率范圍:0 - 35MHz,相當於普通8051的 0~420MHz;
4、用戶應用程序空間8K /16K / 20K / 32K / 40K / 48K / 52K / 60K / 62K位元組;
5、片上集成1280位元組RAM;
6、通用I/O口(36/40/44個),復位後為:准雙向口/弱上拉(普通8051傳統I/O口),可設置成四種模式:准雙向口/弱上拉,推挽/強上拉,僅為輸入/高阻,開漏,每個I/O口驅動能力均可達到20mA,但整個晶元最大不要超過120mA。
㈦ IAP是什麼意思
1、中國科學院大氣物理研究所
中國科學院大氣物理研究所(以下簡稱大氣所)的前身是1928年成立的原國立中央研究院氣象研究所。1950年1月,中國科學院將氣象、地磁和地震等部分科研機構合並組建為中國科學院地球物理研究所。
1966年1月,根據我國氣象事業發展的需要,中國科學院決定將氣象研究室從地球物理研究所分出,正式成立中國科學院大氣物理研究所。大氣所是中國現代史上第一個研究氣象科學的最高學術機構,當前已發展成為涵蓋大氣科學領域各分支學科的大氣科學綜合研究機構。
2、IAP(應用編程)
IAP是In Application Programming的首字母縮寫,IAP是用戶自己的程序在運行過程中對User Flash的部分區域進行燒寫,目的是為了在產品發布後可以方便地通過預留的通信口對產品中的固件程序進行更新升級。
IAP操作相關:
通常在用戶需要實現IAP功能時,即用戶程序運行中作自身的更新操作,需要在設計固件程序時編寫兩個項目代碼,第一個項目程序不執行正常的功能操作,而只是通過某種通信管道(如USB、USART)接收程序或數據,執行對第二部分代碼的更新;
第二個項目代碼才是真正的功能代碼。這兩部分項目代碼都同時燒錄在User Flash中,當晶元上電後,首先是第一個項目代碼開始運行,它作如下操作:
1)檢查是否需要對第二部分代碼進行更新
2)如果不需要更新則轉到4)
3)執行更新操作
4)跳轉到第二部分代碼執行
以上內容參考:網路-IAP;網路-IAP
㈧ 單片機程序 IAP_CONTR &= ~0x40
寫成 &= 0xBF,這個0xBF不太直觀,閱讀者並不能一眼看出是什麼的掩碼。
舉個例子,我們可以定義
#define _BITMASK_XXXX_ 0x40
這樣程序就寫成
PCAOMD &= ~_BITMASK_XXXX_
閱讀者很直觀地看到這是要把XXXX功能的位給關掉了。
㈨ 單片機ISP,IAP什麼意思
ISP是在系統編程,即可以在應用板或目標板上編程或更新,而過去的編程器編程,需先將單片機寫好程序,再焊在電路板上,想修改程序,還要拿下來
IAP是應用過程中編程,更進了一步,可以在程序運行中更新程序並運行,能夠實現遠程更新,就好象我們的台式電腦,操作系統運行起來後,再安裝應用程序並運行