在系統程式設計ISP及在應用程式設計IAP

2021-06-16 03:53:51 字數 2496 閱讀 7734

用寫入器將code燒入,不過,晶元可以在目標板上,不用取出來,在設計目標板的時候就將介面設計在上面,所以叫"在系統程式設計",即不用脫離系統; 

什麼是iap:

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[1,0];philips為一段iap子程式,儲存在ff00h~ffffh位址空間中),達到引導到bootrom的目的。

殊途同歸,isp、iap所進入的bootrom裡面駐留的boot**,才是最終目標。

最後一種:並行程式設計模式。不需要bootrom,直接設定晶元的多個引腳來讓晶元識別命令(如:擦除、寫入、驗證等),從p口傳位址、資料,就可以寫入flash

用lpc2000的iap,你自己分配好flash空間,指定乙個block用來存放你的資料,然後通過iap進行寫操作。每次開機後,從這個block讀你的資料。

iap的實現

通常在使用者需要實現iap功能時,即使用者程式執行中作自身的更新操作,需要在設計韌體程式時編寫兩個專案**,第乙個專案程式不執行正常的功能操作,而只是通過某種通訊管道(如usb、usart)接收程式或資料,執行對第二部分**的更新;第二個專案**才是真正的功能**。這兩部分專案**都同時燒錄在user flash中,當晶元上電後,首先是第乙個專案**開始執行,它作如下操作:

1)檢查是否需要對第二部分**進行更新

2)如果不需要更新則轉到4)

3)執行更新操作

4)跳轉到第二部分**執行

第一部分**必須通過其它手段,如jtag或isp燒入;第二部分**可以使用第一部分**iap功能燒入,也可以和第一部分**一道燒入,以後需要程式更新是再通過第一部分iap**更新。

對於stm32來說,因為它的中斷向量表位於程式儲存器的最低位址區,為了使第一部分**能夠正確地響應中斷,通常會安排第一部分**處於flash的開始區域,而第二部分**緊隨其後。

在第二部分**開始執行時,首先需要把cpu的中斷向量表映像到自己的向量表,然後再執行其他的操作。

如果iap程式被破壞,產品必須返廠才能重新燒寫程式,這是很麻煩並且非常耗費時間和金錢的。針對這樣的需求,stm32在對flash區域實行讀保護的同時,自動地對使用者flash區的開始4頁設定為寫保護,這樣可以有效地保證iap程式(第一部分**)區域不會被意外地破壞。

● 在系統程式設計isp及在應用程式設計iap

1 isp和iap的工作原理

isp的實現相對要簡單一些,一般通用做法是內部的儲存器可以由上位機的軟體通過串列埠來進行改寫。對於微控制器來講可以通過spi或其它的序列介面接收上位機傳來的資料並寫入儲存器中。所以即使我們將晶元焊接在電路板上,只要留出和上位機介面的這個串列埠,就可以實現晶元內部儲存器的改寫,而無須再取下晶元。

iap的實現相對要複雜一些,在實現iap功能時, 微控制器內部一定要有兩塊儲存區,一般一塊被稱為boot區,另外一塊被稱為儲存區。微控制器上電執行在boot區,如果有外部改寫程式的條件滿足,則對儲存區的程式進行改寫操作。如果外部改寫程式的條件不滿足,程式指標跳到儲存區,開始執行放在儲存區的程式,這樣便實現了iap功能。

2 isp和iap在微控制器中的應用

2.1 傳統程式設計方法的不足

在一般的微控制器的實驗或開發時,程式設計器是必不可少的裝置。**、除錯完的程式需要借助程式設計器燒到微控制器內部或外接的程式儲存器中。普通的程式設計器**從幾百元到幾千元不等,對於一般的微控制器使用者來說還是一筆不小的開支。另外,在開發過程中,程式每改動一次就要拔下電路板上的晶元程式設計後再插上,這樣不但麻煩也很容易對晶元和電路板造成損傷,另外在程式需要公升級做改動時,必須將裝置返廠或是技術人員到現場操作,既不方便也造成成本浪費。

2.2 isp和iap的優點

isp技術的優勢是不需要程式設計器就可以進行微控制器的實驗和開發,微控制器晶元可以直接焊接到電路板上,除錯結束即成成品,免去了除錯時由於頻繁地插入取出晶元對晶元和電路板帶來的不便。

iap技術是從結構上將

flash

儲存器對映為兩個儲存體,當執行乙個儲存體上的使用者程式時,可對另乙個儲存體重新程式設計,之後將程式從乙個儲存體轉向另乙個。

isp的實現一般需要很少的外部電路輔助實現, 而iap的實現更加靈活,通常可利用微控制器的序列口接到計算機的

rs232

口,通過專門設計的韌體程式來程式設計內部儲存器,可以通過現有的internet或其它通訊方式很方便地實現遠端公升級和維護。

在tomcat web應用程式

在tomcat web應用程式 某人曰 在沒其他工具的情況下不會手動新增web應用的程式設計師是乙個菜鳥 軍哥曰 乙個不會使用好的ide開發工具的程式設計師絕對不是乙個好的程式設計師 開發web應用時,不同型別的檔案有嚴格的存放規則,否則不僅可能會使web應用無法訪問,還會導致web伺服器啟動報錯。...

iphone在應用程式用呼叫系統功能

iphone的單任務模式為手機節省了資源,保障了程式的安全執行,但是這一做法也遭到很多人的反對,為很多應用帶來了不便。如今,openurl這個方法為解決這一問題帶來了希望,雖然離多工模式還有差距,但畢竟給了大家乙個實現更強大應用的可行方法。openurl的使用方法 code code map ema...

在應用程式之間傳遞引數

在程式設計中經常會遇到在應用程式間傳遞引數的問題 我總結了兩種方法 一。在用shellexcute啟動另外乙個應用程式的同時將引數傳遞過去.函式shellexcute的原型 hinstance shellexecute hwnd hwnd,父視窗的視窗控制代碼 lpctstr lpoperation...