2009年3月4日 星期三

MCU在ICE上開發與實際CHIP的差異

很多狀況會導致ICE開發時的結果正確,但是燒錄出來的實體CHIP卻有不同的結果…
底下記錄實際發生過的經驗:

一、使用內RC開發計時功能,燒錄出來卻發生時差誤差很大:
  大部份的MCU都己經有提供內RC的功能,但若ICE設計的有問題,或開發時的環境不同,年久失準…等等問題,就會有ICE內頻不準的狀況,而實際CHIP由於是相對比較量產的東西,所以實際的CHIP反而是應該要比較準確。
  系統開發的時間若是忽略這個問題,反而自作聰明的加入校正值的話,就會導致這個問題。

二、ICE由於可以模擬多種型號的CHIP,因此在設計時必定使用了比較大的RAM容量來當作CODE及MEMORY的記憶體,若是編譯器不良無法針對不同型號作檢查,那就有可能出現STACK OV的問題而在ICE模擬時卻不自知。一般都會正確檢查CODE的大小是否超過ROM的大小,但不一定都會檢查RAM的問題。

三、同樣上述的原因,不同的CHIP可能會對不同的指令集有不同程度的支援,若是編譯器無法適時檢查出這種錯誤,也會讓你DEBUG沒完沒了。

四、AD轉換模組需要使用參考電壓,有的是外部參考電壓,但也有用內部參考電壓的,這時就要考量ICE的電壓要怎麼能跟實際主板電壓一樣,或怎加入校正程序。

沒有留言:

更高效處理 micro second 的方式

更高效處理 micro second 的方式…  以 STM32 為例… __IO unsigned long sys_tick = 0; void SysTick_Handler(void) {     HAL_IncTick();     sys_tick += (SysTi...