Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.

Triển khai API lớp trừu tượng nền tảng

Xem nguồn trên GitHub

OpenThread là hệ điều hành và phần mềm độc lập với nền tảng, có Lớp trừu tượng nền tảng hẹp (PAL). PAL này xác định:

Kiến trúc chuyển
  • Giao diện chuông báo khi đồng hồ hẹn giờ chạy miễn phí có chuông báo
  • Giao diện xe buýt (YTT, MRSS) để giao tiếp thông báo CLI và Spinel
  • Giao diện vô tuyến cho giao tiếp IEEE 802.15.4-2006
  • Quy trình khởi chạy dành riêng cho GCC
  • Entropy để tạo số ngẫu nhiên thực sự
  • Dịch vụ cài đặt cho bộ nhớ cấu hình không biến động
  • Giao diện ghi nhật ký để gửi thông báo nhật ký trong OpenThread
  • Quy trình khởi chạy dành riêng cho hệ thống

Tất cả các API phải được triển khai dựa trên Gói hỗ trợ bản dựng trừu tượng phần cứng (HAL) cơ bản.

Tệp API phải được đặt trong các thư mục sau:

Loại Danh bạ
Triển khai PAL theo nền tảng cụ thể /openthread/examples/platforms/platform-name
Tệp tiêu đề — API bộ nhớ không biến động /openthread/examples/platforms/utils
Tất cả tệp tiêu đề khác /openthread/include/openthread/platform
HAL Waze /openthread/third_party/platform-name

Báo thức

Khai báo API:

/openthread/include/openthread/platform/alarm-milli.h

API Alarm API cung cấp các dịch vụ báo thức và thời gian cơ bản để triển khai bộ hẹn giờ lớp trên.

Có hai loại dịch vụ báo thức là mili giâymicrô giây. Bạn cần phải có mili giây cho nền tảng phần cứng mới. Micrô thứ hai là không bắt buộc.

UART

Khai báo API:

/openthread/examples/platforms/utils/uart.h

API YTT triển khai giao tiếp cổng nối tiếp cơ bản thông qua giao diện YTT.

Mặc dù các tiện ích bổ sung CLINCP Openthread tùy thuộc vào giao diện YTT để tương tác với phía máy chủ, nhưng hỗ trợ API YTT là không bắt buộc. Tuy nhiên, ngay cả khi bạn không có kế hoạch sử dụng các tiện ích bổ sung này trong ví dụ về nền tảng phần cứng mới của mình, thì bạn vẫn nên hỗ trợ vì một số lý do sau:

  • CLI rất hữu ích trong việc xác thực rằng cổng hoạt động chính xác
  • Harness Automation Tool sử dụng giao diện YTT để kiểm soát OpenThread cho mục đích thử nghiệm và chứng nhận

Nếu nền tảng phần cứng mục tiêu hỗ trợ mô-đun USB CDC thay vì YTT, hãy đảm bảo rằng:

  • Cài đặt trình điều khiển USB CDC chính xác ở phía máy chủ
  • Thay thế phương thức triển khai API YTT bằng trình điều khiển USB CDC (cùng với Waze) ở phía Openthread, sử dụng các nguyên mẫu chức năng tương tự

Đài

Khai báo API:

/openthread/include/openthread/platform/radio.h

API radio xác định tất cả các chức năng cần thiết được gọi bởi lớp MAC IEEE 802.15.4. Chip radio phải tuân thủ đầy đủ thông số kỹ thuật IEEE 8.251-4-2006 và tốc độ 2,4 GHz.

Do tính năng nâng cao của nguồn điện nâng cao, Openthread yêu cầu tất cả các nền tảng phải triển khai khung tự động đang chờ xử lý (truyền gián tiếp) và bảng so khớp địa chỉ nguồn cũng sẽ được triển khai trong tệp nguồn radio.h.

Tuy nhiên, nếu mẫu nền tảng phần cứng mới của bạn bị hạn chế về tài nguyên, thì bạn có thể xác định bảng địa chỉ nguồn là 0. Hãy xem phần Khung tự động đang chờ xử lý để biết thêm thông tin.

Tính năng khác/Đặt lại

Khai báo API:

/openthread/include/openthread/platform/misc.h

API Misc/Reset cung cấp một phương thức để đặt lại phần mềm trên chip và truy vấn lý do đặt lại lần gần đây nhất.

Entropy

Khai báo API:

/openthread/include/openthread/platform/entropy.h

