2009年9月17日 星期四

LCM當機解法

最近收到LCM當機客訴。說會當機,經大陸工廠實測,機器連續運作200次會發生3次當機,但有的機器不會。


因為就是用我做的簡單多工,我自然必須去追。


問題是,當機率不高,實在不好抓。而且研發部只有一台機器,實在不容易做為代表。


我實在查不出那裡有問題,因為好像只有一個Task當,其他Task沒當掉。


所以只好在通訊解析上做了一個Buffer邊界檢查,然後請大陸工廠測。


結果很不錯,都沒當機。


這樣可以確定是通信品質有問題。


MCU的程式,果然是一點可能發生錯誤的可能性都不行,因為實在不知電子是否有穩定。





2 則留言:

  1. 可以再把  通訊解析上做了一個Buffer邊界檢查  說清楚一點嗎?   是因為收到錯的data 導至buffer 爆掉嗎?
    謝謝 
    [版主回覆11/21/2010 22:37:18]這個算是通信封包上的問題。
    因為封包簡單又要有效率,其中有一項是封包長度。
    結果雜訊干擾的長度的資料,變成錯誤資料,在資料取用上就會產生問題。
    會清除到別的Task資料造成當機。
    後來就加入檢查是否是合理的長度,沒想到就這樣解了。

    回覆刪除
  2. 請問那是什麼機器?是用什麼通信介面在傳送封包?

    照Bee大的說法就像是在接收端加一個資料濾波器,過濾多餘的或是錯誤的封包,如果檢查格式不對,就要求再傳送一次,不愧是好辦法。

    [版主回覆08/08/2013 10:49:08]前公司的機器。是使用8051做為畫面處理器。
    因為主要MCU只剩I2C界面,拉出板外再以1米長的線連起來。
    I2C驅動能力弱,所以會有信號上的問題。
    不過因是舊機器,通信格式無法修改。

    是Bee第一個簡單多工開發平台,所以當時會担心穩定度。
    這次事件反而證明,多工程式對於資料錯誤的耐受度較單工來得好。部分功能當了,有些功能還在動作。不會一個卡,就全卡死。

    現在簡單多工也做了數個產品了。

    回覆刪除