Google is committed to advancing racial equity for Black communities. See how.
Trang này được dịch bởi Cloud Translation API.
Switch to English

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

OpenThread là hệ điều hành và nền tảng bất khả tri, với Lớp trừu tượng nền tảng hẹp (PAL). PAL này định nghĩa:

Kiến trúc cổng

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

Các tệp API nên được đặt trong các thư mục sau:

Kiểu Danh mục
Triển khai PAL dành riêng cho nền tảng /openthread/examples/platforms/ platform-name
Tệp tiêu đề - API lưu trữ không bay hơi /openthread/examples/platforms/utils
Tất cả các tệp tiêu đề khác /openthread/include/openthread/platform
HAL BSP /openthread/third_party/ platform-name

báo thức

Khai báo API:

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

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

Có hai loại dịch vụ báo động, mili giâymicro giây . Millisecond là cần thiết cho một nền tảng phần cứng mới. Microsecond là tùy chọn.

UART

Khai báo API:

/openthread/include/openthread/platform/uart.h

API UART thực hiện giao tiếp cổng nối tiếp cơ bản thông qua giao diện UART.

Mặc dù tiện ích bổ sung OpenThread CLI và [NCP] / (https://github.com/openthread/openthread/tree/masterexamples/apps/ncp) phụ thuộc vào giao diện UART để tương tác với phía máy chủ, hỗ trợ UART API là tùy chọn . Tuy nhiên, ngay cả khi bạn không định sử dụng các tiện ích bổ sung này trên ví dụ nền tảng phần cứng mới của mình, chúng tôi thực sự khuyên bạn nên thêm hỗ trợ vì một số lý do:

  • CLI hữu ích để xác nhận rằng cổng hoạt động chính xác
  • Công cụ tự động hóa khai thác sử dụng giao diện UART để điều khiển OpenThread cho các mục đích kiểm tra và chứng nhận

Nếu nền tảng phần cứng đích hỗ trợ mô-đun USB CDC thay vì UART, hãy đảm bảo:

  • Cài đặt đúng trình điều khiển USB CDC ở phía máy chủ
  • Thay thế triển khai API UART bằng trình điều khiển USB CDC (cùng với BSP) ở 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 phía trên. Chip Radio phải hoàn toàn tuân thủ thông số kỹ thuật IEEE 802.15.4-2006 2.4GHz.

Do tính năng năng lượng thấp được 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) theo mặc định và bảng đối sánh địa chỉ nguồn cũng phải được triển khai trong tệp nguồn radio.h .

Tuy nhiên, nếu ví dụ nền tảng phần cứng mới của bạn bị giới hạn tài nguyên, thì bảng địa chỉ nguồn có thể được xác định là độ dài bằng không. Xem Khung Tự động Đang chờ để biết thêm thông tin.

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 pháp để đặt lại phần mềm trên chip và truy vấn lý do đặt lại lần cuối.

Sự hỗn loạn

Khai báo API:

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

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

  • AES CCM nonce
  • Jitter bị trì hoãn 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 bộ đếm thời gian nhỏ giọt
  • 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 trình tạo số ngẫu nhiên, để lộ API trong gói BSP của nó. Trong trường hợp nền tảng phần cứng mục tiêu không hỗ trợ TRNG, hãy xem xét tận dụng lấy mẫu mô-đun ADC để tạo số ngẫu nhiên có độ dài cố định. Lấy mẫu qua 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 sử dụng trong thư viện mbedTLS.

Không lưu trữ dễ bay hơi

Khai báo API:

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

hoặc là

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

Yêu cầu lưu trữ không bay hơi có thể được đáp ứng bằng cách triển khai một trong hai API được liệt kê ở trên. API Flash triển khai trình điều khiển lưu trữ flash, trong khi API cài đặt cung cấp các chức năng để triển khai hoạt động flash cơ bản cho lớp trên.

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

  • Kích thước lưu trữ không thay đổi có sẵn được sử dụng để lưu trữ dữ liệu ứng dụng (ví dụ: tập dữ liệu hoạt động đang 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ị luồng để gắn lại sau khi đặt lại)
  • Đọc, ghi, xóa và truy vấn các hoạt động trạng thái flash

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 của bạn để cho biết nền tảng sẽ sử dụng API nào. Nếu được đặt thành 1 , API Flash phải được triển khai. Nếu không, API cài đặt phải được triển khai.

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

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 có sẵn. API này là tùy chọn nếu bạn không có kế hoạch sử dụng ghi nhật ký của OpenThread trên ví dụ nền tảng phần cứng mới của mình.

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

Hệ thống cụ thể

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 các hoạt động khởi tạo và phá hủy cấu trúc cho nền tảng phần cứng đã chọn. API này không được gọi bởi chính 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 khởi tạo các mô-đun khác (ví dụ: UART, Radio, Random, Misc / Reset) trong tệp nguồn này.

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