מחבר: טאָרטש יאָט בוטקאַמפּ
לינק: https://zhuanlan.zhihu.com/p/339700391
פֿון: קוואָראַ
1. הקדמה
סיליקאָן לאַבס האָט אָנגעבאָטן אַ האָסט+NCP לייזונג פֿאַר זיגבי גייטוויי פּלאַן. אין דעם אַרכיטעקטור, קען דער האָסט קאָמוניקירן מיטן NCP דורך UART אָדער SPI אינטערפֿייס. מערסטנס ווערט UART גענוצט ווייל עס איז פיל פּשוטער ווי SPI.
סיליקאָן לאַבס האָט אויך צוגעשטעלט אַ מוסטער פּראָיעקט פֿאַר דער האָסט פּראָגראַם, וואָס איז דער מוסטערZ3GatewayHost
דער מוסטער לויפט אויף אַ יוניקס-ענלעכער סיסטעם. עטלעכע קאַסטאַמערז וועלן אפשר אַ האָסט מוסטער וואָס קען לויפן אויף אַ RTOS, אָבער ליידער, איז נישטאָ קיין RTOS-באַזירטער האָסט מוסטער דערווייל. באַניצער דאַרפן אַנטוויקלען זייער אייגענע האָסט פּראָגראַם באַזירט אויף RTOS.
ס'איז וויכטיג צו פֿאַרשטיין דעם UART גייטוויי פּראָטאָקאָל איידער מען אַנטוויקלט אַ קאַסטאַמייזד האָסט פּראָגראַם. פֿאַר ביידע UART-באַזירט NCP און SPI-באַזירט NCP, ניצט דער האָסט דעם EZSP פּראָטאָקאָל צו קאָמוניקירן מיטן NCP.EZSPאיז קורץ פֿאַרעמברעזנעט סעריאַל פּראָטאָקאָל, און עס איז דעפינירט איןיו-דזשי-100פֿאַר UART באַזירט NCP, ווערט אַ נידעריקער שיכט פּראָטאָקאָל ימפּלאַמענטירט צו טראָגן EZSP דאַטן פאַרלאָזלעך איבער UART, דאָס איז דיאשפּראָטאָקאָל, קורץ פֿאַראַסינקראָניש סעריאַל האָסטפֿאַר מער פרטים וועגן ASH, ביטע זעןUG101אוןיוג115.
די באַציִונג צווישן EZSP און ASH קען אילוסטרירט ווערן דורך דער פאלגענדער דיאַגראַמע:
דער דאַטן פֿאָרמאַט פֿון די EZSP און די ASH פּראָטאָקאָל קען אילוסטרירט ווערן דורך דער פֿאָלגנדיקער דיאַגראַמע:
אין דעם בלאַט וועלן מיר באַקענען דעם פּראָצעס פון פֿרэйמינג די UART דאַטן און עטלעכע קי פֿרэйמס וואָס ווערן אָפֿט גענוצט אין זיגבי גייטוויי.
2. ראַמען
דער אַלגעמיינער פּראָצעס פֿון שאַפֿן אַ בילד קען מען אילוסטרירן מיט דער פֿאָלגנדיקער טשאַרט:
אין דעם טשאַרט, מיינט די דאַטן דעם EZSP ראַם. בכלל, די ראַמינג פּראָצעסן זענען: |ניין|טרעט|רעפערענץ|
|:-|:-|:-|
|1|פֿיל אויס דעם EZSP ראַם|UG100|
|2|דאַטן ראַנדאָמיזאַציע|סעקציע 4.3 פון UG101|
|3|צולייגן דעם קאנטראל בייט|קאפיטל 2 און קאפיטל 3 פון UG101|
|4|רעכענען אויס די CRC|סעקציע 2.3 פון UG101|
|5|בייט פילונג|סעקציע 4.2 פון UG101|
|6|צולייגן דעם ענד פאָן|סעקציע 2.4 פון UG101|
2.1. פֿיל אויס דעם EZSP ראַם
דער EZSP ראַם פֿאָרמאַט ווערט אילוסטרירט אין קאַפּיטל 3 פון UG100.
זייט אכטונג געבן אז דאס פֿאָרמאַט קען זיך ענדערן ווען די SDK וועט זיך אַפּגרעידן. ווען דער פֿאָרמאַט וועט זיך ענדערן, וועלן מיר אים געבן אַ נייע ווערסיע נומער. די לעצטע EZSP ווערסיע נומער איז 8 ווען דער אַרטיקל איז געשריבן (EmberZnet 6.8).
וויבאלד דער EZSP ראַם פֿאָרמאַט קען זיין אַנדערש צווישן פֿאַרשידענע ווערסיעס, איז דאָ אַ פֿאַרפֿליכטנדיקע פֿאָדערונג אַז דער האָסט און NCPמוזארבעטן מיט דער זעלבער EZSP ווערסיע. אַנדערש קענען זיי נישט קאָמוניקירן ווי געריכט.
כדי דאָס צו דערגרייכן, מוז דער ערשטער באַפֿעל צווישן דעם האָסט און דעם NCP זיין דער ווערסיע באַפֿעל. מיט אַנדערע ווערטער, דער האָסט מוז צוריקקריגן די EZSP ווערסיע פֿון NCP איידער יעדער אַנדערער קאָמוניקאַציע. אויב די EZSP ווערסיע איז אַנדערש מיט דער EZSP ווערסיע פֿון דער האָסט זייט, מוז די קאָמוניקאַציע ווערן אָפּגעשטעלט.
די אימפליציטע פארלאנג הינטער דעם איז אז דער פֿאָרמאַט פון די ווערסיע באַפֿעל קעןקיינמאָל נישט טוישןדי EZSP ווערסיע באַפֿעל פֿאָרמאַט איז ווי אונטן:
链接: https://zhuanlan.zhihu.com/p/339700391
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请泤昄净
2.2. דאַטן ראַנדאָמיזאַציע
דער דעטאַלירטער ראַנדאָמיזאַציע פּראָצעס ווערט באַשריבן אין סעקציע 4.3 פון UG101. דער גאַנצער EZSP ראַם וועט ווערן ראַנדאָמיזירט. די ראַנדאָמיזאַציע איז צו עקסקלוסיוו-אָדער דעם EZSP ראַם און אַ פּסעוודאָ-ראַנדאָם סיקוואַנס.
אונטן איז דער אַלגעריטם פון דזשענערירן די פּסעוודאָ-ראַנדאָם סיקוואַנס.
- ראַנד0 = 0×42
- אויב ביט 0 פון ראַנדי איז 0, ראַנדי+1 = ראַנדי >> 1
- אויב ביט 0 פון ראַנדי איז 1, ראַנדי+1 = (ראַנדי >> 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. בייט פילונג
ווי באשריבן אין סעקציע 4.2 פון UG101, זענען דא עטלעכע רעזערווירטע בייט ווערטן גענוצט פאר א ספעציעלן צוועק. די ווערטן קען מען געפינען אין דער פאלגנדער טאבעלע:
ווען די ווערטן דערשייַנען אין דעם ראַם, וועט מען טאָן אַ ספּעציעלע באַהאַנדלונג צו די דאַטן. – אַרײַנשטעלן דעם עקסעפּט בײַט 0x7D פֿאַר דעם רעזערווירטן בײַט – איבערקערן דעם ביט5 פֿון יענעם רעזערווירטן בײַט
אונטן זענען עטלעכע ביישפילן פון דעם אַלגעריטם:
2.6. לייג צו דעם ענד פאָן
דער לעצטער שריט איז צו לייגן צו דעם ענד פאָן 0x7E צום סוף פונעם ראַם. דערנאָך קען מען שיקן די דאַטן צום UART פּאָרט.
3. דע-פֿרэйמינג פּראָצעס
ווען דאַטן ווערט באַקומען פֿון די UART, דאַרפֿן מיר נאָר טאָן די פאַרקערטע טריט צו עס דעקאָדירן.
4. רעפֿערענצן
פּאָסט צייט: פעברואר-08-2022