مصنف: ٹارچی آئوٹ بوٹ کیمپ
لنک: https://zhuanlan.zhihu.com/p/339700391
منجانب: کوورا
1. تعارف
Silicon Labs نے Zigbee گیٹ وے ڈیزائن کے لیے ایک host+NCP حل پیش کیا ہے۔ اس فن تعمیر میں، میزبان UART یا SPI انٹرفیس کے ذریعے NCP کے ساتھ بات چیت کر سکتا ہے۔ عام طور پر، UART استعمال کیا جاتا ہے کیونکہ یہ SPI سے بہت آسان ہے۔
Silicon Labs نے میزبان پروگرام کے لیے ایک نمونہ پروجیکٹ بھی فراہم کیا ہے، جو کہ نمونہ ہے۔Z3GatewayHost
. نمونہ یونکس جیسے نظام پر چلتا ہے۔ کچھ گاہک ایک میزبان نمونہ چاہتے ہیں جو RTOS پر چل سکتا ہے، لیکن بدقسمتی سے، اس وقت کوئی RTOS پر مبنی میزبان نمونہ نہیں ہے۔ صارفین کو RTOS کی بنیاد پر اپنا میزبان پروگرام تیار کرنے کی ضرورت ہے۔
اپنی مرضی کے مطابق میزبان پروگرام تیار کرنے سے پہلے UART گیٹ وے پروٹوکول کو سمجھنا ضروری ہے۔ UART پر مبنی NCP اور SPI پر مبنی NCP دونوں کے لیے، میزبان NCP کے ساتھ بات چیت کرنے کے لیے EZSP پروٹوکول کا استعمال کرتا ہے۔ای زیڈ ایس پیکے لئے مختصر ہےEmberZnet سیریل پروٹوکول، اور اس کی تعریف میں ہے۔UG100. UART پر مبنی NCP کے لیے، EZSP ڈیٹا کو UART پر معتبر طریقے سے لے جانے کے لیے ایک نچلی پرت کا پروٹوکول لاگو کیا جاتا ہے، یہاے ایس ایچپروٹوکول، مختصر کے لیےغیر مطابقت پذیر سیریل میزبان. ASH کے بارے میں مزید تفصیلات کے لیے، براہ کرم رجوع کریں۔UG101اورUG115.
EZSP اور ASH کے درمیان تعلق کو درج ذیل خاکہ سے واضح کیا جا سکتا ہے۔
EZSP اور ASH پروٹوکول کے ڈیٹا فارمیٹ کو درج ذیل خاکہ سے واضح کیا جا سکتا ہے۔
اس صفحہ میں، ہم UART ڈیٹا اور کچھ کلیدی فریموں کو تیار کرنے کے عمل کو متعارف کرائیں گے جو اکثر Zigbee گیٹ وے میں استعمال ہوتے ہیں۔
2. فریم بنانا
عام فریمنگ کے عمل کو درج ذیل چارٹ سے واضح کیا جا سکتا ہے:
اس چارٹ میں ڈیٹا کا مطلب EZSP فریم ہے۔ عام طور پر، فریمنگ کے عمل یہ ہیں: |نہیں | قدم | حوالہ |
|:-|:-|:-|
|1|EZSP فریم کو بھریں|UG100|
|2|ڈیٹا رینڈمائزیشن|UG101 کا سیکشن 4.3|
|3|UG101 کا کنٹرول بائٹ|Chap2 اور Chap3 شامل کریں۔
|4| CRC کا حساب لگائیں | UG101 کا سیکشن 2.3 |
|5|بائٹ اسٹفنگ|UG101 کا سیکشن 4.2|
|6|اینڈ فلیگ شامل کریں
2.1 EZSP فریم کو پُر کریں۔
EZSP فریم کی شکل UG100 کے باب 3 میں دی گئی ہے۔
دھیان دیں کہ SDK کے اپ گریڈ ہونے پر یہ فارمیٹ تبدیل ہو سکتا ہے۔ جب فارمیٹ بدل جائے گا، ہم اسے ایک نیا ورژن نمبر دیں گے۔ تازہ ترین EZSP ورژن نمبر 8 ہے جب یہ مضمون لکھا گیا ہے (EmberZnet 6.8)۔
چونکہ EZSP فریم فارمیٹ مختلف ورژنز کے درمیان مختلف ہو سکتا ہے، اس لیے ایک لازمی ضرورت ہے کہ میزبان اور NCPضروری ہے۔اسی EZSP ورژن کے ساتھ کام کریں۔ بصورت دیگر، وہ توقع کے مطابق بات چیت نہیں کر سکتے۔
اسے حاصل کرنے کے لیے، میزبان اور NCP کے درمیان پہلی کمانڈ ورژن کمانڈ ہونی چاہیے۔ دوسرے لفظوں میں، میزبان کو کسی دوسرے مواصلت سے پہلے NCP کا EZSP ورژن دوبارہ حاصل کرنا چاہیے۔ اگر EZSP ورژن میزبان سائیڈ کے EZSP ورژن سے مختلف ہے، تو مواصلت کو ختم کر دینا چاہیے۔
اس کے پیچھے مضمر ضرورت یہ ہے کہ ورژن کمانڈ کا فارمیٹ ہو سکتا ہے۔کبھی نہیں بدلنا. EZSP ورژن کمانڈ فارمیٹ ذیل کی طرح ہے:
链接:https://zhuanlan.zhihu.com/p/339700391
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权،非商业转转请注明出处.
2.2 ڈیٹا رینڈمائزیشن
تفصیلی بے ترتیب عمل کو UG101 کے سیکشن 4.3 میں بیان کیا گیا ہے۔ پورے EZSP فریم کو بے ترتیب کر دیا جائے گا۔ رینڈمائزیشن خصوصی یا EZSP فریم اور ایک چھدم بے ترتیب ترتیب ہے۔
ذیل میں سیوڈو بے ترتیب ترتیب پیدا کرنے کا الگورتھم ہے۔
- رینڈ0 = 0×42
- اگر رینڈی کا بٹ 0 0 ہے، randi+1 = randi >> 1
- اگر randi کا بٹ 0 1 ہے، randi+1 = (randi >> 1) ^ 0xB8
2.3۔ کنٹرول بائٹ شامل کریں۔
کنٹرول بائٹ ایک بائٹ ڈیٹا ہے، اور اسے فریم کے سر میں شامل کیا جانا چاہیے۔ فارمیٹ کو نیچے دیے گئے جدول کے ساتھ واضح کیا گیا ہے۔
مجموعی طور پر، 6 قسم کے کنٹرول بائٹس ہیں۔ پہلے تین EZSP ڈیٹا کے ساتھ عام فریموں کے لیے استعمال کیے جاتے ہیں، بشمول DATA، ACK اور NAK۔ آخری تین کو عام EZSP ڈیٹا کے بغیر استعمال کیا جاتا ہے، بشمول RST، RSTACK اور ERROR۔
RST، RSTACK اور ERROR کی شکل سیکشن 3.1 سے 3.3 میں بیان کی گئی ہے۔
2.4 CRC کا حساب لگائیں۔
کنٹرول بائٹ سے ڈیٹا کے اختتام تک بائٹس پر 16 بٹ CRC کا حساب لگایا جاتا ہے۔ معیاری CRCCCITT (g(x) = x16 + x12 + x5 + 1) کو 0xFFFF پر شروع کیا گیا ہے۔ سب سے اہم بائٹ کم از کم اہم بائٹ (بڑے اینڈین موڈ) سے پہلے ہے۔
2.5 بائٹ اسٹفنگ
جیسا کہ UG101 کے سیکشن 4.2 میں بیان کیا گیا ہے، خاص مقصد کے لیے استعمال ہونے والی کچھ مخصوص بائٹ ویلیوز ہیں۔ یہ اقدار درج ذیل جدول میں مل سکتی ہیں۔
جب یہ قدریں فریم میں ظاہر ہوں گی، ڈیٹا کے ساتھ ایک خاص سلوک کیا جائے گا۔ - محفوظ شدہ بائٹ کے سامنے فرار بائٹ 0x7D داخل کریں - اس مخصوص بائٹ کے بٹ 5 کو ریورس کریں
ذیل میں اس الگورتھم کی کچھ مثالیں ہیں:
2.6۔ اختتامی پرچم شامل کریں۔
آخری مرحلہ فریم کے آخر میں اختتامی پرچم 0x7E شامل کرنا ہے۔ اس کے بعد، ڈیٹا UART پورٹ پر بھیجا جا سکتا ہے۔
3. ڈی فریمنگ کا عمل
UART سے ڈیٹا موصول ہونے پر، ہمیں اسے ڈی کوڈ کرنے کے لیے صرف الٹا اقدامات کرنے کی ضرورت ہے۔
4. حوالہ جات
پوسٹ ٹائم: فروری 08-2022