Zigbee疑難問題定位以及思路方法分享 一

2021-09-25 00:15:01 字數 1275 閱讀 4848

最近換了家新公司,花了兩個月從不懂zigbee到解決了不少遺留偶發bug,有了不少心得體會,下面分享下自己定位思路,以及分析問題的方法。

剛進公司,接手了另乙個工程師做的zigbee專案(採用cc2530方案),遺留不少問題bug,前兩周看**,熟悉zigbee協議,當前遺留了有不少bug,其中丟包率高、經常性的掉線並且不能自恢復、入網速度慢、入網後概率性的掉線這幾個問題最為急切解決,我選擇了乙個相對簡單解決的問題入手----丟包率高。

首先大概分析了一下,丟包率高有幾個可能性的問題:1、外界干擾;2、防衝突機制以及cca閾值;3、軟體bug。

其中1是沒辦法的,只能通過修改通道,錯開wifi干擾區間,如下圖

由以前的18、25、26通道,改為11、15、20、26通道,大致測試了一下,相對稍微改善一下,但依舊沒有得到質的提公升。

採取2方法,因為cc2530防衝突機制底層封裝成庫了,無法進行改善,既然底層無法改善,那就修改引數,於是乎,修改了ccactrl0暫存器裡的cca_thr暫存器,經過反覆嘗試,選擇到乙個最佳的值(詳細步驟就不說了),但是依舊沒有得到預期效果。

採取3方法,懷疑程式有bug,但是看**沒有問題,因此根據之前經驗,有線的有問題就抓波形,無線有問題就抓包,開始認真研讀802.15協議以及zigbee協議,通過抓包分析,後來突發奇想,既然傳送資料錯誤,就看看錯誤原因,於是在

在af_datarequest函式返回值進行**,檢視ret的結果值,無意間嘗試,把協調器斷電,裝置發資料,理論上應該得到錯誤值,但是這個值確是0,我懷疑資料有沒有發出去,通過抓包,發現

一直在發資料,沒有收到ack,才知道,判斷傳送是否成功的地點出錯,程式bug,通過除錯,發現在

這裡面才是有無收到ack狀態返回,斷開閘道器,返回值在0xe9,通道繁忙,返回值是0xe1,定義在zcomdef.h定義,通過修改,解決了丟包率高的一系列問題,當然還有關聯時間過長等問題,稍後分享

MS SQL Server 疑難問題

有一表a id date name 1 2007 01 01 ccc 1 2007 01 01 ddd 1 2007 01 01 vv 1 2007 02 01 ttttt 2 2007 01 01 gg 3 2007 01 02 ccc 3 2007 01 01 ccc 4 2007 01 04 ...

python疑難問題

python的列表之間有關係嗎?group queue for in range 2 各組的子佇列 queue queue 組佇列,控制組與組之間的執行順序,因為每個組的專案要一起執行 group queue 6 5 for i in range len group queue print queu...

C 疑難問題 const static

關鍵字const 指定用其宣告的內容保持不變 1.標識變數 代替 define來宣告常量 const doble pi 3.14159 2.標識方法 標識類方法,可以防止方法修改類中不可變的資料成員 class.h class a class.cpp int getvalue const 3.con...