API Entropy cung cấp trình tạo số ngẫu nhiên (TRNG) cho lớp phía trên, được dùng để duy trì tài sản bảo mật cho toàn bộ mạng Openthread. API này sẽ đảm bảo rằng một số ngẫu nhiên mới sẽ được tạo cho mỗi lệnh gọi hàm. Các tài sản bảo mật chịu ảnh hưởng của TRNG bao gồm:

  • Số chỉ định AES CCM của AES
  • Dao động bị trễ ngẫu nhiên
  • Địa chỉ mở rộng của thiết bị
  • Khoảng thời gian ngẫu nhiên ban đầu trong đồng hồ hẹn giờ nhỏ
  • Mã thông báo/mã thông báo CoAP

Lưu ý rằng nhiều nền tảng đã tích hợp một trình tạo số ngẫu nhiên, hiển thị API trong gói Waze của API đó. Trong trường hợp nền tảng phần cứng mục tiêu không hỗ trợ TRNG, hãy cân nhắc việc tận dụng việc lấy mẫu mô-đun ADC để tạo số ngẫu nhiên có độ dài cố định. Chọn mẫu nhiều lần lặp lại nếu cần thiết để đáp ứng các yêu cầu TRNG (uint32_t).

Khi macro MBEDTLS_ENTROPY_HARDWARE_ALT được đặt thành 1, API này cũng sẽ cung cấp một phương thức để tạo entropy phần cứng được dùng trong thư viện mbedTLS.

Bộ nhớ không biến động

Thông tin khai báo API:

/openthread/include/openthread/platform/flash.h

hoặc

/openthread/include/openthread/platform/settings.h

Bạn có thể đáp ứng yêu cầu về dung lượng lưu trữ không biến động bằng cách triển khai một trong hai API nêu trên. Còn API Flash triển khai trình điều khiển bộ nhớ flash, còn API Cài đặt cung cấp các hàm để triển khai hoạt động flash cơ bản lên lớp trên.

Các API này hiển thị ở lớp trên:

  • Dung lượng lưu trữ không biến động có sẵn dùng để lưu trữ dữ liệu ứng dụng (ví dụ: tập dữ liệu hoạt động đang chờ xử lý, thông số mạng hiện tại và thông tin đăng nhập của thiết bị trong chuỗi để chèn lại sau khi đặt lại)
  • Đọc, ghi, xóa và truy vấn các thao tác trạng thái flash

Hãy sử dụng OPENTHREAD_CONFIG_PLATFORM_FLASH_API_ENABLE trong tệp cấu hình cốt lõi của ví dụ nền tảng để cho biết nền tảng sẽ sử dụng API nào. Nếu được đặt thành 1, bạn phải triển khai API Flash. Nếu không, bạn phải triển khai API cài đặt.

Cờ này phải được đặt trong tệp /openthread/examples/platforms/platform-name/openthread-core-platform-name-config.h của bạn.

Ghi nhật ký

Khai báo API:

/openthread/include/openthread/platform/logging.h

API ghi nhật ký triển khai chức năng ghi nhật ký và gỡ lỗi của Openthread, với nhiều cấp độ đầu ra gỡ lỗi. API này là không bắt buộc nếu bạn không có kế hoạch sử dụng tính năng ghi nhật ký của OpenThread trên ví dụ mới về nền tảng phần cứng.

Cấp cao nhất và chi tiết nhất là OPENTHREAD_LOG_LEVEL_DEBG để in tất cả thông tin gói thô và dòng nhật ký thông qua cổng nối tiếp hoặc trên thiết bị đầu cuối. Hãy chọn cấp gỡ lỗi đáp ứng tốt nhất nhu cầu của bạn.

Dành riêng cho hệ thống

Khai báo API:

/openthread/examples/platforms/openthread-system.h

API dành riêng cho hệ thống chủ yếu cung cấp hoạt động khởi chạy và khởi chạy cho nền tảng phần cứng được chọn. API này không được gọi bởi thư viện Openthread, nhưng có thể hữu ích cho hệ thống/RTOS của bạn. Bạn cũng có thể triển khai các mô-đun khác (ví dụ: YTT, Radio, Ngẫu nhiên, Misc/Đặt lại) trong tệp nguồn này.

Việc triển khai API này phụ thuộc vào trường hợp sử dụng của bạn. Nếu muốn sử dụng các ứng dụng CLI và NCP đã tạo cho một nền tảng mẫu, thì bạn phải triển khai API này. Nếu không, bạn có thể triển khai bất kỳ API nào để tích hợp trình điều khiển nền tảng mẫu vào hệ thống/RTOS của bạn.