ಲೇಖಕ: TorchIoTBootCamp
ಲಿಂಕ್: https://zhuanlan.zhihu.com/p/339700391
ಇಂದ: ಕೋರಾ
1. ಪರಿಚಯ
ಜಿಗ್ಬೀ ಗೇಟ್ವೇ ವಿನ್ಯಾಸಕ್ಕಾಗಿ ಸಿಲಿಕಾನ್ ಲ್ಯಾಬ್ಸ್ ಹೋಸ್ಟ್+NCP ಪರಿಹಾರವನ್ನು ನೀಡಿದೆ. ಈ ವಾಸ್ತುಶಿಲ್ಪದಲ್ಲಿ, ಹೋಸ್ಟ್ UART ಅಥವಾ SPI ಇಂಟರ್ಫೇಸ್ ಮೂಲಕ NCP ಯೊಂದಿಗೆ ಸಂವಹನ ನಡೆಸಬಹುದು. ಸಾಮಾನ್ಯವಾಗಿ, UART ಅನ್ನು ಬಳಸಲಾಗುತ್ತದೆ ಏಕೆಂದರೆ ಇದು SPI ಗಿಂತ ಹೆಚ್ಚು ಸರಳವಾಗಿದೆ.
ಸಿಲಿಕಾನ್ ಲ್ಯಾಬ್ಸ್ ಆತಿಥೇಯ ಕಾರ್ಯಕ್ರಮಕ್ಕಾಗಿ ಮಾದರಿ ಯೋಜನೆಯನ್ನು ಸಹ ಒದಗಿಸಿದೆ, ಅದು ಮಾದರಿಯಾಗಿದೆZ3ಗೇಟ್ವೇಹೋಸ್ಟ್
. ಮಾದರಿಯು ಯುನಿಕ್ಸ್ ತರಹದ ವ್ಯವಸ್ಥೆಯಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ. ಕೆಲವು ಗ್ರಾಹಕರು RTOS ನಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸಬಹುದಾದ ಹೋಸ್ಟ್ ಮಾದರಿಯನ್ನು ಬಯಸಬಹುದು, ಆದರೆ ದುರದೃಷ್ಟವಶಾತ್, ಸದ್ಯಕ್ಕೆ ಯಾವುದೇ RTOS ಆಧಾರಿತ ಹೋಸ್ಟ್ ಮಾದರಿ ಇಲ್ಲ. ಬಳಕೆದಾರರು RTOS ಆಧರಿಸಿ ತಮ್ಮದೇ ಆದ ಹೋಸ್ಟ್ ಪ್ರೋಗ್ರಾಂ ಅನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸಬೇಕಾಗಿದೆ.
ಕಸ್ಟಮೈಸ್ ಮಾಡಿದ ಹೋಸ್ಟ್ ಪ್ರೋಗ್ರಾಂ ಅನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸುವ ಮೊದಲು UART ಗೇಟ್ವೇ ಪ್ರೋಟೋಕಾಲ್ ಅನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಮುಖ್ಯವಾಗಿದೆ. UART ಆಧಾರಿತ NCP ಮತ್ತು SPI ಆಧಾರಿತ NCP ಎರಡಕ್ಕೂ, ಹೋಸ್ಟ್ NCP ಯೊಂದಿಗೆ ಸಂವಹನ ನಡೆಸಲು EZSP ಪ್ರೋಟೋಕಾಲ್ ಅನ್ನು ಬಳಸುತ್ತದೆ.ಇಝಡ್ಎಸ್ಪಿಇದರ ಸಂಕ್ಷಿಪ್ತ ರೂಪಎಂಬರ್ಝ್ನೆಟ್ ಸೀರಿಯಲ್ ಪ್ರೋಟೋಕಾಲ್, ಮತ್ತು ಇದನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಲಾಗಿದೆಯುಜಿ100UART ಆಧಾರಿತ NCP ಗಾಗಿ, UART ಮೇಲೆ EZSP ಡೇಟಾವನ್ನು ವಿಶ್ವಾಸಾರ್ಹವಾಗಿ ಸಾಗಿಸಲು ಕೆಳ ಹಂತದ ಪ್ರೋಟೋಕಾಲ್ ಅನ್ನು ಅಳವಡಿಸಲಾಗಿದೆ, ಅದುಆಶ್ಶಿಷ್ಟಾಚಾರ, ಸಂಕ್ಷಿಪ್ತ ರೂಪಅಸಮಕಾಲಿಕ ಸೀರಿಯಲ್ ಹೋಸ್ಟ್. ASH ಬಗ್ಗೆ ಹೆಚ್ಚಿನ ವಿವರಗಳಿಗಾಗಿ, ದಯವಿಟ್ಟು ನೋಡಿಯುಜಿ 101ಮತ್ತುಯುಜಿ 115.
EZSP ಮತ್ತು ASH ನಡುವಿನ ಸಂಬಂಧವನ್ನು ಈ ಕೆಳಗಿನ ರೇಖಾಚಿತ್ರದಿಂದ ವಿವರಿಸಬಹುದು:
EZSP ಮತ್ತು ASH ಪ್ರೋಟೋಕಾಲ್ನ ಡೇಟಾ ಸ್ವರೂಪವನ್ನು ಈ ಕೆಳಗಿನ ರೇಖಾಚಿತ್ರದಿಂದ ವಿವರಿಸಬಹುದು:
ಈ ಪುಟದಲ್ಲಿ, ನಾವು UART ಡೇಟಾವನ್ನು ಫ್ರೇಮ್ ಮಾಡುವ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಮತ್ತು ಜಿಗ್ಬೀ ಗೇಟ್ವೇನಲ್ಲಿ ಆಗಾಗ್ಗೆ ಬಳಸಲಾಗುವ ಕೆಲವು ಪ್ರಮುಖ ಫ್ರೇಮ್ಗಳನ್ನು ಪರಿಚಯಿಸುತ್ತೇವೆ.
2. ಚೌಕಟ್ಟು ಹಾಕುವುದು
ಸಾಮಾನ್ಯ ಚೌಕಟ್ಟಿನ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಈ ಕೆಳಗಿನ ಚಾರ್ಟ್ ಮೂಲಕ ವಿವರಿಸಬಹುದು:
ಈ ಚಾರ್ಟ್ನಲ್ಲಿ, ಡೇಟಾ ಎಂದರೆ EZSP ಫ್ರೇಮ್. ಸಾಮಾನ್ಯವಾಗಿ, ಫ್ರೇಮಿಂಗ್ ಪ್ರಕ್ರಿಯೆಗಳು: |ಇಲ್ಲ|ಹಂತ|ಉಲ್ಲೇಖ|
|:-|:-|:-|
|1|EZSP ಫ್ರೇಮ್ ಅನ್ನು ಭರ್ತಿ ಮಾಡಿ|UG100|
|2|ಡೇಟಾ ಯಾದೃಚ್ಛಿಕೀಕರಣ|UG101 ರ ವಿಭಾಗ 4.3|
|3|UG101 ನ ಕಂಟ್ರೋಲ್ ಬೈಟ್|Chap2 ಮತ್ತುChap3 ಸೇರಿಸಿ|
|4|CRC ಲೆಕ್ಕಾಚಾರ ಮಾಡಿ|UG101 ರ ವಿಭಾಗ 2.3|
|5|ಬೈಟ್ ಸ್ಟಫಿಂಗ್|UG101 ರ ವಿಭಾಗ 4.2|
|6|ಎಂಡ್ ಫ್ಲ್ಯಾಗ್ ಸೇರಿಸಿ|UG101 ರ ವಿಭಾಗ 2.4|
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 ಫ್ರೇಮ್ ಮತ್ತು ಸೂಡೋ-ಯಾದೃಚ್ಛಿಕ ಅನುಕ್ರಮವನ್ನು ಎಕ್ಸ್ಕ್ಲೂಸಿವ್-OR ಮಾಡುವುದು.
ಸೂಡೊ-ಯಾದೃಚ್ಛಿಕ ಅನುಕ್ರಮವನ್ನು ಉತ್ಪಾದಿಸುವ ಅಲ್ಗಾರಿದಮ್ ಕೆಳಗೆ ಇದೆ.
- ರಾಂಡ್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. ಬೈಟ್ ಸ್ಟಫಿಂಗ್
UG101 ರ ವಿಭಾಗ 4.2 ರಲ್ಲಿ ವಿವರಿಸಿದಂತೆ, ವಿಶೇಷ ಉದ್ದೇಶಕ್ಕಾಗಿ ಬಳಸಲಾಗುವ ಕೆಲವು ಕಾಯ್ದಿರಿಸಿದ ಬೈಟ್ ಮೌಲ್ಯಗಳಿವೆ. ಈ ಮೌಲ್ಯಗಳನ್ನು ಈ ಕೆಳಗಿನ ಕೋಷ್ಟಕದಲ್ಲಿ ಕಾಣಬಹುದು:
ಈ ಮೌಲ್ಯಗಳು ಫ್ರೇಮ್ನಲ್ಲಿ ಕಾಣಿಸಿಕೊಂಡಾಗ, ಡೇಟಾಗೆ ವಿಶೇಷ ಚಿಕಿತ್ಸೆಯನ್ನು ನೀಡಲಾಗುತ್ತದೆ. – ಕಾಯ್ದಿರಿಸಿದ ಬೈಟ್ನ ಮುಂದೆ ಎಸ್ಕೇಪ್ ಬೈಟ್ 0x7D ಅನ್ನು ಸೇರಿಸಿ – ಆ ಕಾಯ್ದಿರಿಸಿದ ಬೈಟ್ನ ಬಿಟ್ 5 ಅನ್ನು ಹಿಮ್ಮುಖಗೊಳಿಸಿ.
ಈ ಅಲ್ಗಾರಿದಮ್ನ ಕೆಲವು ಉದಾಹರಣೆಗಳು ಇಲ್ಲಿವೆ:
2.6. ಅಂತ್ಯ ಧ್ವಜವನ್ನು ಸೇರಿಸಿ
ಅಂತಿಮ ಹಂತವೆಂದರೆ ಫ್ರೇಮ್ನ ಅಂತ್ಯಕ್ಕೆ ಎಂಡ್ ಫ್ಲ್ಯಾಗ್ 0x7E ಅನ್ನು ಸೇರಿಸುವುದು. ಅದರ ನಂತರ, ಡೇಟಾವನ್ನು UART ಪೋರ್ಟ್ಗೆ ಕಳುಹಿಸಬಹುದು.
3. ಡಿ-ಫ್ರೇಮಿಂಗ್ ಪ್ರಕ್ರಿಯೆ
UART ನಿಂದ ಡೇಟಾವನ್ನು ಸ್ವೀಕರಿಸಿದಾಗ, ಅದನ್ನು ಡಿಕೋಡ್ ಮಾಡಲು ನಾವು ಹಿಮ್ಮುಖ ಹಂತಗಳನ್ನು ಮಾಡಬೇಕಾಗಿದೆ.
4. ಉಲ್ಲೇಖಗಳು
ಪೋಸ್ಟ್ ಸಮಯ: ಫೆಬ್ರವರಿ-08-2022