2007年7月19日 星期四

FPPA 副程式區城變數的問題(意想不到的問題)

// 取得 share 變數使用權:
inc share_token; // 要求取得 share 變數使用權
dzsn share_token; // 由於保證 ram 內容一次只有一個 fppa 能動~所以能保證只有一個 fppa 能過這關
goto $-2; // 其它 fppa 進入等待的循環
inc share_token; // fppa 取得 share 變數使用權

// 釋放 share 變數使用權 :
dec share_token; // fppa 釋放 share 變數使用權

當cpu都同步同速時~幾乎沒有問題~
反之,各cpu就有可能在1-2間打結,造成 share_token 永不為零的狀況,死當。

這個問題很有可能不被發現~要看你這段程式的使用頻率狀況而定~在隨機的情況下,發生的機率應該很大。

沒有留言:

更高效處理 micro second 的方式

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