စာရေးသူ: TOCKOFOOBOOTCAPP
Link: https: //zhuanlan.zhihu.com/p/339700391
မှ: quora
1 ။ နိဒါန်း
ဆီလီကွန်ဓာတ်ခွဲခန်းများသည် Zigbee Gateway ဒီဇိုင်းအတွက် host + NCP ဖြေရှင်းချက်ကိုကမ်းလှမ်းခဲ့သည်။ ဤဗိသုကာတွင်အိမ်ရှင်သည် NCP နှင့် UART သို့မဟုတ် SPI interface မှတဆင့်ဆက်သွယ်နိုင်သည်။ များသောအားဖြင့် UART သည် SPI ထက် ပို. ရိုးရှင်းသူအဖြစ်အသုံးပြုသည်။
ဆီလီကွန်ဓာတ်ခွဲခန်းများသည်နမူနာဖြစ်သောအိမ်ရှင်အစီအစဉ်အတွက်နမူနာစီမံကိန်းတစ်ခုကိုလည်းထောက်ပံ့ပေးခဲ့သည်Z3GateTayhost
။ နမူနာနမူနာသည် Unix ကဲ့သို့သောစနစ်တစ်ခုပေါ်တွင်အလုပ်လုပ်သည်။ အချို့သောဖောက်သည်များသည် RTOs ပေါ်တွင် run နိုင်သည့်အိမ်ရှင်နမူနာကိုလိုချင်ကြသော်လည်းကံမကောင်းအကြောင်းမလှစွာဖြစ်သည့် RTOs အခြေပြုထားသည့်အိမ်ရှင်နမူနာမရှိသေးပါ။ အသုံးပြုသူများသည် RTOs အပေါ် အခြေခံ. ကိုယ်ပိုင် host program ကိုရေးဆွဲရန်လိုအပ်သည်။
စိတ်ကြိုက် host ပရိုဂရမ်ကိုမဖော်ဆောင်မီ UARK Gateway protocol ကိုနားလည်ရန်အရေးကြီးသည်။ UACT အခြေပြု NCP နှင့် SPI အခြေပြု NCP နှစ်ခုစလုံးအတွက် Host သည် NCP နှင့်ဆက်သွယ်ရန် EZSP protocol ကိုအသုံးပြုသည်။zspတိုတောင်းသည်Emberznet Serial protocolနှင့်ကသတ်မှတ်ထားသည်ug100။ Uart အခြေစိုက် NCP အတွက်နိမ့်သောအလွှာ protocol ကို zapsp အချက်အလက်များကို UART အပေါ်တွင်ယုံကြည်စိတ်ချရရန်အတွက်အကောင်အထည်ဖော်ရန်အကောင်အထည်ဖော်သည်ပြာProtocol, တိုတောင်းasynchronous အမှတ်စဉ် host။ Ash နှင့်ပတ်သက်သောအသေးစိတ်အချက်အလက်များအတွက် ကျေးဇူးပြု. ကိုးကားပါug101နှင့်ug115.
EZSP နှင့် Ash တို့၏ဆက်နွယ်မှုကိုအောက်ပါပုံများဖြင့်သရုပ်ဖော်နိုင်သည်။
EZSP ၏အချက်အလက်ပုံစံနှင့် Ash protocol ကိုအောက်ပါပုံကြမ်းဖြင့်သရုပ်ဖော်နိုင်သည်။
ဤစာမျက်နှာတွင်ကျွန်ုပ်တို့သည် UARD ဒေတာများကိုဘောင်များနှင့် Zigbee Gateway တွင်မကြာခဏအသုံးပြုသောသော့ချက် frames အချို့ကိုမိတ်ဆက်ပေးမည်။
2 ။ ဘောင်
အထွေထွေ frating လုပ်ငန်းစဉ်ကိုအောက်ပါဇယားမှသရုပ်ဖော်နိုင်သည်။
ဤဇယားတွင်အချက်အလက်များသည် EZSP ဘောင်ကိုဆိုလိုသည်။ ယေဘုယျအားဖြင့်ဘောင်လုပ်ငန်းစဉ်များမှာ - | အမှတ် | အဆင့် | ရည်ညွှန်းချက် |
| |: \ t: |: |: |: |: |
| 1 | EZSP ဘောင်ဖြည့်ပါ UG100 |
| 2 | ဒေတာကျပန်း | UG101 ၏အပိုင်း 4.3 |
| 3 | Control Control ကိုထည့်ပါ Byte | | Chap2 နှင့် CHOST3 ၏ CHOT3 |
| 4 | CRC ကိုတွက်ချက်ခြင်း CRC ကိုတွက်ချက် | UG101 ၏အပိုင်း 2.3 |
| 5 | BYTE Statch | UG101 ၏အပိုင်း 4.2 |
| 6. အဆုံးအလံထည့်ပါ ug101 ၏အပိုင်း 2.4 |
2.1 ။ EZSP ဘောင်ကိုဖြည့်ပါ
EZSP ဘောင်ပုံစံကို Ug100 ၏အခန်း 300 တွင်ဖော်ပြထားသည်။
SDK အဆင့်မြှင့်တင်သည့်အခါဤပုံစံသည်ဤပုံစံပြောင်းလဲသွားနိုင်သည်ကိုဂရုပြုပါ။ format ပြောင်းလဲသည့်အခါ၎င်းသည်၎င်းကိုဗားရှင်းအသစ်တစ်ခုပေးလိမ့်မည်။ နောက်ဆုံးပေါ် EZSP ဗားရှင်းနံပါတ်သည်ဤဆောင်းပါးကိုရေးသားသောအခါ (Emberznet 6.8) ကိုရေးသောအခါ 8 ဖြစ်သည်။
EZSP formation format သည်မတူညီသောဗားရှင်းများအကြားကွဲပြားနိုင်သည်,ရအတူတူ ezsp ဗားရှင်းနှင့်အတူအလုပ်လုပ်ကြသည်။ ဒီလိုမှမဟုတ်ရင်သူတို့ဟာမျှော်မှန်းထားလို့မရဘူး။
၎င်းကိုအောင်မြင်ရန်အိမ်ရှင်နှင့် NCP တို့အကြားပထမဆုံး command သည်ဗားရှင်း command ဖြစ်ရမည်။ တစ်နည်းပြောရလျှင်အိမ်ရှင်သည်အခြားမည်သည့်ဆက်သွယ်ရေးမပြုမီ NCP ၏ EZSP ဗားရှင်းကိုပြန်လည်ရယူရမည်။ EZSP ဗားရှင်းသည် host ည့်သည်ဘကျ၏ EZSP ဗားရှင်းနှင့်ကွဲပြားပါကဆက်သွယ်မှုကိုဖျက်သိမ်းရမည်။
နောက်ကွယ်မှသွယ်ဝိုက်လိုအပ်ချက်မှာမူဗားရှင်း command ကိုပုံစံ၏ပုံစံဖြစ်သည်ဘယ်တော့မှမပြောင်းလဲပါနဲ့။ EZSP ဗားရှင်း command format သည်အောက်တွင်ဖော်ပြထားသည်။
链接: https: //zhuanlan.zhihu.com/p/339700391
来源: 知乎: 知乎
著作权归作者所有။ 商业转载请联系作者获得授权, 非商业转载请注明出处, 非商业转载请注明出处။
2.2 ။ ဒေတာကျပန်း
အသေးစိတ်ကျပန်းဖြစ်စဉ်ကို UG101 ပုဒ်မ 4.3 တွင်ဖော်ပြထားသည်။ EZSP ဘောင်တစ်ခုလုံးကျပန်းလိမ့်မည်။ ကျပန်း-or ezsp frame နှင့် pseudo-dression sequence ကိုသီးသန့်သို့မဟုတ် pseudo-ကျပန်း sequence ကိုသီးသန့် - သို့မဟုတ် pseudo-sequence ကိုဖြစ်ပါတယ်။
အောက်တွင်ဖော်ပြထားသည်မှာ Pseudo-Discing sequence ကိုထုတ်လုပ်ရန် algorithm ဖြစ်သည်။
- Rand0 = 0 × 42
- Randi ၏ 0 င် 0 င် 0 င် 0 င် 1 + 1 = Randi >> 1
- အကယ်. Randi ၏ 0 င် 0 င် 1 သည် 1 ဖြစ်ပါက Randi + 1 = (Randi >> 1) ^ 0xB8
2.3 ။ ထိန်းချုပ်မှု byte ထည့်ပါ
ထိန်းချုပ်မှု byte သည် byte data တစ်ခုဖြစ်ပြီးဘောင်၏ခေါင်းကိုထည့်သွင်းသင့်သည်။ ပုံစံကိုအောက်ပါဇယားဖြင့်သရုပ်ဖော်ထားသည်။
လုံးဝ, ထိန်းချုပ်မှု bytes 6 မျိုးရှိပါတယ်။ ပထမသုံးခုကို EZSP ဒေတာများအပါအ 0 င် ezsp အချက်အလက်များနှင့်အတူဘုံ frames များအတွက်အသုံးပြုသည်။ နောက်ဆုံးသုံးခုကို RST, Rustack နှင့်အမှားအပါအ 0 င်ဘုံ EZSP အချက်အလက်များမပါဘဲအသုံးပြုသည်။
RST, Rustack နှင့်အမှားများ၏ပုံစံကိုပုဒ်မ 3.1 မှ 3.3 တွင်ဖော်ပြထားသည်။
2.4 ။ CRC တွက်ချက်
16-bit CRC ကို Control Control Byte မှဒေတာအဆုံးတိုင်အောင် Control Byte တွင်တွက်ချက်သည်။ စံ CRCCICTTED (G (x) = x16 + x12 + x5 + x5 + 1) ကို 0xFFFF မှစတင်သည်။ အထင်ရှားဆုံး byte သည်အနည်းဆုံးသိသိသာသာ byte (Big-endian mode) ကိုအရင်အသုံးပြုသည်။
2.5 ။ stuffing byte
UG101 ပုဒ်မ 4.2 တွင်ဖော်ပြထားသည့်အတိုင်းအထူးရည်ရွယ်ချက်အတွက်အသုံးပြုသော Reste တန်ဖိုးများရှိသည်။ ဤတန်ဖိုးများကိုအောက်ပါဇယားတွင်တွေ့နိုင်သည်။
ဤတန်ဖိုးများကိုဘောင်တွင်ပေါ်လာသည့်အခါအချက်အလက်များကိုအထူးကုသမှုပြုလိမ့်မည်။ - Reserve Byte ၏ရှေ့မှောက်၌ byte 0x7d ကို Escape မှလွတ်မြောက်ပါ
အောက်တွင်ဖော်ပြထားသောဤ algorithm ဥပမာအချို့ကိုဖော်ပြထားသည်။
2.6 ။ အဆုံးအလံထည့်ပါ
နောက်ဆုံးအဆင့်မှာအဆုံးအလံကို 0x7E ကို frame ၏အဆုံးသို့ထည့်ရန်ဖြစ်သည်။ ထို့နောက်ဒေတာများကို UART Port သို့ပို့နိုင်သည်။
3 ။ PRAMING လုပ်ငန်းစဉ်
အချက်အလက်များကို UART မှလက်ခံရရှိသည့်အခါကျွန်ုပ်တို့က၎င်းကိုဆုံးဖြတ်ရန်ပြောင်းပြန်အဆင့်များကိုလုပ်ဆောင်ရန်လိုအပ်သည်။
4 ။ ကိုးကား
Post Time: Feb-08-2022