stm407ethiap
A. 如何遠程更新STM32F407程序
IAP升級要程序要十分嚴謹的,你把升級文件做個校驗CRC或者別的校驗,把串口接收到的數據直接寫入到單片機內部FLASH,把APP所有數據寫入完成,在從你寫入的地址到結束的地址, 把裡面數據進行校驗,如果正確直接跳轉IAP.
B. stm32 iap的程序怎麼模擬
IAP程序也是自己寫的另一個工程,你按照普通APP那樣下載模擬即可,只是需要連接通信口進行獲取升級文件代碼,需要上位機或手動發送。要是以文件的形勢訪問,則無需通信,只需要讀取文件的相關代碼和IAP代碼即可。
C. Stm32里用IAP方式燒程序正常,但是發現掉電再上電之後,程序好像就不進主程序了
使用模擬器燒寫app並且模擬是直接運行的app,沒有經過IAP跳轉。掉電後重新上電運行app則要通過IAP進行跳轉。
說白了,那你的IAP存在bug,多半是邏輯上的,自己在IAP裡面多看看吧,找找原因。
D. 請問stm32的IAP校驗怎麼加
嘗試給BIN文件加一個異或效驗,放在BIN文件頭部。然後STM32 上接收BIN文件時首先收到效驗位元組, 然後再接收BIN文件,接收時按位元組異或,最後與BIN文件頭的效驗位元組比較。
E. STM32的IAP,2個APP的問題
不了解所說的代碼跳轉方式具體是如何實現的,但可以肯定的是你的切換程序的相應處理。一般來說比較可靠的切換,是在被切換的函數中,通過修改SP寄存器的,然後在返回跳轉至指定函數的入口地址,從而切換的。 另外需要注意的是升級過程是在中斷調用,函數的返回指令也是不一樣的 。
裸奔的話給你一個自簡單的參考結構,只要任何位置 switchapp(xxx); 都可以相對可靠的切換。
void *( CurrentApp )(void) =
void main( )
{
...
while(1)
{
CurrentApp ();
}
}
void switchapp( void *( NextApp ))
{
CurrentApp = NextApp ;
}
bool KeepRunning =true;
void App1( )
{
while(KeepRunning)
{
.......
}
}
void App2( )
{
while(KeepRunning)
{
.......
}
}
F. 單片機的IAP是什麼意思
AP是In Application Programming的首字母縮寫,IAP是用戶自己的程序在運行過程中對User Flash的部分區域進行燒寫,目的是為了在產品發布後可以方便地通過預留的通信口對產品中的固件程序進行更新升級。 通常在用戶需要實現IAP功能時,即用戶程序運行中作自身的更新操作,需要在設計固件程序時編寫兩個項目代碼,第一個項目程序不執行正常的功能操作,而只是通過某種通信管道(如USB、USART)接收程序或數據,執行對第二部分代碼的更新;第二個項目代碼才是真正的功能代碼。這兩部分項目代碼都同時燒錄在User Flash中,當晶元上電後,首先是第一個項目代碼開始運行,它作如下操作:
1)檢查是否需要對第二部分代碼進行更新
2)如果不需要更新則轉到4)
3)執行更新操作
4)跳轉到第二部分代碼執行
第一部分代碼必須通過其它手段,如JTAG或ISP燒入;第二部分代碼可以使用第一部分代碼IAP功能燒入,也可以和第一部分代碼一道燒入,以後需要程序更新是再通過第一部分IAP代碼更新。
對於STM32來說,因為它的中斷向量表位於程序存儲器的最低地址區,為了使第一部分代碼能夠正確地響應中斷,通常會安排第一部分代碼處於Flash的開始區域,而第二部分代碼緊隨其後。
在第二部分代碼開始執行時,首先需要把CPU的中斷向量表映像到自己的向量表,然後再執行其他的操作。
如果IAP程序被破壞,產品必須返廠才能重新燒寫程序,這是很麻煩並且非常耗費時間和金錢的。針對這樣的需求,STM32在對Flash區域實行讀保護的同時,自動地對用戶Flash區的開始4頁設置為防寫,這樣可以有效地保證IAP程序(第一部分代碼)區域不會被意外地破壞。
IAP與ISP的區別
在線編程目前有兩種實現方法:在系統編程(ISP)和在應用編程(IAP)。ISP一般是通過單片機專用的串列編程介面對單片機內部的Flash存儲器進行編程,而IAP技術是從結構上將Flash存儲器映射為兩個存儲體,當運行一個存儲體上的用戶程序時,可對另一個存儲體重新編程,之後將控制從一個存儲體轉向另一個。ISP的實現一般需要很少的外部電路輔助實現,而IAP的實現更加靈活,通常可利用單片機的串列口接到計算機的RS232口,通過專門設計的固件程序來編程內部存儲器。
G. stm32的IAP怎麼實現啊
肯定是先復制到sram里,然後才燒寫到flash中。
flash編程是必須要看的,此外還要知道串口傳輸文件的協議,比如說Xmodem、Ymodem協議等等。
H. stm32 iap 這個判斷是什麼意思
檢查要運行的程序即將使用的主堆棧地址是否合法。
I. stm32 iap升級,從IAP跳轉APP後APP程序中進不了中斷
首先,跳轉前關閉所有中斷,APP設置中斷向量偏移就行了,別的不用管,當然,前提是Flash地址都設定好了,別沖突